1、中南大学c语言课程实践报告中南大学C语言程序设计实践报告题 目 学生信息管理系统 学生姓名 张眼 指导教师 刘伟荣 学 院 信息科学与工程学院 专业班级 电气信息1113班 完成时间 2012年6月28日星期四 1设计任务及设计目标学生信息管理系统是基于系统主菜单的操作来实现学生数据的录入、 修改、查询和统计等系统的基本功能。达到对学生信息的存储、统计、 管理的目的。需要处理的数据如:班级、学号、姓名等。实现的功能 模块如:数据的录入、数据的修改、数据的插入、数据的查询和数据 的统计等。在实践过程中熟练掌握C语言的基本知识:数据类型(整 型、实型、字符型、指针、数组、结构等);运算类型(算术运
2、算、 逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判 断选择结构、循环结构);大程序的功能分解方法(即函数的使用) 等。进一步掌握函数嵌套调用、文件的读写、链表的应用等。2.总体设计将整个系统分成若干子模块,设计流程图如下:学生信息管理系统【1】输入学生 信息【2】浏览学生信息【3】查询学生信息【4】删除学生 信息【5】修改学生 信息【6】不及格学 生列表【7】学生平均 成绩【8】学 生课程 信息查 询【0】退出系统+ +n);|学生信息管理系统欢迎您+ +n);设计者:张眼n);指导老师:刘伟荣n);printf(重要提示:为保证您的操作得到保存,请按正常顺序退出系统!谢谢合作
3、doprin tf(nttt+n);prin tf(ttt|* 菜单 *|n);prin tf(ttt+n);prin tf(ttt*1-录入/插入学生信息*n)prin tf(ttt*2-浏览学生信息* n);prin tf(ttt*3-查询学生信息* n);prin tf(ttt*4-删除学生信息* n);prin tf(ttt*5-修改学生信息* n);prin tf(ttt*6-不及格学生列表*n);prin tf(ttt*7-成绩信息查询* n);prin tf(ttt*8-平均成绩*n);prin tf(ttt*0-退出系统*n);prin tf(ttt* n)printf(请输入
4、您的选择:);seanf(%d, &z);switch(z)case 0 :tc();break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :bj();break;case 7 :kc();break;case 8 :pj();break;default:printf(n 无效选项!);while(z!= 0);2输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的 大学物理,英语,微积和信号的成绩,可以通过函数 void lr
5、()实现此 功能。void lr()/*录入函数*/int y;if(n=0)p=stu;doprintf( -n ”);printf(请输入学生的学号:”); scan f(%ld,&p- nu m);printf(请输入学生的姓名:”);sca nf(%s,p-n ame);printf(请输入学生的年龄:);scan f(%d,&p-age);printf(请输入学生的性别:);scan f(%s,p-sex);printf(请输入学生的班级:);scan f(%d,&p-clas);printf(请输入大物考试成绩:);scan f(%d,&p-pt);printf(请输入大物平时成绩
6、:);scan f(%d,&p-ps);printf(请输入英语考试成绩:);scan f(%d,&p-et);printf(请输入英语平时成绩:);scan f(%d,&p-es);printf(请输入微积分考试成绩:);scan f(%d,&p-ct);printf(请输入微积分平时成绩:);scan f(%d,&p-cs);printf(请输入信号考试成绩:);scan f(%d,&p-xt);printf(请输入信号平时成绩:);scan f(%d,&p-xe);n+;p+;printf(n1.继续输入.n0.输入完毕.n);printf(请选择:);scan f(%d, &y);wh
7、ile(y=1);printf(提示:输入完毕你一共输入%d个n,n);3查询模块:该模块是通过输入的学生信息(学号或姓名)来查找学生的所有信息并且显示在屏幕上。通过函数 void cx()来实现。void cx()/*查询函数*/int c;int w,i,j=0;char name20;if(n !=0)do prin tf(n);printf(+ +n);printf(|按学号查询 请按1 |n);printf(|按姓名查询请按2 |n);printf(| 取消 请按 0 |n);printf(+ +n);printf(请输入选择:);scanf(%d, &c);switch(c)cas
8、e 0:break;case 1:printf(请输入学生的学号;);scanf(%ld, &w);prin tf(n);for(i=0;i n;i+)if(stui. num=w)printf(n学号t姓名t年龄t性别t班级n”);prin tf(%ldt%st%dt%st%dn,stui. num,stui. name,stui.age,stui.sex,stui. clas);j=1;if(j=0)printf(提示:没有该学生记录,请核对! ”);break;case 2:printf(请输入学生的姓名:);sca nf(%s, n ame);prin tf(n);for(i=0;i
9、n;i+)if(strcmp( name,stui. name)=0)printf(n学号t姓名t年龄t性别t班级n”);j=1;prin tf(%ldt%st%dt%st%dn,stui. num,stui. name,stui.age,stui.sex,stui.clas);if(j=0)printf(”提示:没有该学生记录,请核对! ”);break;default:printf(n提示:无效选项!);break;while(c!= 0);else printf(提示:无学生数据,请输入数据! ”);4删除模块:该模块通过输入要删除的学生学号, 通过学号查找并删除记录。如果没有学生信息输
10、出提示:无学生数据,请输入数据!通 过函数void sc()实现void sc()/*删除函数*/long int num;int i,j,e;if(n !=0)printf(学号t姓名t年龄t性别t班级n);printf( n);for(i=0;i n;i+)prin tf(%ldt%st%dt%st%dn,stui. num,stui. name,stui.age,stui.sex,stui.clas);printf(请输入您要删除的学生的学号: ”);scanf(%ld, &num);prin tf(n);for(i=0;i n;i+)if(num=stui. num)j=i;if(j!
11、=( n-1)for(e=j;e( n-1);e+)stue. num=stue+1. num;strcpy(stue. name,stue+1. name);strcpy(stue.sex,stue+1.sex);stue.age=stue+1.age;stue.clas=stue+1.clas;stue.pt=stue+1.pt;stue.ps=stue+1.ps;stue.et=stue+1.et;stue.es=stue+1.es;stue.ct=stue+1.ct;stue.cs=stue+1.cs;n-;else n-; printf(” 提示删除完毕! ”);else print
12、f(提示:无学生数据,请输入数据! ”);5修改信息模块:该模块通过输入要修改的学生学号查找学生信息, 并显示用户修改的内容信息,供用户选择,根据选项进行修改。通过 函数void xg()实现。void xg()/*修改函数*/long int num;int i,j,c;if(n !=0)printf(请输入您要修改的学生的学号: );scanf(%ld, &num);prin tf(n);for(i=0;i n;i+)if(stui. num=num)j=i;doprintf(请选择您要修改的学生的信息内容: n);printf(+ +n);prin tf(| 请按 1 |n);print
13、f(| 年龄 请按 2 |n);printf(| 性别 请按 3 |n);printf(| 学号 请按 4 |n);printf(| 班级 请按 5 |n);printf(|大物考试成绩请按6 |n);printf(|大物平时成绩请按7 |n);printf(|英语考试成绩请按8 |n);printf(|英语平时成绩请按9 |n);printf(|微积分考试成绩请按10 |n);printf(|微积分平时成绩 请按11 |n);printf(|信号考试成绩 请按12 |n);printf(|信号平时成绩 请按13 |n);printf(| 取消 请按 0 |n);printf(+ +n);pr
14、intf(请输入您的选择:);scanf(%d, &c);prin tf(n);switch(c)case 0:break;case 1:printf(请输入新姓名:); scan f(%s,stuj. name); break;case 2:printf(请输入新年龄:”);scan f(%d,& stuj.age); break;case 3:printf(请输入新性别:);scan f(%s,stuj.sex); break;case 4:printf(请输入新学号:”); scan f(%ld, &stuj. nu m); break;case 5:printf(请输入新班级:”);s
15、can f(%d,& stuj.clas); break;case 6:printf(请输入大物考试成绩: );scan f(%d, &stuj.pt);break;case 7:printf(请输入大物平时成绩:);scan f(%d, &stuj.ps);break;case 8:printf(请输入英语考试成绩: ”);scan f(%d, &stuj.et);break;case 9:printf(请输入英语平时成绩:);scan f(%d, &stuj.es);break;case 10:printf(”请输入微积分考试成绩:);scan f(%d,& stuj.ct);break;
16、case 11:printf(”请输入微积分平时成绩:);scan f(%d,& stuj.cs);case 12:printf(请输入信号考试成绩:”);sca nf(%d, &stuj.xt);case 13:printf(请输入信号考试成绩:”);sca nf(%d,& stuj.xe);break;default:printf(n 无效选项!); break;while(c!= 0);else printf(提示:无学生数据,请输入数据!);6不及格学生计算模块:该模块通过对已经输入的学生数据进行处理,当四门功课中有一门成绩小于 60,就输出此学生的信息及不及格科目的成绩。此功能通过函
17、数 void bj()实现。void bj()/*不及格学生列表函数 */int i,j;char a410=大学物理,大学英语,微积分,信号;float l4;if(n !=0) printf(n 学号t姓名t课程tt成绩n);for(i=0;i n;i+) l0=stui.pt*0.7+stui.ps*0.3;l1=stui.et*0.7+stui.es*0.3;l2=stui.ct*0.7+stui.cs*0.3;l3=stui.xt*0.7+stui.xe*0.3;for(j=0;j4;j+)if(lj1)for(i=0;i( n-1);i+)for(j=i+1;j n ;j+) av
18、ei=(stui.pt*0.7+stui.ps*0.3+stui.et*0.7+stui.es*0.3+stui.ct*0.7+stui.cs*0.3+stui.xt *0.7+stui.xe*0.3)/4;avej=(stuj.pt*0.7+stuj.ps*0.3+stuj.et*0.7+stuj.es*0.3+stuj.ct*0.7+stuj.cs*0.3+stui.xt *0.7+stui.xe*0.3)/4;if(aveiavej)m=avej;temp=stuj;avej=avei;stu|=stui;avei=m;stui=temp;printf(”学号t姓名t年龄t性别t班级t平
19、均成绩n);printf(” - n);for(i=0;i n;i+)prin tf(%ldt%st%dt%st%dt%3.1fn,stui. nu m,stui. name,stui.age,stui.sex,stui.clas,avei);else if(n=0)printf(”提示:无学生数据,请输入数据! ”);elseave0=(stu0.pt*0.7+stu0.ps*0.3+stu0.et*0.7+stu0.es*0.3+stu0.ct*0.7+stu0.cs*0.3+s tu0.xt*0.7+stu0.xe*0.3)/4;printf(”学号t姓名t年龄t性别t班级t平均成绩n)
20、;printf(” - n);prin tf(%ldt%st%dt%st%dt%3.1fn,stu0. nu m,stu0. name,stu0.age,stu0.sex,stu0.clas,av e0);8学生课程信息查询模块:该模块通过用户输入的选项来查询该学生 的各个科目的信息,信息包括课程名称,课程编号,学分,平时成绩, 考试成绩,综合成绩,并最终以表格的形式输出。该功能通过函数 void kc()来实现。void kc()/*课程查询函数*/int c;int w,i,j=0;char name20;if(n !=0)do prin tf(n);printf(+ +n);printf
21、(|按学号查询 请按1 |n);printf(|按姓名查询请按2 |n);printf(| 取消 请按 0 |n);printf(+ +n);printf(请输入您的选择:);scanf(%d, &c);switch(c)case O:break;case 1:printf(请输入学生的学号;);scanf(%ld, &w);prin tf(n);for(i=0;i n;i+)if(stui. num=w)printf(n课程名称t课程编号t学分t平时成绩t考试成绩t综合成绩n);prin tf( 大 学 物t0001tt4.0t%dtt%dtt%3.1fn,stui.ps,stui.pt,0
22、.7*stui.pt+0.3*stui.ps);printf(” 大学英语 t0002tt4.0t%dtt%dtt%3.1fn,stui.es,stui.et,0.7*stui.et+0.3*stui.es);printf(” 微积分 tt0003tt3.0t%dtt%dtt%3.1fn,stui.cs,stui.ct,0.7*stui.ct+0.3*stui.cs);printf(” 信号 tt0004tt3.0t%dtt%dtt%3.1fn,stui.xt,stui.xe,0.7*stui.xt+0.3*stui.xe);j=1;if(j=0)printf(提示:没有该学生记录,请核对!
23、”);break;case 2:printf(请输入学生的姓名:);sca nf(%s, n ame);prin tf(n);for(i=0;i n;i+)if(strcmp( name,stui. name)=0)printf(n课程名称t课程编号t学分t平时成绩t考试成绩t综合成绩n);printf(大学物理 t0001t4.0t%dt%dt%3.1fn,stui.ps,stui.pt,0.7*stui.pt+0.3*stui.ps);printf(” 大学英语 t0002t4.0t%dt%dt%3.1fn,stui.es,stui.et,0.7*stui.et+0.3*stui.es);
24、printf(” 微积分 t0003t3.0t%dt%dt%3.1fn,stui.cs,stui.ct,0.7*stui.ct+0.3*stui.cs);j=1;if(j=0)printf(提示:没有该学生记录,请核对!); break;default:printf(n提示:无效选项!);break;while(c!= 0);else printf(提示:无学生数据,请输入数据!);9退出系统模块:当用户选择退出程序选项【0】时,执行函数void tc() 输出“谢谢登陆!再见”而后退出运行。4设计总结本学期我们的c语言课程实践课题一一学生信息管理系统是在老师 的指导下,同学间相互的帮助下,设
25、计出来的。通过C语言的课程设 计,我们对c语言中的重要的内容有了一个很好的认识与了解, 同时我们也对c语言的应用有了了解。C语言的实质就是以一定的语法规范为准, 通过对数据量的复杂结构 运算,完成一定功能的程序,是一门计算机的基础语言,我们通过这 两周的课程实践对其特点和算法有了跟好的了解。通过这次课程设计,我懂得一个程序的设计就是一个实际问题的解 决的过程,从解决问题的角度,我们可以这样来看:首先了解这个问 题的基本要求,即输入,输出,完成输入到输出的要求是什么,讲问 题一一分开;其次,我们要捋清思路,逐一解决问题,着重考虑如何 从输入导出输出,在这个过程中,可以确定所需的变量,数据,函数, 然后确定处理过程一一算法。总的来说,这次实践让我受益匪浅,让我对 c语言有了进一步的 认识,c语言功能高,表达能力强,使用灵活方便,目标程序效率高, 是我们日后工作的良好工具。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1