《C语言进阶及试题分析综合课程设计.docx》由会员分享,可在线阅读,更多相关《C语言进阶及试题分析综合课程设计.docx(11页珍藏版)》请在第一文库网上搜索。
1、XXXX大学c语言进阶与试题剖析课程综合设计课程报告课题名称:微型学生成绩管理系统二级学院:XXX学院学生姓名:XXX学 号:wc主讲教师:XX2011年6月1日一提出问题设某班有n位同学,每位同学的数据包括以下内容:学号(字符串)、姓名(字符串)、数学成绩(字符串)、程序设计成绩(字符串)。设计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。注:采用模块化程序设计思想对系统进行设计;学生的数据要求用文件保存;学生的学号作为关键字段,不能相同,姓名可以相同。要求使用结构体,链或数组等实现。二、分析问题最初我们要对文件名进行规定,主要包括数据库文件、数学成绩排
2、序文件、程序设计成绩排序文件。其次在程序偏斜忠要应用结构体、采取全局变量用来记录学生的学号、姓名、数学成绩、程序设计成绩以及总分等。然后我们要明确课题中的要求:(一)程序运行时,首先显示主菜单如下1.新建数据2.添加数据3.删除数据4.排序5.查询 6、退出(二)在主菜单中选择序号4,弹出子菜单选择排序方式1.数学成绩排序2.程序设计成绩排序3.总分排序4.返回主菜单(三)在主菜单中选择序号5,弹出子菜单选择查询方式1.学号查询2.姓名查询3.数学成绩查询4.程序设计成绩查询5.总分查询6.返回主菜单三、解决问题(一)数据结构学号:char xh () 姓名:char xm() 数学成绩:in
3、t sxcj程序设计成绩int cxc j ()总分int zf全局变量int t(二)算法描述1 .在主函数中,我们只需做6个部分(1新建学生数据、2添加学生数据、3删除学生信息、4对分数进行排序包括数学成绩,程序设计成绩,总成绩、5对某一个学生的信息进行查询6退出这个学生查询系统)建立人机对话框,根据用户所选的模块进行相应的操纵,调用相应的子函数,完成想用的功能。2 .新建学生信息函数。学生信息包括学生学号、学生姓名、学生数学成绩、学生程序设计成绩、总成绩以及显示函数3 .删除学生信息。由于学号是关键字,我们应首先根据学号比较出是否有这个学生信息的存在,如果不存在就不处理,如果存在,就删除
4、信息4 .排序函数这里有三个需要排序的数据,分别任数学成绩,程序设计成绩以及总成绩。只是我们需要设计一个界面。根据用户的选择选用不同的模块进行排序。5 .查找函数。主要是根据不同的分数查找出不同的人数,如对于数学成绩查询,输入某一分数,然后逐一遍历原有的数据,查找出相同的就输出。其他的两个也一样。(三)源程序ttincludettincludestruct student(char xh12;char xm12;int sxcj;int cxcj;int zf;stu60;int t;void main()*学号*姓名*数学成绩*/*程序设计成绩*/*总分*/全局变量int n;void cr
5、eat data ();void add ();void delet ();void sort_stu();void search ();doprintf Cttt 主菜单n);/ “printf( tn);printf Ctttl.新建数据r);printf Cttt2.添加数据n);printfttt3.删除数据n);printf (,ttt4.排序n);printf (,ttt5.查询n);printf (z,ttt6.退出r); / “ “printf( tn);printf(请输入序号选择相应操作:);scanf (d,&n);switch(n)case 1:creat data (
6、);break;case 2: add () ; break;case 3:delet();break;case 4:sort_stu();break;case 5:search ();break;case 6:printf (欢迎使用 n) ; break;default: printf (输入错误);)while(n!=6);)void sum stu() /分数总和( int i;for (i=l;i=t;i+)stui.zf=stui. sxcj+stui. cxcj;)void print ()(int i;printf (tt学号姓名 数学成绩程序设计成绩总分n);printf (
7、z,ttnz,);for (i=l;i=t;i+)printf (,tt%s %s %d%d%dn, stui. xh,stui. xm, stui. sxcj, stui. cxcj, stui. zf);printf (z,ttnnz,)void creat data() 新建数据( -int i;printf (z,The number of students you want to creat: );scanf(d,&t);for(i=l;i=t;i+)printf (n请输入学生学号:);scanf (,/%s, stui. xh) ; printf (n);printf (请输入学
8、生姓名:);scanf(s,stui. xm) ; printf(n);printf (请输入学生数学成绩:);scanf (z,%d, festui. sxcj) ; printf (n);printf (请输入学生程序设计成绩:);scanf (, &stui. cxcj) ; printf (n);)sum stu();print ();)void add () 添加数据(char ch;do(printf (n请输入学生学号:);scanf(%s”, stutl. xh); printf (n);printf (请输入学生姓名:);scanf (,%sz stut+l. xm) ; p
9、rintf (n);printf (请输入学生数学成绩:);scanf (z,%dzz, festutl. sxc j) ; printf (n);printf (请输入学生程序设计成绩:);scanf (,%d, &stut+l. cxcj) ; printf (n);t+;printf (是否继续添加y/n:);getchar ();ch=getchar ();printf (n);while(ch=, y,);sum stu ();print ();void delet() 删除char xhl10;int i,j,count=0;printf (输入想要删除的学生的学号);scanf
10、(z/%s, xhl);for (i=l;i=t;i+)if (strcmp(xhl, stui. xh)=0)(for(j=i;jt+l;j+)stuj=stuj+l;count+;if (count=0) printf (没有该生信息! );else print ();)void sort_stu () 排序( int k, j, i;struct student temp;printf (z,ttnz,);printftttl.数学成绩排序n);printfttt2.程序设计成绩排序n);printf (ttt3.总分排序n);printf (z,ttt4.返回主菜单n);printf
11、(z,ttnz,);printf(请按序号选择相应操作:);scanf (%d,&k);if (k=l)(for (i=l;it;i+)for(j=i+l;j=t;j+)if (stui. cxcjstuj. cxcj)temp=stui;stui=stuj;stuj=temp;print ();)else if (k=2)for(i=l;it;i+)for(j=i+l;j=t;j+)if (stui. cxcjstuj. cxcj)temp=stui;stui=stuj;stuj=temp;print ();)else if(k=3)(for(i=l;it;i+)for(j=i+l;j=t;
12、j+)if (stui. zfstuj. zf)temp=stui;stui=stuj;stuj=temp;print ();)else main();void search sxc j ()int m, i, count=0;printf(输入数学成绩:);scanf (d,&m);for(i=l;i=t;i+)if (m=stui. sxcj)printf (zz%s %s %d %d %dn,z, stui. xh, stui. x, stui.sxcj, stui. cxcj, stui. zf);count+;printf (人数:%dnz, count);if(count=0) p
13、rintf (没有大于该分数的同学! n);)void search_cxcj()( int m, i, count=0;printf(输入程序设计成绩:);scanf(d,&m);for(i=l;i=t;i+)if (m=stui. cxcj)printf (,z%s %s %d %d %d, stui. xh, stui. xm, stui sxcj, stui. cxcj, stui. zf);count+;printf (人数:%dz, count);if (count=0) printf (没有大于该分数的同学! n);)void search_zf()1 -int m, i, count=0;printf(输入分数:);scanf &m);for(i=l;i=t;i+)if(m=stui. zf)printf (z,%s %s %d %d %dnzz, stui. xh, stui. xm, stui.sxcj, stui. cxcj, stui. zf) ;count+;