#include #include #include void menu();//定义系统菜单界面函数 void teacher_login();//老师登陆界面函数 void student_login();//学生登陆界面函数 void login();//登陆学生选课系统总界面 void out();//退出系统 void search();//课程查询 void look();//课程浏览 void select();//课程挑选 void put_course();//由老师首先输入课程的信息 struct course { int course_num;//课程编号 char course_name[10];//课程名字 char course_sore[10];//网上授课或教室授课 int course_score;//课程学分 int course_classtime;//授课学时 int course_programtime;//实验学时 int course_count;//课程已报人数 }; void out() { exit(0); }//退出系统函数 void menu()//学生选课系统总界面 { printf("********************************\n"); printf("欢迎来到湖南工业大学学生选课系统\n"); printf("********************************\n"); printf("按任意键进行\n"); getchar(); } void login()//登陆界面 { void teacher_login(); void student_login(); int q; do { printf("学生登陆请按:1\n"); printf("老师登陆请按:2\n"); printf("退出系统请按:3\n"); scanf("%d",&q); if(q!=1&&q!=2&&q!=3) { printf("输入错误\n"); printf("请按任意键进行\n"); getchar(); getchar(); } if(q==3) out();//退出系统 switch(q) { case 1:student_login();break; case 2:teacher_login();break; } }while(q!=1&&q!=2&&q!=3); } void teacher_login()//老师 { void search(); void look(); int e; do { printf("课程查询请按:1\n"); printf("课程浏览请按:2\n"); printf("课程信息输入:3\n"); printf("退出请按:4\n"); scanf("%d",&e); if(e!=1&&e!=2&&e!=3&&e!=4) { printf("输入错误\n"); printf("请按任意进行\n"); getchar(); } else if(e==4) out (); else if(e==1||e==2) { switch(e) { case 1:search();break; case 2:look();break; } } else if(e==3) put_course(); }while(e!=1&&e!=2&&e!=3&&e!=4); } void student_login()//学生 { void out(); void search(); void look(); void select(); int w; do { printf("课程挑选请按:1\n"); printf("课程浏览请按:2\n"); printf("课程查询请按:3\n"); printf("退出请按:4\n"); scanf("%d",&w); if(w!=1&&w!=2&&w!=3&&w!=4) { printf("输入数据错误\n"); printf("请按任意键进行\n"); getchar(); getchar(); } if(w==4) exit(0); switch(w) { case 1:select();break; case 2:look();break; case 3:search();break; case 4:out();break; } }while(w!=1&&w!=2&&w!=3&&w!=4); } void select()//学生选课函数 { FILE *fp1;//储存课程的文件 int i=0,temp=0,n,j,r,t,y; struct course courses[5]; if((fp1=fopen("course.txt","rb"))==NULL)//把存储课程的文件首地址赋给文件指针fp1 { printf("文件打开错误\n"); printf("按任意键返回\n"); getchar(); getchar(); student_login(); } do { fread(&courses[i],sizeof(struct course),1,fp1);//把文件的数据读到结构体中储存起来 i+=1; }while(!feof(fp1)); fclose(fp1); printf("输入你选择的课程编号:限1,2,3,4,5\n");//请输入1,2,3,4,5; scanf("%d",&n); for(j=0;j<5;j++) if(n==courses[j].course_num) { temp+=1; t=j; break; } if(temp==0) { printf("不存在输入课程号对应的课程\n"); printf("如果继续进行请按1 返回请按2 \n"); scanf("%d",&r); switch(r) { case 1:select();break; case 2:student_login();break; default:printf("输入错误,结束程序\n");exit(0); } } else { courses[t].course_count+=1;//进行学生选课的人数统计 printf("选课成功,请注意通知,按时参加课程!\n"); getchar(); getchar(); } fp1=fopen("course.txt","wb"); for(y=0;y<5;y++) { fwrite(&courses[y],sizeof(struct course),1,fp1);//把学生选课情况录到文件中 } fclose(fp1); } void look()//课程浏览函数 ,输出各个课程的信息 { struct course courses[5]; FILE *fp2; int i=0,j; if((fp2=fopen("course.txt","rb"))==NULL) { printf("文件打开错误\n"); printf("按任意键进行\n"); getchar(); exit(0); } do { fread(&courses[i],sizeof(struct course),1,fp2); i+=1; }while(!feof(fp2)); for(j=0;j<5;j++) { printf("课程编号:%d\n",courses[j].course_num); printf("课程名字:%s\n",courses[j].course_name); printf("课程类型:%s\n",courses[j].course_sore); printf("课程学分:%d\n",courses[j].course_score); printf("授课学时:%d\n",courses[j].course_classtime); printf("实验学时:%d\n",courses[j].course_programtime); printf("课程已报人数:%d\n\n",courses[j].course_count); } fclose(fp2); getchar(); getchar(); } void search()//课程查询函数 { FILE *fp3; int num; struct course courses[5]; int i=0,j; printf("请输入需要查询的课程的编号:限1,2,3,4,5\n");//请输入1,2,3,4,5; scanf("%d",&num); if(num!=1&&num!=2&&num!=3&&num!=4&&num!=5) { printf("输入错误!按任意键返回\n"); getchar(); getchar(); search(); } if((fp3=fopen("course.txt","rb"))==NULL) { printf("文件打开错误\n"); printf("按任意键进行\n"); getchar(); exit(0); } do { fread(&courses[i],sizeof(struct course),1,fp3); i+=1; }while(!feof(fp3)); fclose(fp3); for(j=0;j<5;j++) if(courses[j].course_num==num) { printf("课程编号:%d\n",courses[j].course_num); printf("课程名字:%s\n",courses[j].course_name); printf("课程类型:%s\n",courses[j].course_sore); printf("课程学分:%d\n",courses[j].course_score); printf("授课学时:%d\n",courses[j].course_classtime); printf("实验学时:%d\n",courses[j].course_programtime); printf("课程已报人数:%d\n",courses[j].course_count); break; } getchar(); getchar(); } void put_course() { FILE *fp; struct course courses[5]; printf("老师向数据库文件输入五组课程数据。例如: \n"); printf("1 体适能 教室授课 5 30 3 0\n"); printf("2 英语 网上授课 5 30 5 0\n"); printf("3 湖南青马 网上授课 5 30 5 0\n"); printf("4 心理学 网上授课 5 30 5 0\n"); printf("5 心理健康 教室授课 5 30 5 0\n"); printf("有五次输入,注意每个成员间用空格隔开,刚输入时把已报人数设为0,输入一个结构体数组按回车键\n"); printf("数据依次代表:编号,名字,方式,学分,授课学时,实验学时,已报人数\n"); printf("老师测试时为节省时间可以把上面5组数据样例复制作为输入,在进行其他测试\n"); int j; for(j=0;j<5;j++) { scanf("%d%s%s%d%d%d%d",&courses[j].course_num,courses[j].course_name,courses[j].course_sore,&courses[j].course_score,&courses[j].course_classtime,&courses[j].course_programtime,&courses[j].course_count); } int i; if((fp=fopen("course.txt","wb"))==NULL) { printf("文件打开错误\n"); printf("按任意键进行\n"); getchar(); exit(0); } for(i=0;i<5;i++) { fwrite(&courses[i],sizeof(struct course),1,fp); } fclose(fp); printf("课程信息输入成功\n"); getchar(); getchar(); } int main()//主函数 { menu(); printf("老师首次登陆时,点击老师选项,应输入课程信息,学生禁止点击\n"); login(); return 0; }