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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言程序课程设计报告郭晗.docx

1、C语言程序课程设计报告郭晗课程设计(论文)题 目 名 称 学生成绩管理系统 课 程 名 称 C语言程序课程设计 学 生 姓 名 郭晗 学 号 1141303066 系 、专 业 信息工程系、通信工程 指 导 教 师 黄同成 2012年6月3号目 录1 前言 22 需求分析 22.1要求 22.2任务 22.3运行环境 22.4开发工具 23 概要设计与详细设计 23.1系统流程图 23.2查询函数流程图 34 编码与实现 44.1分析 54.2具体代码实现 54.3 运行结果截图 211)主菜单 212)成绩录入 213)按学号排序 214)按成绩排序 215)成绩查询 225 课程设计总结

2、23参考文献 23致 谢 231 前言编写一个程序来处理学生成绩。通过一个结构体数组来存放输入的每一位同学的成绩(包括学期、学号、班级、姓名、四门课成绩),然后将其信息存入文件中。并且能够完成队学生成绩的录入、修改、查询,按班级输出学生成绩单及不及格学生名单,统计学生成绩求学生的总分及平均分。2 需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。2.2任务(1)定义一个结构体类型数组,输入每一位同学的记录(包括学期、学号、班级、姓名、四门课成绩

3、),将其信息存入文件中;(2)按顺序输入每个学生的信息;(3)画出所有模块的流程图;(4)编写代码;(5)程序分析与调试。2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计与详细设计3.1系统流程图 图3.1 系统流程图3.2查询函数流程图首先输入学号,当没有记录是显示“没有任何学生”,返回函数重新开始。如过输入学号合格,则对已经存在的记录进行查找,最后打印信息。函数流程图如下所示:图3-2 search()函数流程图4 编码与实现4.1分析1)本程序需要定义多个结构体,用于存放学生的相关信息。struct student/定义

4、结构体2) 主函数功能比较简单,用while循环语句和switch多重选择语句来显示主界面和调用函数。在主函数的前面要写必须的头文件,预定义语句以及全局变量的结构体。3) 利用while循环结构和else/if语句来实现增加信息的功能。先定义5个指针*p0,*p1,*p2,*p3,*max,开始运行,当学生学号小于0时返回add函数,重新开始,而当输入0时返回菜单函数。当输入学号符合要求时,函数向下运行,令p3=head,用else/if语句判断输入的学号是否重复,如果是则重新输入,如果不是,函数继续向下运行。接下来利用指针来储存依次输入的语文、英语、数学、计算机成绩。而用while 结构来保

5、证输入的成绩在0100之间,如果不是则重新输入。4)在C语言中无法做到删除和移动数据,所以删除记录要先将所有记录从文件中读出,删除后再将记录写回文件中。每读出一条记录,按其在文件中的顺序做好指针链接关系,然后查处要删除的学生信息,将其在链表中删除,最后再将变动的记录重新写回文件中。用指针,while循环和else/if结构来实现查找出要删除的学生。5) 在插入函数中利用指针,和else/if语句来实现输入的数据按照插入相应的位置。6) 利用指针、链表打开已经储存的信息。7) 先用if判断是否存在信息,如果没有则返回,如果已经存在则继续运行函数。利用while循环语句和switch多重选择语句来

6、实现是按照哪一种方式排名,用for,if语句来实现排名。8) 用do/while循环语句和switch多重选择语句调用各个功能函数。9)用while循环语句和switch多重选择语句输出记录中的个人总分和平均分、单科平均分、总分最高分、总分最低分。4.2具体代码实现#includestdio.h#includestdlib.h#includestring.htypedef struct int num; /学号 char name20; /姓名 char sex10; int age; double maths; /数学成绩 double english; /英语成绩 double chine

7、se; /语文成绩 double computer; /计算机成绩 double total; /总成绩 double average; /平均成绩 STUDENT; /定义结构体#define N 100int menu()char a;do system(cls); /运行前清零 printf(tt 学生成绩管理系统n); printf(tt | 1. 输入记录 n); printf(tt | 2. 插入 n); printf(tt | 3. 按学号排序 n); printf(tt | 4. 按成绩排序 n); printf(tt | 5. 查询信息 n); printf(tt | 6.

8、删除某人信息 n); printf(tt | 7. 浏览结果 n); printf(tt | 0. 退出 n); printf(tt*n); printf(ttt给出你的选择(0-7):); a=getchar();while(a7);return(a-0);void input(STUDENT *s, int size) /输入函数 int i; FILE*fp; if(fp=fopen(stu.dat,wb)=NULL) printf(Cannot open file!); exit(0); for(i=0;isize;i+) printf(输入学号:n); scanf(%d,&si.nu

9、m); printf(输入姓名:n); scanf(%s,si.name); printf(输入性别:n); scanf(%s,si.sex); printf(输入年龄:n); scanf(%d,&si.age); printf(输入数学成绩:n); scanf(%lf,&si.maths); printf(输入英语成绩:n); scanf(%lf,&si.english); printf(输入语文成绩:n); scanf(%lf,&si.chinese); printf(输入计算机成绩:n); scanf(%lf,&puter); si.total=si.maths+si.chinese+s

10、i.english+puter; si.average=si.total/4.0; fwrite(&si,sizeof(STUDENT),1,fp); fclose(fp);void output(STUDENT *s) /输出函数 int i; FILE*fp; if(fp=fopen(stu.dat,rb)=NULL) printf(Cannot open file!); exit(0); printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); for(i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) printf( %-7d,s

11、i.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); printf(%7.1f ,puter); printf(%7.1f ,si.total); printf(%7.1fn,si.average); void save() /*保存到磁盘上*/ FILE *fp; STUDENT*s; fp=fopen(stu.dat,wb); int i; fo

12、r (i=0;iN;i+) fwrite(&si,sizeof(STUDENT),1,fp); fclose(fp);void read(STUDENT *s,int size) /*从磁盘内读取*/ FILE *fp; fp=fopen(stu.dat,rb); int i; for (i=0;iN;i+) fread(&si,sizeof(STUDENT),1,fp); fclose(fp); void find(STUDENT *s,int size) /按姓名查找 int i,flag=0; char c20; FILE *fp; fp=fopen(stu.dat,rb); print

13、f(输入要查询学生的姓名为:n); scanf(%s,c); printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); for (i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) if(strcmp(si.name,c)=0) printf( %-7d,si.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.ch

14、inese); printf(%7.1f ,puter); printf(%7.1f ,si.total); printf(%7.1fn,si.average);flag=1; if(flag=0)printf(输入有误!); fclose(fp); void sort_by_num(STUDENT *s,int size) /按学号排序int i,j,n=0; STUDENT t; FILE *fp; fp=fopen(stu.dat,rb); for (i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) n+; for(i=0;in-1;i+) for (j

15、=i+1;jsj.num) t=si; si=sj; sj=t; printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); for(i=0;in;i+) printf( %-7d,si.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); printf(%7.1f ,puter); printf(%7.1f ,si.total);

16、 printf(%7.1fn,si.average); fp=fopen(stu.dat,wb); for(i=0;in;i+) fwrite(&si,sizeof(STUDENT),1,fp); fclose(fp);void sort_by_total(STUDENT *s,int size) /按总分排序函数int i,j,n=0; STUDENT t; FILE *fp; fp=fopen(stu.dat,rb); for (i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) n+; for(i=0;in-1;i+) for (j=i+1;jn;j+)

17、if (si.totalsj.total) t=si; si=sj; sj=t; printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); for(i=0;in;i+) printf( %-7d,si.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); printf(%7.1f ,puter); printf(%7.1f ,si

18、.total); printf(%7.1fn,si.average); fp=fopen(stu.dat,wb); for(i=0;in;i+) fwrite(&si,sizeof(STUDENT),1,fp); fclose(fp);void del(STUDENT *s,int size) /按学号删除函数 int i,n; int num; int flag=0; int total=0,m=0; FILE *fp; fp=fopen(stu.dat,rb); printf(请输入要删除的学生学号:n); scanf(%d,&num); for (i=0;fread(&si,sizeof

19、(STUDENT),1,fp)=1;i+) total+; for(i=0;itotal;i+) if(num=si.num)flag=1; printf(tt要删除学生的信息); printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); printf( %-7d,si.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); pri

20、ntf(%7.1f ,puter); printf(%7.1f ,si.total); printf(%7.1fn,si.average); for(i=i;itotal;i+) si=si+1; if(fp=fopen(stu.dat,wb)=NULL) printf(Cannot open file!); exit(0); for(i=0;itotal-1;i+) fwrite(&si,sizeof(STUDENT),1,fp); fclose(fp); printf(tt删除后的情况n); printf(学号 姓名 数学 英语 语文 计算机 总分 平均n); fp=fopen(stu.d

21、at,rb); for (i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) m+; for(i=0;im;i+) printf(%-12d,si.num); printf(%-11s,si.name); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); printf(%7.1f ,puter); printf(%7.1f ,si.total); printf(%7.1fn,si.average); if(flag=0) printf(*); printf

22、(输入错误!n); printf(请返回!n); printf(*); printf(nnn); fclose(fp);void insert(STUDENT *s,int size) /按学号插入 int i,n=0; int total=0; FILE *fp; fp=fopen(stu.dat,ab); rewind(fp); for(i=0;fread(&si,sizeof(STUDENT),1,fp)=1;i+) printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); printf( %-7d%-6s%-6s%-4s%7.1f%7.1f%7.1f%7.1f%

23、7.1f%7.1fn,si.num,si.sex,si.age,si.maths,si.english,si.chinese,puter,si.total,si.average); total=i; printf(请输入要插入学生的学号: n); scanf(%d,&ssize.num); printf(输入姓名:n); scanf(%s,ssize.name); printf(输入性别:n); scanf(%s,ssize.sex); printf(输入年龄:n); scanf(%d,&ssize.age); printf(输入数学成绩:n); scanf(%lf,&ssize.maths)

24、; printf(输入英语成绩:n); scanf(%lf,&ssize.english); printf(输入语文成绩:n); scanf(%lf,&ssize.chinese); printf(输入计算机成绩:n); scanf(%lf,&puter); ssize.total=ssize.maths+ssize.chinese+ssize.english+puter; ssize.average=ssize.total/4.0; fwrite(&ssize,sizeof(STUDENT),1,fp); fclose(fp); /while(!feof(fp) / if(fread(&sn

25、,sizeof(STUDENT),1,fp) / n+; /* printf(学号 姓名 性别 年龄 数学 英语 语文 计算机 总分 平均n); for(i=0;isize+1;i+) printf( %-7d,si.num); printf(%-6s,si.name); printf(%-6s,si.sex); printf(%-4d,si.age); printf(%7.1f ,si.maths); printf(%7.1f ,si.english); printf(%7.1f ,si.chinese); printf(%7.1f ,puter); printf(%7.1f ,si.total); printf(%7.1fn,si.average); */ void main() /主函数 STUDENT stdN; /定义结构体数组 int m; while(1) /循环保证多次应用 switch(menu() /运用菜单函数 case 1: printf(请输入你要登记的人数:n); scanf(%d,&m); input(std,m);system(pause);break; case 2:insert(std,N);syste

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

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