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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

程序设计实验报告.docx

1、程序设计实验报告程序设计报告( 2012/2013学年 第一学期)题 目: 学生信息管理系统 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 计算机学院软件教学中心日 期 学生信息管理系统一、课题要求该系统要求对一个文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种数据描述和操作,以及一些算法思想的应用,实现一个简单的学生管理系统。功能要求:(1)学生信息包括:学号,姓名,性别,出生(年,月,日),三门课成绩和总分( 数学, 英语, C语言, 总分)。(2)数据格式:测试数据,以文件方式提供,studf

2、.txt,数据文件自己建立。(3)需要实现的功能1) 建立学生信息结构数组从文件中读入数据2) 按姓名递增冒泡排序3) 按总分递减选择排序4) 按学号递增冒泡排序5) 显示按总分排序后学生信息6) 按学号查学生信息和平均分数7) 按姓名查学生信息和平均分数8) 查各门课平均分数二、需求分析本系统应具有以下功能:1.数据输入功能:数据包括学生学号、性别、出生(年,月,日)、三门成绩和总分(数学,英语,c语言,总分)等。以及输入的学生姓名等操作。2、计算功能:在输入学生分数及学生信息时,自动查找和显示学生的成绩。3、查询功能:(1)按学号查学生信息和平均分数。(2) 也可以按姓名查学生信息和平均分

3、数来显示学生信息。4、排序功能:可按姓名递增选择排序法排序,按学号冒泡排序法排序以及按总分递减排序。5、数据显示功能:可浏览输入、查询或排序后的数据,显示学生的个人信息。三、概要设计方案设计 (1)、输入模块:录入需要管理的学生信息并将信息保存于文件中,以方便日后进行打印、读取、修改等操作。(2)、输出模块:将所有学生信息或想要查询的学生信息显示于屏幕,用于打印学生信息或查找某些学生信息。(3)、查询模块:可对已建立的学生信息进行查询,并且可根据需要选择按姓名,学号,总分查询。(4)、统计模块:对学生四门成绩平均成绩的统计。(5)、排序模块:对学生成绩由高到低的排序。(6)、退出系统:选择该项

4、,自动退出该系统。四、详细设计 数据结构:struct date int year; char month; char day;struct student char no10; char name9; char sex3; struct date birthday; int score4; int rescore4; (1)、输入模块 void readsi(struct student stud,int *n) FILE*fp; int i; if(fp=fopen(J:studf.txt,r)=NULL) printf(无法打开studf.txt文件!n); exit(1); for(i

5、=0;!feof(fp);i+) (*n)+; if(*nN) printf(最多处理30位学生信息!n); return; fscanf(fp,%s %s %s %d %d %d %d %d %d,studi.no,studi.name,studi.sex,&studi.birthday.year,&studi.birthday.month,&studi.birthday.day,&studi.score0,&studi.score1,&studi.score2); studi.score3=studi.score0+studi.score1+studi.score2; fclose(fp)

6、; (2)、输出模块(显示学生信息)void printsi(struct student *pstud,int n) int i,k=0; printf( 学号 姓名 性别 年 月 日 数学 英语 C语言 总分n); printf(n); printf(=n); for(i=0;in;i+) printf(%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn,pstudi.no,pstudi.name,pstudi.sex,pstudi.birthday.year,pstudi.birthday.month,pstudi.birthday.day, pstu

7、di.score0,pstudi.score1,pstudi.score2,pstudi.score3); k+; (3)、查询模块 1按照学号查找学生成绩(顺序查找)的关键代码for(i=0;in;i+) if(strcmp(no,pstudi.no)=0) printf(已找到学号为%-8s的学生n学号:%-8sn姓名:%-8sn性别:%-2sn%4d年%2d月%2d日n数学:%4dn英语:%4dnc:%4dn总分%4dn平均分数为:%4dn,pstudi.no,pstudi.no,pstudi.name,pstudi.sex,pstudi.birthday.year,pstudi.bir

8、thday.month,pstudi.birthday.day,pstudi.score0,pstudi.score1,pstudi.score2,pstudi.score3,pstudi.score3/3); else j+; if(j=30) printf(未找到学号为%-8s的学生n,no);2按照姓名查找学生成绩折半查找函数int bsrch(struct student pname,int n,char *name)的代码:int lower=0,upper=n-1,mid; if(strcmp(name,pnamelower.name)=0) return lower; else

9、if(strcmp(name,pnameupper.name)=0) return upper; else while(lower0) lower=mid+1; else upper=mid-1; return -1;此处按照学生姓名查找成绩是运用了折半查找的方法,根据折半查找函数的返回值确定有没有找到该学生:i=bsrch(pname,n,name); if(i!=-1) printf(已找到该学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn, pnamei.no,pnamei.name,pnamei.sex, pnamei.birthday.

10、year,pnamei.birthday.month,pnamei.birthday.day,pnamei.score0,pnamei.score1,pnamei.score2,pnamei.score3); else printf(%d没有找到该学生资料!n,name); for(;) i=i-1; if(strcmp(name,pnamei.name)=0) printf(已找到该学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn, pnamei.no,pnamei.name,pnamei.sex, pnamei.birthday.year,p

11、namei.birthday.month, pnamei.birthday.day, pnamei.score0,pnamei.score1,pnamei.score2, pnamei.score3); else break; i=bsrch(pname,n,name); for(;) i=i+1; if(strcmp(name,pnamei.name)=0) printf(已找到该学生信息:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn, pnamei.no,pnamei.name,pnamei.sex, pnamei.birthday.year,pn

12、amei.birthday.month, pnamei.birthday.day, pnamei.score0,pnamei.score1,pnamei.score2, pnamei.score3); else break;3查询各门课程的平均分数关键代码:static sum1=0,sum2=0,sum3=0,score=0;int i;for(i=0;in;i+) sum1=sum1+pstudi.score0; sum2=sum2+pstudi.score1; sum3=sum3+pstudi.score2; printf(数学平均分数 :%4dn,sum1/n); printf(英语平

13、均分数 :%4dn,sum2/n); printf(c语言平均分数:%4dn,sum3/n);(4)、排序模块1根据姓名排序信息A 姓名递增选择法排序的关键代码:struct student temp; for(k=0;kn-1;k+) index=k; for(i=k+1;in;i+) if(strcmp(pnamei.name,pnameindex.name)0) index=i; if(index!=k) temp=pnamek; pnamek=pnameindex; pnameindex=temp; B 显示姓名排序后的学生信息的关键代码:printf(学号 姓名 性别 年 月 日 数

14、学 英语 C 总分n); printf(=n); for(i=0;in;i+) printf(%-8s%-8s%-2s%4d %2d %2d %4d %4d %4d %5dn, parrayi.no,parrayi.name,parrayi.sex, parrayi.birthday.year,parrayi.birthday.month,parrayi.birthday.day, parrayi.score0,parrayi.score1,parrayi.score2,parrayi.score3); 2根据总分排序信息按照总分选择法排序的代码和按姓名排序代码类似,for(i=0;in-1;

15、i+) for(j=0;jn-i-1;j+) if(ptscorej.score3ptscorej+1.score3) temp=ptscorej; ptscorej=ptscorej+1; ptscorej+1=temp; 然后显示按总分排序后的学生信息表:printf( 按总分排序后的学生信息表n); printf(n); printf(学号 姓名 性别 年 月 日 数学 英语 C 总分 n); printf(n); for(i=0;in;i+) printf(%-8s%-8s %-2s %4d %2d %2d %4d %4d %4d %4d n,studi.no,studi.name,s

16、tudi.sex,studi.birthday.year,studi.birthday.month,studi.birthday.day,studi.score0,studi.score1,studi.score2,studi.score3); if(i=n-1) printf(n); else printf(n); k+; 3根据学号排序信息首先利用冒泡法按照学号排序;for(i=0;in-1;i+) for(j=0;j0) strcpy(t,studj.no); strcpy(studj.no,studj+1.no); strcpy(studj+1.no,t); strcpy(x,stud

17、j.name); strcpy(studj.name,studj+1.name); strcpy(studj+1.name,x); strcpy(y,studj.sex); strcpy(studj.sex,studj+1.sex); strcpy(studj+1.sex,y); p=studj.birthday.year; studj.birthday.year=studj+1.birthday.year; studj+1.birthday.year=p; q=studj.birthday.month; studj.birthday.month=studj+1.birthday.month;

18、 studj+1.birthday.month=q; r=studj.birthday.day; studj.birthday.day=studj+1.birthday.day; studj+1.birthday.day=r; s=studj.score0; studj.score0=studj+1.score0; studj+1.score0=s; w=studj.score1; studj.score1=studj+1.score1; studj+1.score1=w; u=studj.score2; studj.score2=studj+1.score2; studj+1.score2=

19、u; v=studj.score3; studj.score3=studj+1.score3; studj+1.score3=v; 然后输出信息:for(i=0;in;i+) printf(%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn,studi.no,studi.name,studi.sex,studi.birthday.year,studi.birthday.month,studi.birthday.day,studi.score0,studi.score1,studi.score2,studi.score3);4插入补考或休学学生信息后排序如果选

20、择了插入补考后成绩,则会先输入该学生的学号,if(strcmp(no,rescorei.no)=0) printf(已找到学号为%-8s的学生n学号:%-8sn姓名:%-8sn性别:%-2sn%4d年%2d月%2d日n语文:%4dn数学:%4dn英语:%4dn总分%4dn平均分数:%4dn,rescorei.no,rescorei.no,rescorei.name,rescorei.sex,rescorei.birthday.year,rescorei.birthday.month,rescorei.birthday.day,rescorei.score0,rescorei.score1,re

21、scorei.score2,rescorei.score3,rescorei.score3/3);然后选择要修改的某一门成绩:printf(1.插入语文补考成绩n); printf(2.插入数学补考成绩n); printf(3.插入英语补考成绩n); scanf(%d,&b); switch(b) case 1:printf(请输入语文补考成绩n); scanf(%d,&c); rescorei.score0=c; break; case 2:printf(请输入数学补考成绩n); scanf(%d,&c); rescorei.score1=c; break; case 3:printf(请输

22、入英语补考成绩n); scanf(%d,&c); rescorei.score2=c; break; default:printf(请在1-3之间选择!n); break; 如果选择了显示补考后的总分排序情况,则会先根据选择法排序信息,接着输出信息:for(i=0;in-1;i+) for(j=0;jn-i-1;j+) if(rescorej.score3rescorej+1.score3) temp=rescorej; rescorej=rescorej+1; rescorej+1=temp; (5)、统计模块统计每门课程的平均成绩for(i=0;in;i+) sum1=sum1+pstud

23、i.score0; sum2=sum2+pstudi.score1; sum3=sum3+pstudi.score2; printf(数学平均分数 :%4dn,sum1/n); printf(英语平均分数 :%4dn,sum2/n); printf(c语言平均分数:%4dn,sum3/n);五,测试开始程序 *欢迎使用学生信息管理系统* 1.显示所有学生信息* 2.根据姓名排序信息* 3.根据总分排序信息* 4.根据学号排序信息* 5.按照学号查找学生成绩* 6.按照姓名查找学生成绩* 7.查询各门课程平均分数* 8.插入补考或休学学生信息后排序* 0.退出信息管理系统*请选择功能: 1 学号

24、 姓名 性别 年 月 日 数学 英语 C语言 总分=110203 李红 女 1993 2 4 87 76 85 248110226 海明 男 1994 10 18 67 76 87 230110210 周强 男 1992 8 25 87 89 96 272110213 王杰 男 1994 2 9 56 45 65 166110208 张娟 女 1993 5 8 87 79 81 247110216 刘明 男 1994 9 18 67 68 81 216110205 马克 男 1992 8 12 58 89 90 237110204 吕婷 女 1994 7 4 79 76 85 240110214 张国 男 1994 10 18 81 76 87 244110222 李强 男 1

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

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