ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:274.66KB ,
资源ID:4586868      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4586868.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言实训报告学生成绩管理系统文件实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言实训报告学生成绩管理系统文件实现.docx

1、C语言实训报告学生成绩管理系统文件实现c语言程序设计实训报告题 目: 学生成绩管理系统 院 系: 专 业: 姓 名: 学 号:指导教师:日 期:2017年9月9日1问题定义 12系统设计 12 . 1 总体设计 12 2 函数预览2 3系统实现 33. 1 功能模块 3. 2 全部代码 124系统维护 194 . 1 调试和测试 19-5归纳总结 195. 1 开发经验 205. 2 实训中遇到的问题及解决方法205. 3 设计中的不足之处 205. 4 感想和心得体会 26参考资料 20、八前言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课 后应用本课知识及以前的知识积累而

2、进行的综合性、开放性的训练。通过课程 设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识, 而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设 计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性 和灵活性,自 1972 年问世以来,经久不衰,即使现在出现了面向对象的程序设 计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提 高编程技术,以及开发应用程序等。我们通过 C 语言程序设计这门课程的学习,已经能编写解决小问题的 程序,对程序的开发也有了初步的认识,还掌握了 C 语言的基本语法,这一过 程确确

3、实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是, 对于程序设计而言,学习 C 的步伐不应该停留于此。我们最终的目的应该是掌 握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思 想, 用 C 语言开发出解决复杂问题的大型综合程序。 可是对于多数学生来说, 学习了 C 语言后,除了应付各种考试之外,别无它用,对 Turbo C 语言丰富的 函数知之甚少,加上 DOS 环境所限,因而对 C 语言兴趣不大,也感到 C 语言 比较难以掌握。本实训就是为了让学生在学完 C 语言后进一步了解 C 语言的知识,掌握 C 语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高

4、学生学习 C 语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者 表示衷心的感谢。由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。编者桂林电子科技大学信息科技学院学生成绩管理系统本题目设计目的是训练学生的基本编程能力,了解管理学生成绩信息系统 的设计开发流程,熟悉 C语言的文件各种基本实现和操作。本程序中涉及结构 体、文件读写、宏等方面的知识。通过本程序的训练和制作,使学生能对 C语言的文件操作等方面有一个更深刻的了解,掌握利用结构体存储实现对学生成 绩管理的原理,为进一步开发出高质量的管理信息系统以及

5、之后的其他编程方 面知识的学习和理解打下坚实的基础。1、问题定义创建一个学生成绩管理系统。假设系统中每个学生记录只包括学号、姓名、平时成绩、期末成绩、总评成绩、总分、平均分、名次等信息。程序的运行效果如上图图所示,选择 任意菜单后,实现相应功能。 具体结构体设定请见以后。程序初始主界面截图如下:*:4:|0#*:4:*:(:*#*:4:* 4c * *(:* d|c.d|cd|zd|cj|c4c:d|c3|cd|c.dczd|c :垮毂曙诊熬秫吾曹; 绩成绩蹇分 总询询及平 羣查杳生生需I I记学号列文你 单入蔓亍姓WW出出入在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段, 完

6、成系统设计和系统实现的任务。2、系统设计2.1总体设计本管理系统的程序主要由 C语言编写,考虑到各方面的维护和需求实现考虑,程序代码总体上采用模块化编程方式设计以及编写。即将一个大的功能需 求分作几个小模块来配合实现,为了降低添加和维护功能和需求的成本和时间。尽量不依赖于C语言全局变量而是通过函数调用之间的参数来传递数据。2. 2函数预览1)主函数int roainCX调用其他不同功能2) 主菜单函数lnt ltenu(uoid)输出显示界面3) 新建信息函数1 (手写输入)lUji ri Rpjifl finZFfili 1 ni n . i n十 i nb手动输入学生的成绩信息,包括学号、

7、姓名、平时成绩、总评成绩4) 新建信息函数2 (文件输入)uoid Readjdatal(STU sturint nint a,int b)通过文件导入学生成绩信息5) 计算成绩函数uoid TotalmarkSTU stn,int n,int a.lnt b)计算学生试卷分数的总评成绩6) 查询成绩函数1 (按学号)uoid Sortbpnum(STU stu,int n)按学号查询学生试卷的总评成绩7) 查询成绩函数2 (按姓名)uoid Sortbj/ndnie(STU stu sint n)按学号查询学生试卷的总评成绩8) 计算成绩函数1 (计算总成绩的及格率和优秀率)void Cou

8、nt_pa55STU 5tu .int n)计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数9) 计算成绩函数2 (计算总成绩的平均分和标准差)void Count_auerage(STU sturint n) 计算学生总评成绩的平均分和标准差10) 输出成绩函数void Show data($TU stu.int n)输出全班学生的所有成绩,包括学号、姓名、总评成绩11) 导出成绩函数void Vrite d日tstuint ri)将学生所有成绩的列表导出到文本 score.txt中3、系统实现3.1功能模快(附代码)1)主函数 int mai n()STU stuSIZE;i

9、nt n,a,b;char ch;int oh;prin tf(tt *n); prin tf(ttt* 欢迎使用 * n);prin tf(ttt* 学生试卷分数统计系统可*编辑p);prin tf(tt *n); while (1) r精品ch = Menu(); switch (ch) case 1:printf(” 请输入学生人数 n(n=%d):, SIZE); scan f(%d, &n);printf(”请输入学生平时成绩与期末成绩所占总评成绩的的比例 (用整数表示,满分100分):n);scan f(%d%d,&a, &b);printf(以下有两种输入试卷分数的方式: n*1

10、.手动输入试卷分数t2.从student.txt文件中导入试卷分数 *n);scan f(%d, &oh);1)输入限定switch (h)case 1:Read_data(stu, n,a,b);break;case 2:Read_data1(stu, n,a,b); break;default:printf(输入菜单序号错误!); break;case 2:Total_mark(stu, n,a,b); break;case 3:Sortb ynu m(stu ,n);break;case 4:Sortb yn ame(stu ,n); break;case 5: Coun t_pass(

11、stu ,n);break;case 6: Coun t_average(stu ,n); break;case 7:Show_data(stu ,n); break;case 8:Write_data(stu ,n); break;case 0:prin tf(tt* *n);prin tf(ttt* 感谢使用 * n);prin tf(ttt* 学生试卷分数统计系统 * n);prin tf(tt* *n); exit(0);default:printf(输入菜单序号错误!);return 0;2)主菜单函数率差绩成绩鑒吞总询询 羣查查生生春-记rlrs-于列文-/*函数功能:显示菜单并获

12、得用户键盘输入的选项 */int Me nu( void)int itemSelected;prin tf(n 【菜单】n);printf(1.输入记录 n);printf(2计算学生总评成绩n”);printf(3.按学号查询成绩n”);printf(4.按姓名查询成绩n”);prin tf(5 计算学生及格率和优秀率 n);prin tf(6 计算学生平均分和标准差 n);printf(7.成绩列表 n);printf(8.导出文件 n);printf(0.退出 n”); printf(请输入你的选择:);sca nf(%d, & itemSelected); /* 读入用户输入 */ r

13、eturn itemSelected;3)限定功能模块躍蕭册騙占总林昨吐隔满分咧;限定(或者说确定)学生的人数和总评成绩的计算方式printf(” 请输入学生人数 n(n=%d):, SIZE);scan f(%d, &n);printf(”请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表 示,满分100分):n);可编辑scan f(%d%d,&a,& b); 可编辑4)新建成绩函数1 (手动输入)审给人羣生平时成绩宵期末成绩所占总评成绩的的比例(用删夷示.满分10盼):B0脸鸦眈鶴響的Jfewdent. txt文件中导人试卷分数*卅1青输入学土的学号、姓缶平时成绩和期末成绩(逗号

14、隔开):1651500101,位,23,561651500102, 氨 33,67/*函数功能:手动输入分数 */void Read_data(STU stu,int n,int a,int b)int i=0;printf(”请输入学生的学号、姓名、平时成绩和期末成绩(逗号隔开): n);for(i=0;i n ;i+)scanf(%ld,%s, %d, %d,&stui.num,&stui.name,&stui.score0,&stui.score1); stui.score2=stui.score0*a/100+stui.score1*b/100;5)新建成绩函数2 (文件输入)入薩嚮時

15、蹶诙所占总评祗的卅(用酬林 耐瑚): 出忑鹑敝廳鬻的魏;如血丄仃七文件中导入试卷分數十1.蹴“记录II 凸-订i_Lg 輪熒祢的选#匹E:1651500101S: 1651500102 : 1651500103 F:16E1500104 :$11651500105 f:16E15D0106 z:1651500107 :16E150010B =:16515D0109 E:16B15DO11D 1651500111 E: 1651500112/*函数功能:从文本 student.txt中导入试卷分数 */void Read_data1(STU stu,int n,int a,int b)int i

16、;FILE *fp;if(fp=fope n(stude nt.txt,r)=NULL)printf(打开文件 student.txt 失败! n); exit(0);for(i=0;!feof(fp);i+)fsca nf(fp,%ld, &stui. nu m);fsca nf(fp,%s,stui. name);fsca nf(fp,%d, &stui.score0);可编辑fsca nf(fp,%d, &stui.score1);fclose(fp);6)计算成绩及输出函数/*函数功能:计算学生试卷分数的总评成绩 */void Total_mark(STU stu,int n,int

17、a,int b)int i;for(i=0;i n;i+)stui.score2=stui.score0*a/100+stui.score1*b/100;printf(” 学 生 :ldt 姓 名 :%st 总 评 成绩:%dn,stui. nu m,stui. name,stui.score2);7)查询成绩函数1 (按学号)/*函数功能:按学号查询学生试卷的总评成绩 */void Sortby nu m(STU stu,i nt n)scan f(%d,&nu mber); for(i=0ni+m=number)printf(学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成

18、 绩:%dn,stui. nu m,stui. name,stui.score0,stui.score1,stui.score2);return;printf(抱歉,没有找到! n”);8)查询成绩函数2 (按姓名)期末甌辭:34 忌评咸绩:555s绩忌询询a f 生牛乘 记学号亶A于列交 MAHWlsiAA!11|1.|2,|3,去5,|6.7.8.名:B i Jr - -TRr ;宁2 ii找on 的杏15 你更笛/*函数功能:按姓名查询学生试卷的总评成绩 */void Sortby name(STU stu,i nt n)char n amed10;int i;);printf(”请输入

19、要查找的学生姓名:sca nf(%s, named);9)计算成绩函数1 (计算总成绩的及格率和优秀率)/*函数功能:计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人 数*/void Cou nt_pass(STU stu,i nt n)int i,pass_num,t4;float passrate;memset(t,0,sizeof(t);for(i=0;i n ;i+)if(stui.score260) t0+;else if(stui.score2=75) t1+;else if(stui.score2=85) t2+;else if(stui.score2=100) t3

20、+;pass_ num=t1+t2+t3;passrate=(float)(t1+t2+t3)/n;printf(及格人数:dn,pass_num);printf(优:%dt 良:%dt 中:%dt 差:%dn,t3,t2,t1,t0); printf(总评成绩及格率:%.2fn,passrate);可编辑printf(总评成绩优秀率:%.2fn,(float)t3/n);2 (计算总成绩的平均分和标准差)总评成绩标准差I4556 I选均的平氤询询i查查主生需 记学号嘉于列文 单人皐姓算WW3岀 菜星输评/*函数功能:计算学生总评成绩的平均分和标准差 */void Coun t_average

21、(STU stu,i nt n)int i;double sum=O,aver,temp=O,sta ndard;for(i=0;i n ;i+)sum=stui.score2+sum;aver=(float)sum/n;for(i=0;i n ;i+) temp=(stui.score2-aver)*(stui.score2-aver)+temp; 11)输出成绩函数评成结率差s.1-6.7.8.0, LiuLi1 o75402661 2 5188 4 2_b59_yl2firH绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绩绮 成專成專專成慘?成的成成 nr- nr- nr 1 1 %_l、nk、T、n

22、k IT 、T3 7 %T 航“呂国E営屮匚片言匕啟邑匕占呂匕he.p=p.l1l4、一一岀氐鼠一CTW I I- Jl-JIi-ii- J J5434254276貂39763158聋38曲75W:18S36331成馈-怛挥二二二二二 一 .-.-7 - -.二 二-.二ly一 / - 2 -!一 二! 耳貝貝貝耳冃貝封効耳貝耳乍貝貝貝吕貝到_u 5 3 CO E 30ILID Dp CM CM 吐 1 CM Cp OQ 4 42 4 6 54015 5 10 978 3 24-49912 成戍感戍戍应威廉戍成戍戍戍戍应应磁戍ALCDEFCHI. -ELMHOroESTU :卸务各并-S:R

23、衾召力:主瑜L祢的选择存:165150010】:16E1500102 :1651500103 :16B1E00104:1651500105 :165150010E:1651500107:1651500108 :lCBlEOOlOQ:1651500110:16B15001U:1651500112 I :16B1E00113 :1651500114!1651E0011E :1651500116 :1651500117 :165150011S :1651500115:16E1E00120 /*函数功能:输出全班学生的所有成绩 */void Show_data(STU stu,int n)int i;

24、for(i=0;i n ;i+)printf(”学号:ldt 姓名:%st平时成绩:dt期末成绩:dt总评成1绩 导出成绩函数hum,stui. name,stui.score0,stui.score1,stui.score2);=J-hrTfi - - -?S r.31/*函数功能:将学生所有成绩的列表导出到文本 score.txt中*/void Write_data(STU stu,i nt n) 可编辑FILE *fp;int i;3、系统实现31 全部实现代码#include #include #include #include #include #define SIZE 100typ

25、edef struct studentlong num;char name10;int score3;STU;int Menu(void);void Read_data(STU stu,int n,int a,int b); void Read_data1(STU stu,int n,int a,int b); void Total_mark(STU stu,int n,int a,int b);void Sortbynum(STU stu,int n);void Sortbyname(STU stu,int n);void Count_pass(STU stu,int n);void Cou

26、nt_average(STU stu,int n);void Show_data(STU stu,int n);void Write_data(STU stu,int n);int main()STU stuSIZE;int n,a,b;char ch;int oh;);printf(ttt* 欢迎使用 * n);printf(ttt* 学生试卷分数统计系统 * n););while (1)ch = Menu();switch (ch) case 1:printf( 请输入学生人数 n(n=%d):, SIZE);scanf(%d, &n);printf( 请输入学生平时成绩与期末成绩所占总评

27、成绩的的比例(用整数表示,满分 100 分) :n);scanf(%d%d,&a,&b);printf( 以下有两种输入试卷分数的方式: n*1. 手动输入试卷分数 t2. 从 student.txt 文件中导入试卷分数 *n);scanf(%d,&oh);switch (oh)case 1:Read_data(stu,n,a,b);break;case 2:Read_data1(stu,n,a,b);break;default:printf( 输入菜单序号错误 !); break;case 2:Total_mark(stu,n,a,b);break;case 3:Sortbynum(stu,n);break;case 4:Sortbyname(stu,n);break;case 5: Count_pass(stu,n);break;case 6: Count_average(stu,n);break;case 7:Show_data

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1