已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与软件学院课 程 设 计 报 告课程名称 C语言课程设计 设计题目 学生成绩管理系统 专 业 网络工程 班 级 网络工程 学 号 姓 名 指导教师 200 8年6 月10日课程设计报告格式“学生成绩管理系统”课程设计一系统软件环境: C与C+程序设计学习与实验系统 2008.9二课程设计目的: 加深对C程序设计(第二版)课程所学知识的理解,进一步巩固C语言语法规则。三内容与要求: 在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增 自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间 函数、绘图函数,以及文件的读写操作等。学会编制结构清晰、风格良好、数据结构适当的语言程序,从而具备解决综合性实际问题的能力。四程序主要功能:1、学生数据信息的文件读写和数组数据的输入输出功能。2、根据需要对学生的成绩进行统计汇总。3、能够根据给定条件,对学生数据进行查询。4、以菜单形式进行子功能的选择。五系统功能设计:在mian函数中,利用printf函数、for语句、switch函数、exit函数来公共实现以菜单形式进行子功能的选择。input_data()、output_data( )、data_write( )、data_read( )函数所采用的方法均用文件的读写操作来实现。Summary_results1()、Summary_results2()、Summary_results_and_Query_results()、Query_results1()、Query_results3()函数所采用的方法用switch函数、for语句、选择法、if语句等实现其功能。六数据结构及其变量的设计:将十个学生的成绩信息当作一个结点,这个结点的类型定义为结构体;同时定义俩个结构体以此实现文件的输入与输出。所以定义的结构体如下:struct student int num; char name10; char sex; int age; float score5;struct student std110;struct student std210; 又为了能实现数据在整个程序中的运用,故同时定义全局变量:float sum110,sum210,aver110,aver210;在各子函数中,根据需要定义整型数i与字符型ch.七函数实现功能说明:从上到下函数实现功能说明:1、input_data()函数实现实现将10个学生的数据信息读入到数组std110。2、output_data( )函数实现将10个学生的数据信息输出到屏幕中。3、data_write( )函数将数组std110中的数据写入一个名为std.dat的二进制文件中。4、data_read( )函数实现从文件std.dat中将数据读入到数组std210中。5、Summary_results1()函数实现根据需要统计某门科目的总分。6、Summary_results2()函数实现根据需要统计某门科目的平均分。7、void Summary_results3()函数实现统计每个学生的总分并输出到屏幕上。8、void Summary_results_and_Query_results()统计每个学生的平均分并输出到屏幕上与查询并显示输出平均分若干名的学生。9、void Query_results1()函数实现查询并显示输出每门功课均及格的学生。10、void Query_results2()函数实现查询并显示输出某门功课及格的学生与不及格的学生。11、main函数是实现以菜单方式对程序进行运行。八调试分析:调试程序是一个艰难的过程,具体在调试过程中都忘记遇到有什么问题;就一带而过!但分析自己编写出来的程序,并修改是一种乐趣!九心得与体会:通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么亲手设计过程序,当要开始设计的时候,还真不知从哪下手!但自己通过看书、上网找资料、与同学的交流,让自己的程序慢慢地实现。在这一过程中,我认为最辛苦的在于调试程序中的一些问题,它让我遇到许多与书上不一样的知识与实践经验;使我慢慢地掌握调试程序的能力。同学也经常叫我帮他们调试错误。最后,想说两句,这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!但最重要的是,使我更加热爱编程;更热爱计算机这一行业;更加坚定我走技术研发人才的路!十各功能模块的实现及其程序清单:#include#include struct student int num; char name10; char sex; int age; float score5;struct student std110;struct student std210;float sum15,sum210,aver110,aver210;void input_data()/实现将10个学生的数据信息读入到数组std110中. int i; printf(请输入十个学生的信息n); printf(学号 姓名 性别 年龄 计算机导论 程序设计 数学 英语 体育n); for(i = 0;i 10; i+) scanf(%d %s %c %d %f %f %f %f %f,&std1i.num,&,&std1i.sex,&std1i.age,&std1i.score0,&std1i.score1,&std1i.score2,&std1i.score3,&std1i.score4); /输入10个学生的数据信息。void output_data()/实现将10个学生的数据信息输出到屏幕中。 int i; FILE *fp; printf(此函数功能实现将10个学生的数据信息输出到屏幕中n); printf( 学号 姓名 性别 年龄 计算机导论 程序设计 数学 英语 体育n); fp = fopen(std.dat,r);/从文件std.dat中将数据读入到数组std210 for(i = 0;i 10; i+) fread(&std1i,sizeof(struct student),1,fp); printf(%5d %-10s %-3c %4d %4f %4f %4f %4f %4fn,std1i.num,,std1i.sex, std1i.age,std1i.score0,std1i.score1,std1i.score2,std1i.score3,std1i.score4); fclose(fp);void data_write()/功能是将数组std110中的数据写入一个名为std.dat的二进制文件中 FILE *fp; int i; if(fp = fopen(std.dat,w)=NULL) printf(cannot open filen); return; /假设文件为空,则输出cannot open file。 for(i = 0;i 10; i+) if(fwrite(&std1i,sizeof(struct student),1,fp)!=1) /将std1的内容写入到文件std.dat. printf(file write errorn); fclose(fp);void data_read()/从文件std.dat中将数据读入到数组std210中. FILE *fp; int i; printf(此函数功能实现从文件std.dat中将数据读入到数组std210中但不能显示在屏幕上n); if(fp = fopen(std.dat,r)=NULL) printf(cannot open infilen); return; for(i = 0;i 10; i+) fread(&std2i,sizeof(struct student),1,fp);/读入到std110. fclose(fp);void Summary_results1()/根据需要统计某门课程的总分。 int j1; char ch; printf(此函数功能实现根据需要统计某门课程的总分n); for(j1 = 0;j1 10; j1+) sum10 += std2j1.score0; sum11 += std2j1.score1; sum12 += std2j1.score2; sum13 += std2j1.score3; sum14 += std2j1.score4; /统计10个学生各门科目的总分 printf(请做出你要查询的科目代码:n); printf(c-计算机导论;r-程序设计;m-数学;e-英语;p-体育;如果你不想再去查看请按n返回n); for(;)/根据需要选择输出某门科目的总分。 loop:ch = getchar(); switch(ch) casec:printf(计算机导论的总分:%fn,sum10); goto loop; caser:printf(程序设计的总分:%fn,sum11); goto loop; casem:printf(数学的总分:%fn,sum12); goto loop; casee:printf(英语的总分:%fn,sum13); goto loop; casep:printf(体育的总分:%fn,sum14); goto loop; casen:return; void Summary_results2()/根据需要统计某门课程的平均分。 int i2; char ch; printf(此函数功能实现根据需要统计某门课程的平均分n); for(i2 = 0;i2 5; i2+) aver1i2 = sum1i2/10;/统计10个学生各门科目的平均分。 printf(请做出你要查询的科目代码:n); printf(c-计算机导论;r-程序设计;m-数学;e-英语;p-体育;如果你不想再去查看请按n返回n); for(;)/根据需要选择输出某门科目的平均分。 loop: ch = getchar(); switch(ch) casec:printf(计算机导论的平均分:%fn,aver10); goto loop; caser:printf(程序设计的平均分:%fn,aver11); goto loop; casem:printf(数学的平均分:%fn,aver12); goto loop; casee:printf(英语的平均分%fn,aver13); goto loop; casep:printf(体育的平均分:%fn,aver14); goto loop; casen:return; void Summary_results3()/统计每个学生的总分并输出到屏幕上。 int i3, j3; printf(此函数功能实现统计每个学生的总分并输出到屏幕上n); printf(n); for(i3 = 0 ;i3 10; i3+) for(j3 = 0;j3 5;j3+) sum2i3 += std2i3.scorej3; printf(%s %d 总分成绩为:%fn,,std2i3.num,sum2i3); void Summary_results_and_Query_results()/统计每个学生的平均分并输出到屏幕上与查询并显示输出平均分若干名的学生 int a, i, j, k, i4, n = 10, max = 0; float t, *p; printf(此函数功能之一实现统计每个学生的平均分并输出到屏幕上n); for(i4 = 0;i4 10; i4+) aver2i4 = sum2i4/5; printf(学号 姓名 性别 年龄 平均分n); printf(%d %s %c %d %fn,std2i4.num,,std2i4.sex,std2i4.age,aver2i4); printf(此函数功能之二实现查询并显示输出平均分若干名的学生n); for(i = 0;i 10;i+) k=i; for(j = i+1;j aver2k) k = j; if(k != i) t = aver2i;aver2i = aver2k;aver2k = t; printf(请输入你想知道前几名学生平均分:); scanf( %d,&a); p = aver2; for(i = 0;i a;i+) printf(n学号 姓名 性别 年龄 平均分n); printf(%d %s %c %d %f,std2i.num,,std2i.sex,std2i.age,*p); p+; void Query_results1()/查询并显示输出每门功课均及格的学生 int i1; printf(此函数功能实现查询并显示输出每门功课均及格的学生n); for(i1 = 0;i1 60 & std2i1.score160 & std2i1.score260 & std2i1.score360 & std2i1.score460) printf(%s could pass all subject!n,); void Query_results2()/查询并显示输出某门功课及格的学生与不及格的学生 int i3; char ch; printf(此函数功能实现查询并显示输出某门功课及格的学生与不及格的学生n); printf(请做出你要查询的科目代码n); printf(c-computer;r-programmer;m-maths;e-english;p-PE;如果你不想再去查看请按n返回n); for(;)/根据选择需要查询并显示输出某门功课及格的学生与不及格的学生 loop: ch = getchar(); switch(ch) casec: for(i3 = 0;i3 60) printf(%s 通过计算机导论考试n,); else printf(%s 不能通过计算机导论考试n,); goto loop; caser: for(i3 = 0;i3 60) printf(%s 通过程序设计考试n,); else printf(%s 不能通过程序设计考试n,); goto loop; casem: for(i3 = 0;i3 60) printf(%s 通过数学考试n,); else printf(%s 不能通过数学考试n,); goto loop; casee: for(i3 = 0;i3 60) printf(%s 通过英语考试n,); else printf(%s 不能通过英语考试n,); goto loop; casep: for(i3 = 0;i3 60) printf(%s 通过体育考试n,); else printf(%s 不能通过体育考试n,); goto loop; casen:return; main() char ch; printf(*菜单*n);/菜单 printf(1.input_data and data_writen); printf(2.output_datan); printf(3.data_readn); printf(4.Summary_results1n); printf(5.Summary_results2n); printf(6.Summary_results3n); printf(7.Query_results_and_Summary_results()n); printf(8.Query_results1n); printf(9.Query_results2n); printf(0.Concluding remarksn)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机场工程测量方案
- 2026年幼儿教师资格考试题库及答案
- 一例生长激素缺乏症患者的护理个案
- 2026年滁州市琅琊区网格员招聘笔试参考试题及答案解析
- 2026年武汉市乔口区网格员招聘笔试备考题库及答案解析
- 2026年广元市市中区网格员招聘笔试参考题库及答案解析
- 2026年大庆市大同区网格员招聘笔试备考题库及答案解析
- 2026年青海省网格员招聘考试备考题库及答案解析
- 2026年辽宁省辽阳市网格员招聘考试参考题库及答案解析
- 2026年茂名市茂南区网格员招聘笔试参考题库及答案解析
- 以工代赈材料采购合同标准文本
- 2025神经网络与深度学习卷积神经网络
- 急性上消化道大出血应急预案及处理流程
- 口腔癌的口腔护理
- 购货合同模板写
- DL-T596-2021电力设备预防性试验规程
- NB-T11092-2023水电工程深埋隧洞技术规范
- 专题1.5 整式的乘除章末拔尖卷(北师大版)(解析版)
- 钢结构吊装专项施工方案(钢结构厂房)
- HGT4134-2022 工业聚乙二醇PEG
- 国开2023秋《人文英语3》第5-8单元作文练习参考答案
评论
0/150
提交评论