1、stdlib.h#define M 20#define N 100 int x; /x为供选课程数 /*主主菜单函数开始*/void menu()int n,w;void enter_linformation();void browse_linformation();void enter_sinformation();void search_num();void search_score();void l_choice_num();doputs(tt*MENU*nn);tttt 1.课程信息录入tttt 2.学生选课信息录入tttt 3.课程信息浏览tttt 4.按课程号查询tttt 5.按学
2、分查询tttt 6.某门课程学生选修情况tttt 7.退出nntt*nprintf(Choice your number(1-7): bbscanf(%d,&n);if(n7) w=1; getchar();else w=0;while(w=1);switch(n)case 1:enter_linformation();break;/课程信息录入case 2:enter_sinformation();/学生选课信息录入case 3:browse_linformation();/课程信息浏览case 4:search_num();/按课程号查询case 5:search_score();/按学分
3、查询case 6:l_choice_num();/某门课程学生选修情况case 7:exit(0);/退出void main()menu(); /*主函数结束*/struct lesson int num; /课程编号 char name20; /课程名称 char kind10; /课程性质 int stime; /总学时 int ttime; /授课学时 int etime; /实验或上机学时 int score; /学分 int term; /开课学期 int choice_num; /选修该课的学生人数lesM; /lesM中每个数组元素对应一条课程信息struct student i
4、nt number; /学号 int num20;stuN; /stun中每个数组元素对应一条学生选课信息void printf_face()/公共函数1:显示数据结构项目函数 printf(ntnumber name kind stime etime ttime score termnvoid printf_one(int i) /公共函数2:显示一个课程信息记录printf(nt%d %s %s %d %d %d %d %dn ,lesi.num,lesi.name,lesi.kind,lesi.stime, lesi.ttime,lesi.etime,lesi.score,lesi.te
5、rm); /课程信息录入模块void l_input(int i) /输入一个记录到函数 scanf(lesi.num);%slesi.name);lesi.kind);lesi.stime);lesi.ttime);lesi.etime);lesi.score);lesi.term);l_save(int n) /保存课程信息到文件函数 FILE *fp; int i; if(fp=fopen(lesrecord.txt,wb)=NULL) printf(n Cannot open filen return NULL; for(i=0;in;i+) fprintf(fp,%d %s %s %
6、d %d %d %d %dn fclose(fp);void enter_linformation() /课程信息录入函数 int i,m,k,w1;总共多少门课(0-%d)?,M-1);m); printf_face();m;n 请输入第%d条课程信息n,i+1); l_input(i);/调用输入函数 if(i!=0)l_save(m);/调用保存函数请选择下一步操作:返回继续录入课程信息 回到主菜单 退出程序 bbk); if(k3) w1=1; else w1=0; while(w1=1); switch(k) case 1: case 2: case 3:/课程信息浏览模块void
7、browse_linformation()/课程信息浏览函数 int k,w1; int load_lesson(); void printf_n(int n); x=load_lesson();/从文件读入课程信息 printf_n(x);/显示课程信息2)/int load_lesson() /加载课程信息记录并可以计算记录个数FILE*fp;int i;if(fp=fopen(r printf(ncannot open filenreturn 0;for(i=0;!feof(fp);fscanf(fp,%d %s %s %d %d %d %d %d lesi.num,&lesi.name
8、,&lesi.kind,&lesi.stime, &lesi.ttime,&lesi.etime,&lesi.score,&fclose(fp);return (i);void printf_n(int x)/显示所有课程信息记录int j;for(j=0;j.getchar();nnprintf_one(j);getchar();/选课信息录入模块void enter_sinformation() /学生选课信息录入函数 void s_input(int i); int i,n,k,w1;n 总共有多少学生(0-%d)?:,N-1); printf(n 请输入第%d个学生学号:n s_inp
9、ut(i); 返回继续录入选课信息 void s_input(int i) /输入一个记录到函数 int j,k,m,n,w1,total=0;stui.number);n你想选多少门课 bb现在输入课程编号,依次用空格隔开! for(j=0; scanf(stui.numj); for(k=0;kk+) if(lesk.num=stui.numj) total+=lesk.score; lesk.choice_num+; if(total60)警告:你所选课程总学分不到60!返回重新录入选课信息 if(n switch(n)请重新输入你的学号: s_input(i); void dele()
10、/删除模块 int i,j,num; char a8,b; system(cls请输入删除的姓名: gets(a);num; if(strcmp(stui.name,a)=0)break; for(j=i; stui=stui+1; num-;是否继续删除(y/n)? b=getchar(); if(b=y) dele(); else menu();/按课程号查询模块/按课程号查询函数 void search_num() int i,k,flag=0,w1; struct lesson s;nn输入你要查询的课程编号:s.num); load_lesson(); if(s.num=lesi.n
11、um) flag=1; printf_one(i); if(flag=1)Found! else Not found!返回继续查找课程信息 /按学分查询模块/按学分查询函数void search_score() int mark;nn输入你要查询的课程学分:mark); if(mark=lesi.score)/某门课程学生选修情况查询模块void l_choice_num()int i,k,flag=0,w1;选修这门课的总人数为:%dn,lesi.choice_num);实验总结:1、实验中应多注意指针、数组、动态链表以及结构体类型的搭配和使用。2、实验中各模块看似简单,但应注意其之间的搭配灵活的使用。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1