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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C程序设计之学生信息管理报告.docx

1、C程序设计之学生信息管理报告目录一需求分析2二概要设计2三详细设计4四调试分析8五用户手册9六测试数据9七附 录10一需求分析学生信息管理系统主要提供成绩查询,方便管理的网上信息查阅平台,根据开发要求,学生信息管理系统主要应用于教育系统,完成对学生成绩的计算机化的管理。程序需要以下规定:1.输入形式也输入值范围:需要输入的包括学生姓名学号chinesemathchinesepingshimathpingshipercentage等信息,因为分数信息都是采用int类型,所以输入的数据是需要是整数,输入值的范围在0-100之间。2. 输出的形式:将所输入的信息全部显示出来。3. 程序所能达到的功能

2、:更新学生成绩信息:录入学生成绩信息:姓名,学号,chinese,math,chinesepingshi,mathpingshi,percentage;增加学生成绩信息;修改学生成绩信息:输入密码“888888”,再按照学生姓名进行修改。查询学生成绩信息:按照姓名查询学生的信息。排序:计算总评成绩,将学生的总评成绩按照由大到小的顺序进行排序。统计信息:该模块主要应用于计算chinese和math的平均成绩average,之后再显示和比较出低于chinese和math的平均分的学生的信息。显示信息:该模块主要是显示出文件中的所有学生信息,并且找出chinese和math成绩中,90分以上和60分

3、以下的学生成绩信息。文件操作:保存和读取文件中的数据信息。退出程序。二概要设计1. 本程序所用的数据类型是整型int ,所用的调用函数也是整型int。2. 本程序所用的是数据结构,定义了一个结构体类型struct student,来保存学生信息的数据到结构体,形式为stui.name ,stui.num,stui.chinese,stui.math,stui.chinesepingshi,stui.mathpingshi,stui.percentage。3. 各自定义的子函数的名称分别为录入函数int input(),增加函数int add(),查找函数int search(),修改函数int

4、 modify(),排序函数int sort(),统计函数int count(),打印函数int display(),保存文件函数void save(),读出文件函数int out()4. 本程序模块结构主函数模块:Void main定义变量i; While Menu(); Switch(i) 选择调用函数接受命令; Break; 主程序流程和个函数之间的层次关系:三详细设计模块流程图:#include#include#define N 20#define M 2 /*宏定义学生样本容量*/void save(); /*保存文件函数*/typedef struct student /*定义结构

5、体变量struct student*/char nameN;int num; int chinese; int math; int chinesepingshi; /*语文平时成绩*/ int mathpingshi; /*数学平均成绩*/ int percentage; /*平时成绩所占百分比*/Stu;Stu stuM; /-基本操作的算法描述-1.录入函数input():输入学生成绩信息,实现录入功能,将成绩保存在结构体数组stui中。int input() int i; /*定义变量i*/ for(i=0;iM;i+) /*开始循环*/ printf(Name:n); /*输入姓名*/

6、 scanf(%s,&stui.name); /*保存在结构体数组stu中*/ printf(Num:n); /*输入学号*/ scanf(%d,&stui.num); printf(chinese:n); /*输入语文成绩*/ scanf(%d,&stui.chinese); printf(math:n); /*输入数学成绩*/ scanf(%d,&stui.math); printf(chinesepingshi:n); /*输入语文平时成绩*/scanf(%d,&stui.chinesepingshi); printf(mathpingshi:n); /*输入数学平时成绩*/ scanf

7、(%d,&stui.mathpingshi); printf(percentage:n); /*平时成绩所占百分比*/ scanf(%d,&stui.percentage); for(i=0;iM;i+) printf(Name:%sn,stui.name); printf(Num:%dn,stui.num); printf(chinese:%dn,stui.chinese); printf(math:%dn,stui.math); printf(chinesepingshi:%dn,stui.chinesepingshi); printf(mathpingshi:%dn,stui.mathp

8、ingshi); save(); /*保存信息到文件*/2.增加函数add(): 添加学生信息到结构体stui并保存到文件中,实现添加功能。int add() int i; /*定义结构体变量*/ for(i=0;iM;i+) out(); /*读入信息*/ printf(Name:n); scanf(%s,&stui.name); printf(Num:n); scanf(%d,&stui.num); printf(chinese:n); scanf(%d,&stui.chinese); printf(math:n); scanf(%d,&stui.math); printf(chinese

9、pingshi:n); scanf(%d,&stui.chinesepingshi); printf(mathpingshi:n); scanf(%d,&stui.mathpingshi); printf(percentage:n); scanf(%d,&stui.percentage); save(); /*保存信息*/3.查找函数int search(): 查询个别学生成绩信息,实现查询功能。通过用字符串比较函数strcmp比较学生姓名的字符串来实现通过学生姓名来查询学生成绩信息。 int search() char bN; /*定义字符b*/ int i; /*定义变量i*/ out()

10、; /*读入信息*/ printf(please input the name of the student you want to find:n); /*输入查找的学生姓名*/ scanf(%s,b); /*接受字符b*/ for(i=0;iM;i+) if(strcmp(b,stui.name)=0) /*比较字符串的长度*/ printf(this is the data which you want to find:n); printf(name:%sn,stui.name); printf(num:%dn,stui.num); printf(chinese:%dn,stui.chin

11、ese); printf(math:%dn,stui.math); printf(chinesepingshi:%dn,stui.chinesepingshi); printf(mathpingshi:%dn,stui.mathpingshi); getche(); /*添加getche语句使程序暂停*/ break; /*退出循环*/ else printf(sorry!not find your data); 4.修改函数int modify():修改个别学生成绩信息,实现修改功能。首先输入密码,有三次机会输入密码,用i来控制输入密码的次数,密码正确才可输入修改学生的姓名。通过用字符串比较

12、函数strcmp比较学生姓名的字符串来实现通过学生姓名来修改学生成绩信息。int modify()char password7=888888; /*设定密码*/int i,flag; /*定义变量i,flag*/char bM,s8; /*定义字符b,s*/flag=0; /*给变量赋值*/out(); /*读入信息*/for(i=0;i3&(flag=0);i+) /*在机会小于三次时循环*/ printf(please input the password:n); /*输入密码*/ scanf(%s,&s); if(strcmp(s,password)=0) /*通过字符串比较来验证密码正

13、确性*/ flag=1; /*密码正确*/ break; /*退出循环*/ else printf(error,input the password again:n); /*密码错误,再次输入*/ if(i=3) /*若i为3*/ printf(you have over 3 time!); /*超过三次就会*/ getche(); /*暂停程序*/if(flag=1) /*密码输入成功*/ printf(please input the name of the student you want to find:n); /*输入需要修改的名字*/ scanf(%s,&b); for(i=0;i

14、M;i+) if(strcmp(b,stui.name)=0) /*通过字符串比较出结构体中名字的正确性*/ printf(chinese:n); /*输入需要修改的语文成绩*/ scanf(%d,&stui.chinese); printf(math:n); scanf(%d,stui.math); printf(chinesepingshi:n); scanf(%d,stui.chinesepingshi); printf(mathpingshi:n); scanf(%d,stui.mathpingshi); printf(percentage:n); scanf(%d,stui.perc

15、entage); 5. 排序函数int sort():将信息按顺序输出,便于浏览,实现排序功能。将总评成绩的高低来排序输出学生信息。此模块的排序用到冒泡排序法来实现总评排序。int sort()int sumM,i,t,j; /*定义数组sum和临时变量t*/out(); /*读入信息*/for(i=0;iM;i+)sumi=stui.chinesepingshi*stui.percentage+stui.chinese*(100-stui.percentage)/100+stui.mathpingshi*stui.percentage+stui.math*(100-stui.percenta

16、ge)/100; /*计算总评成绩*/for(i=0;iM-1;i+)for(j=0;jM-1;j+) /*冒泡排序法*/ if(sumjsumj+1) t=sumj; sumj=sumj+1; sumj+1=t; for(i=0;iM;i+) /*打印出排好序的学生信息*/printf(%st,stui.name);printf(%dt,stui.num);printf(%dn,sumi);getche(); /*暂停程序*/6. 统计函数int count():统计学生成绩的信息,计算出学生的每门平均成绩以及打印出低于每门平均成绩的学生的信息。int count()int chin_ave

17、r=0,math_aver=0,chin_sum=0,math_sum=0;int i;out();for(i=0;iM;i+) chin_sum+=stui.chinese; /*计算所有学生此科目总成绩*/ chin_aver=chin_sum/M; /*计算语文科目的平均成绩*/ printf(the average grade of chinese:%dn,chin_aver);for(i=0;iM;i+) math_sum+=stui.math; /*计算所有科目此学生的总成绩*/ math_aver=math_sum/M; /*计算数学科目的平均成绩*/ printf(the av

18、erage grade of math:%dn,math_aver); for(i=0;iM;i+) if(stui.chinesechin_aver|stui.mathmath_aver) /*比较是否低于每门科目的平均成绩*/ printf(lower of chin_aver student information:n%sn%dn%dn,stui.name,stui.num,stui.chinese); printf(lower of math_aver student information:n%sn%dn%dn,stui.name,stui.num,stui.math); getch

19、e();7. 打印函数int display():打印出学生的所有成绩信息,再通过比较找出每门科目中高于90分和低于60分的学生信息,并打印出来。int display()int i;out();for(i=0;iM;i+)printf(Name:%sn,stui.name); printf(Num:%dn,stui.num); printf(chinese:%dn,stui.chinese); printf(math:%dn,stui.math); printf(chinesepingshi:%dn,stui.chinesepingshi); printf(mathpingshi:%dnn,

20、stui.mathpingshi);printf(percetage:%dn,stui.percentage);for(i=0;i90|stui.math90) /*比较成绩是否高于90分*/printf(higher 90 score student information:%sn%dn%dn%dn,stui.name,stui.num,stui.chinese,stui.math);else if(stui.chinese60|stui.math60) /*比较成绩是否低于60分*/printf(lower 60 score student information:%sn%dn%dn%dn

21、,stui.name,stui.num,stui.chinese,stui.math);elsecontinue; getche();8. 保存文件函数void save():将信息保存到文件中,运行修改增加删除排序统计等功能后,可将文件另存为或保存到源文件中。void save()FILE *fp;int i;if(fp=fopen(e:log.txt,wb)=NULL) /*打开位于e盘的文件*/ printf(can not open file); return; for(i=0;iM;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1

22、) /*将fp指向的数组中每次写入一个信息到文件*/ printf(file write errorn); /*写入错误*/ fclose(fp); /*关闭文件*/9. 读出文件函数int out():将文件中的信息读出来,以便对其进行操作。int out()FILE *fp;int i;if(fp=fopen(e:log.txt,rb)=NULL) printf(can open filen); return;for(i=0;iM;i+)if(fread(&stui,sizeof(struct student),1,fp)!=1) /*将fp指向的数组中每次读出一个信息循环读出*/ if(

23、feof(fp) fclose(fp); return; fclose(fp); /*关闭文件*/10. 主函数void main(): void main()int i; int menu(); /*菜单*/while(1) /*循环开始*/ printf(*welcome to nanchang hangkong university the school of software!*); menu(); printf(n); printf(enter your choice from 1to 8:); /*进行选择语句1-8*/ scanf(%d,&i);switch(i) /* swit

24、ch语句选择功能*/ case 1:input(); break; /*输入函数*/ case 2:add(); break; /*增加函数*/ case 3:search();break; /*查找函数*/ case 4:modify();break; /*修改函数*/ case 5:sort(); break; /*排序函数*/ case 6:count();break; /*统计函数*/ case 7:display();break; /*统计函数*/ case 8:exit();break; /*退出程序*/ default: break; _四调试分析1. 调试过程中遇到的问题及解决

25、方法: 在成绩录入input模块中,第一名学生的成绩录入成功,但是后来的学生的成绩出现乱码的情况,无法录入学生的姓名等信息。解决方法:后来经过仔细检查发现各个子函数均采用的int类型,而平均成绩所占百分比percentage使用的是float 类型,所以后来把其改为int类型后,在计算总评成绩时做了修改,避免了大范围的修改,同时也完成了原本的功能。 在使用增加模块增加add学生信息后,使用打印模块display打印所有学生的成绩时出现了乱码的情况。 解决方法:检查发现是程序所申请的样本空间太小,所以打印不出超出样本空间的数据,后来修改了样本空间,在前部分宏定义了define M ,解决了不能打

26、印的情况。 程序出现了警告warming,许多警告是指没有定义就使用了变量。 解决方法:在主函数和子函数中均定义了变量,并对变量进行了赋值后,解决了问题,使得运行正常了。2. 经验与体会:我体会到程序的设计需要经过精细的计算和设计,使用的变量之前都要先进行定义,遇到问题及困难的时候要多想想,自己独立查找资料来解决问题。虽然采取了许多防止出错的方法,特别是对输入错误数据的防范措施,但系统测试仍然是发现系统存在错误,后来我在老师的帮助下进行了一系列的改正修复以及重新编写某些函数,并对程序中的每一个块一条语句和逻辑思路都进行了反复测试,运行结果基本符合要求。同时,我也积累了一定的经验,熟悉了许多子函

27、数的编写以及循环的使用,这次课设是我对之前的知识漏洞有了一个补充和掌握,对之前学的知识进行了巩固。多谢老师和同学的帮助!五用户手册用户使用说明:1. 本程序运行环境为TC系统,按ctrl+f9进入运行界面,后会显示程序菜单;包括8个功能模块;2. 使用键盘输入需要选择功能的数字,如按下1+enter ,则进入input 输入界面,此时输入需要录入的学生信息,如按下name+enter ,则将学生姓名的信息进行了输入,按照这个方式依据提示一次输入学生的姓名学号chinesemathchinesepingshimathpingshipercentage的信息,最后按下enter 完成输入;3. 此时程序又进入到菜单界面,方法同上按下2+enter,则进入add增加界面,此时输入需要增加的学生信息,方法同上,最后按下enter 完成学生成绩的增加输入;4. 此时程序又进入到菜单界面,方法同上按下3+enter,则进入到查找界面,此时显示打开文件“can open file”,之后输入需要查找的学生姓名按下enter ,即完成查找,显示学生查找学生信息,最后按下e

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

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