《C语言进阶及试题分析综合课程设计.docx》由会员分享,可在线阅读,更多相关《C语言进阶及试题分析综合课程设计.docx(9页珍藏版)》请在第一文库网上搜索。
1、XXXX大学C语言进阶与试题剖析课程综合设计课程报告课题名称:微型学生成绩管理系统二级学院:XXX学院学生姓名:XXX学号:XXX主讲教师:XX2011年6月1日一、提出问题设某班有n位同学,每位同学的数据包括以下内容:学号(字符串)、姓名(字符串)、数学成绩(字符串)、程序设计成绩(字符串)。设计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。注:采用模块化程序设计思想对系统进行设计;学生的数据要求用文件保存;学生的学号作为关键字段,不能相同,姓名可以相同。要求使用结构体,链或数组等实现。二、分析问题最初我们要对文件名进行规定,主要包括数据库文件、数学成绩
2、排序文件、程序设计成绩排序文件。其次在程序偏斜忠要应用结构体、采取全局变量用来记录学生的学号、姓名、数学成绩、程序设计成绩以及总分等。然后我们要明确课题中的要求:(-)程序运行时,首先显示主菜单如下1新建数据2.添加数据3.删除数据4.排序5.查询6、退出(二)在主菜单中选择序号4,弹出子菜单选择排序方式1.数学成绩排序2.程序设计成绩排序3.总分排序4.返回主菜单()在主菜单中选择序号5,弹出子菜单选择查询方式1.学号查询2.姓名查询3.数学成绩查询4.程序设计成绩查询5.总分查询6.返回主菜单三、解决问题(一)数据结构学号:charxh()姓名:charxm()数学成绩:intsxcj程序
3、设计成绩intcxcj()总分intzf全局变量intt(二)算法描述1在主函数中,我们只需做6个部分(1新建学生数据、2添加学生数据、3删除学生信息、4对分数进行排序包括数学成绩,程序设计成绩,总成绩、5对某一个学生的信息进行查询6退出这个学生查询系统)建立人机对话框,根据用户所选的模块进行相应的操纵,调用相应的子函数,完成想用的功能。2 .新建学生信息函数。学生信息包括学生学号、学生姓名、学生数学成绩、学生程序设计成绩、总成绩以及显示函数3 .删除学生信息。由于学号是关键字,我们应首先根据学号比较出是否有这个学生信息的存在,如果不存在就不处理,如果存在,就删除信息4 .排序函数这里有三个需
4、要排序的数据,分别任数学成绩,程序设计成绩以及总成绩。只是我们需要设计一个界面。根据用户的选择选用不同的模块进行排序。5 .查找函数。主要是根据不同的分数查找出不同的人数,如对于数学成绩查询,输入某一分数,然后逐一遍历原有的数据,查找出相同的就输出。其他的两个也一样。(三)源程序ftinc1udeftinc1udestructstudentcharxh12;/*学号*/charxm12;/*姓名*/intsxcj;intcxcj;intzf;/*数学成绩*/*程序设计成绩*/*总分*/全局变量stu60;intt;voidmain()(intn;voidcreat_data();voidadd
5、();voidde1et();voidsort_stu();voidsearch();doprintf(/,ttt主菜单r);printf(t);printf(z,ttt1.新建数据r);printf(z,ttt2.添加数据n);printf(/,ttt3.删除数据n);printfttt4.排序n);printf(z,ttt5.查询n);printf(z,ttt6.退出n);printf(tnPrintf(请输入序号选择相应操作:);scanf(%c,&n);switch(n)case1:creat_data();break;case2:add();break;case3:de1et();b
6、reak;case4:sort_stu();break;case 5: search();break;case 6: Printf(欢迎使用n);break;defau1t:Prirrtf(输入错误);whi1e(n!=6);voidsum_stu()分数总和(inti;for(i=1;i=t;i+)stui.zf=stui.sxcj+stui.cxcj;voidprint()(inti;Prir1tf(tt学号姓名数学成绩程序设计成绩总分n);printf(z,ttnzz);for(i=1;i=t;i+)printf(/,tt%s%s%d%d%dnzstui.xh,stui.xm,stui.
7、sxcj,stui.cxcj,stui.zf);printf(zzttnnz,)9voidcreat_data()新建数据(inti;printf(,Thenumberofstudentsyouwanttocreat:);scanf(%d,&t);for(i=1;i=t;i+)(printf(,zn请输入学生学号:“);scanf(%s”,stui.xh);printf(n);Printf(请输入学生姓名:);scanfstui.xm);printf(n);Printf(请输入学生数学成绩:);scanf(%c,&stui.sxcj);printf(n);Printf(请输入学生程序设计成绩:
8、);scanf(zz%dz,&stui.cxcj);Printf(n);)sum_stu();printO;voidadd()添加数据(charch;do(Printf(n请输入学生学号:);scanf(%s”,stut+1.xh);printf(n);Printf(请输入学生姓名:);scanf(%s,stut+1.xm);printf(n);Printf(请输入学生数学成绩:);scanf(%d”,&stut+1.sxcj);printf(n);Printf(请输入学生程序设计成绩:);scanf(%d”,&stut+1.cxcj);printf(n);t+;Printf(是否继续添加y/
9、n:);getchar();ch=getchar();printf(n);whi1e(ch=,y,);sum_stu();print();voidde1et()删除(charxh110;inti,j,count=0;Printf(输入想要删除的学生的学号);scanf(%s”,xh1);for(i=1;i=t;i+)if(strcmp(xh1,stui.xh)=0)(for(j=i;jt+1;j+)stuj=stuj+1;count+;if(count=0)Printf(没有该生信息!);e1seprint();)voidsort_stu()排序(intk,j,i;structstudentt
10、emp;printf(zttn);Printf(ttt1.数学成绩排序n);printfttt2.程序设计成绩排序n);Printf(ttt3.总分排序n);printf(/,ttt4.返回主菜单n);printf(zttn);Printf(请按序号选择相应操作:);scanf(%d,&k);if(k=1)(for(i=1;it;i+)for(j=i1;j=t;j+)if(stui.cxcjstuj.cxcj)temp=stui;stui=stuj;stuj=temp;print();)e1seif(k=2)(for(i=1;it;i+)for(j=i+1;j=t;j+)if(stui.cxc
11、jstuj.cxcj)temp=stui;stui=stuj;stuj=temp;print();)e1seif(k=3)(for(i=1;it;i+)for(j=i1;j=t;j+)if(stui.zfstuj.zf)temp=stui;stui=stuj;stuj=temp;print();e1semain();voidsearch_sxcj()intm,i,count=0;Printf(输入数学成绩:);scanf(%c,&m);for(i=1;i=t;i+)if(m=stui.sxcj)printf(/,%s%s%d%d%dnv,stui.xh,stui.xm,stui.sxcj,st
12、ui.cxcj,stui.zf);count+;Printf(人数:%dn,z,count);if(count=0)Printf(没有大于该分数的同学!n);)voidsearch_cxcj()(intm,i,count=0;Printf(输入程序设计成绩:);scanf(%d,&m);for(i=1;i=t;i+)if(m=stui.cxcj)printf(/,%s%s%d%d%dnv,stui.xh,stui.xm,stui.sxcj,stui.cxcj,stui.zf);count+;Printf(人数:%dn,z,count);if(count=0)Printf(没有大于该分数的同学!
13、n);)voidsearch_zf()(intm,i,count=0;Printf(输入分数:);scanf&m);for(i=1;i=t;i+)if(m=stui.zf)printf(/,%s%s%d%d%dnv,stui.xh,stui.xm,stui.sxcj,stui.cxcj,stui.zf);count+;Printf(人数:%dn,z,count);if(count=0)Printf(没有大于该分数的同学!n);)voidsearch()查询(intk;printf(z,ttn,z);printfttt1.数学成绩查询n);printfttt2.程序设计成绩查询n);Printf(ttt3.总分查询n);printf(ttt4.返回主菜单n);printf(zzttn);Printf(请按序号选择相应操作:);scanf(%d,&k);if(k!=4)(switch(k)(case1:search_sxcj();break;case2:search_cxcj();break;case3:search_zf();break;case4:main();