




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆科技学院C语言课程设计设计报告1 需求分析1.1 问题描述首先理解几个定义。结构体:C语言允许用户自己建立由不同类型数据组成的组合型的数据结构。struct student /结构体int num;char name20;float score1;float score2;float score3;float average;float sum;studentNUM;用函数实现模块化程序设计:在C语言中,为了简化主函数,使阅读和维护程序变得简单,可以事先编好一批主函数中需要用到的函数,然后再直接调用到主函数中就能得到预期的结果。对文件的输入输出:将输入的数据保存到磁盘中的指定文件夹,在需要时再利用指针将其调出使用。循环结构:(1)用dowhile语句实现循环 (2)用for语句实现循环do 语句;while(表达式);for(循环变量赋初值;循环条件;循环变量增值)语句;1.2 基本要求和目的1、整个系统均用C语言实现;2、利用结构体数组来实现学生成绩的数据结构设计;3、系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能;4、系统的各个功能模块都用函数的形式来实现;5、要求能将学生成绩信息保存在文件中;6、要求能从文件中读取学生信息并进行相关处理。2 总体设计2.1学生成绩管理系统的设计用C语言设计出一个具有能够在进入程序后进行多条记录的输入并保存(输入);完成全部学生或满足指定条件记录的显示(显示);完成按姓名查找学生记录并显示(查找);按学生平均成绩排名(排序);任意插入和修改学生记录(插入);将学生记录保存在自定义的文件中(保存);将保存在文件中的学生记录读取出来(读取)的,并能够用一个文本菜单来调用各个功能的程序。int main() /主函数int a;do printf(tt *欢迎使用学生管理系统*n); printf(nn*输入相应的数字选择需要的功能*nn); printf(tttt1.输入学生信息n); printf(tttt2.显示已输入学生信息n); printf(tttt3.查询学生信息n); printf(tttt4.按总成绩排名n); printf(tttt5.删除学生信息n); printf(tttt6.插入学生信息n); printf(tttt7.修改信息n); printf(tttt8.退出nn); printf( * ); scanf(%d,&a); switch(a) case 1:system(cls); shuru();break; case 2:system(cls); xianshi();break; case 3:system(cls);chaxun();break; case 4:system(cls); paixu();break; case 5:system(cls);shanchu();break; case 6:system(cls);charu();break; case 7:system(cls);xiugai();break; case 8:system(exit);exit(0); while(1);2.2 结构框架图下图是算法结构框架图。Y/N插入并保存学生信息修改学生信息退出学生成绩管理系统Y/N按学生总成绩对学生进行排名删除已保存的学生的信息通过姓名查询学生信息显示以保存学生成绩信息输入并保存学生成绩信息主菜单 YYNN结束程序 图 2.1 系统结构框架图3. 详细设计3.1 结构体的定义利用结构体将不同数据类型的学生信息囊括到一个结构体数组中,以便于对学生不同信息输入与查询。struct student /结构体int num; /学号char name20; /姓名float score1;/语文成绩float score2;/数学成绩float score3;/英语成绩float average;/平均成绩float sum; /总成绩studentNUM;3.2 不同功能函数的定义 单独编码不同功能的函数,在主函数需要的时候调用,不仅能简化主函数,还能方便后面对主函数的修改和维护。void shuru();/输入函数void xianshi();/显示函数void chaxun();/查询函数void paixu();/排序函数void shanchu();/删除函数void baocun();/保存函数void charu();/插入函数void xiugai();/修改函数void average();/求平均值函数3.3 主菜单的设计设计一个可以选着执行主函数的选着菜单,是操作者能够方便快捷的选择执行需要的操作。int main() /主函数int a;do /do.while循环结构 printf(tt *欢迎使用学生管理系统*n); printf(nn*输入相应的数字选择需要的功能*nn);printf(tttt1.输入学生信息n);printf(tttt2.显示已输入学生信息n);printf(tttt3.查询学生信息n); printf(tttt4.按总成绩排名n);printf(tttt5.删除学生信息n);printf(tttt6.插入学生信息n);printf(tttt7.修改信息n);printf(tttt8.退出nn);printf(* ); scanf(%d,&a); switch(a) /选择菜单 case 1:system(cls); shuru();break; case 2:system(cls); xianshi();break; case 3:system(cls);chaxun();break; case 4:system(cls); paixu();break; case 5:system(cls);shanchu();break; case 6:system(cls);charu();break; case 7:system(cls);xiugai();break;case 8:system(exit);exit(0); while(1); /表示一个无限循环Scanf(“%d”,a);Printf(“选择想要执行的功能”);startWhile(1);178End1、输入 2、显示 3、查询 4、排序 5、删除 6、插入 7、修改图 3.1 主菜单流程图3.4 保存功能的实现在C语言中程序中,对文件读写之前应该利用指针“打开”指定的文件夹,然后再在打开的文件夹中进行读写,已达到对文件的保存和调用功能,在使用结束后应该利用指针“关闭”该文件夹。void baocun() /保存 FILE*fp /定义一个指向文件的指针变量int j;if(fp=fopen(stu.dat,w)=NULL) /打开输出文件夹并使fp指向此文件printf(打开数据出错!n);return;for(j=0;jNUM;j+)if(fwrite(&studentj,sizeof(struct student),1,fp)!=1)/存入数据printf(file write error!n);fclose(fp);/关闭文件夹Startfp=nullYNPrint(“打开数据出错”);End保存输入的内容图 3.2 保存数据流程图3.5 对输入数据进行排序 定义一个空的结构体数组来存放数据,实现两两之间的比较,再结合循环结构实现多个数据的比较并按照规定法则对数据进行排序。 void paixu() /排序struct student temp;int j,k,l;for(j=0;jnumber-1;j+)l=j;for(k=j+1;kstudentl.average)l=k;temp=studentl;studentl=studentj;studentj=temp;for(j=0;jnumber;j+) printf(学号:%d姓名:%st语文:%3.1ft数学:%3.1ft英语:%3.1ft平均分:%3.1fn,studentj.num,,studentj.score1,studentj.score2,studentj.score3,studentj.average); printf(n);Start对两个数据进行比较,并按照规定法则交换内容Knumber显示End图 3.3 排序流程图4. 试验结果4.1 进入学生成绩管理系统建立学生数据 图 4.1 主菜单界面选择 1 输入并保存读入的学生成绩信息(a)(b)图 4.2 输入信息界面选择 2 显示已输入学生的信息图 4.3 显示界面选择 3 查询想要了解的学生的信息(a)(b)图 4.4 查询界面选择 6 中途插入部分学生的信息(a)(b)图 4.5 插入信息界面选择 4 对学生进行排名图 4.6 排序界面选择 5 删除学生信息(a)(b)图 4.7 删除界面选择 7 修改学生信息(a)(b)图 4.8 修改信息界面选择 8 退出学生成绩管理系统图 4.9 退出界面致 谢经过二周的课程设计,我顺利完成了学生成绩管理系统。这次课程设计的顺利完成,要感谢指导老师耐心辅导,是她给我指出并纠正错误,才让我走出困惑,克服了许多困难,理清了思路。我还要感谢全班同学对我的帮助,他们的支持、鼓励和催促,是我编写程序的强大动力。同时他们还提出了许多宝贵的意见和建议,他们所提出的问题,许多都成为了这个程序的重点。最后我还要感谢室友们的支持和帮助,让我少走了很多弯路,顺利的完成了课程设计。再次感谢!参考文献:1.谭浩强,C程序设计(第3版),清华大学出版社, 2005.22.谭明金,俞海英,C语言程序设计实例精粹,电子工业出版社,2007.1附 录#includestdio.h#includestdlib.h#includestring.h#define NUM 1000struct student /结构体int num;char name20;float score1;float score2;float score3;float average;float sum;studentNUM;void shuru();void xianshi();void chaxun();void paixu();void shanchu();void baocun();void charu();void xiugai();void average();number=0;int main() /主函数int a;do printf(tt *欢迎使用学生管理系统*n); printf(nn*输入相应的数字选择需要的功能*nn); printf(tttt1.输入学生信息n); printf(tttt2.显示已输入学生信息n); printf(tttt3.查询学生信息n); printf(tttt4.按总成绩排名n); printf(tttt5.删除学生信息n); printf(tttt6.插入学生信息n); printf(tttt7.修改信息n); printf(tttt8.退出nn); printf( * ); scanf(%d,&a); switch(a) case 1:system(cls); shuru();break; case 2:system(cls); xianshi();break; case 3:system(cls);chaxun();break; case 4:system(cls); paixu();break; case 5:system(cls);shanchu();break; case 6:system(cls);charu();break; case 7:system(cls);xiugai();break; case 8:system(exit);exit(0); while(1);void shuru() /输入char ch,ch1;int k=0;doprintf(请输入第%d个学生的学号、姓名、语文成绩、数学成绩、英语成绩:n,k+1);scanf(%d%s%f%f%f,&studentk.num,&,&studentk.score1,&studentk.score2,&studentk.score3); printf(操作成功.);average();baocun();k+;number=k;printf(是否继续输入?(Y/N)n);ch=getchar();ch1=getchar();while(ch1!=n&ch1!=N);void xianshi() /显示 int i; FILE*fp;if(fp=fopen(stu.dat,r)=NULL)printf(打开数据出错!n);exit(0); for(i=0;inumber;i+) fread(&studenti,sizeof(struct student),1,fp); printf(学号:%d姓名:%st语文:%3.1ft数学:%3.1ft英语:%3.1ft平均分:%3.1fn,studenti.num,,studenti.score1,studenti.score2,studenti.score3,studenti.average);fclose(fp);void baocun() /保存 FILE*fp;int j;if(fp=fopen(stu.dat,w)=NULL)printf(打开数据出错!n);return;for(j=0;jNUM;j+)if(fwrite(&studentj,sizeof(struct student),1,fp)!=1)printf(file write error!n);fclose(fp);void chaxun() /查询 int j;char str20;printf(请输入需要查询的学生的姓名:n);scanf(%s,str);for(j=0;jNUM;j+)if(!strcmp(,str) printf(学号:%d姓名:%st语文:%3.1ft数学:%3.1ft英语:%3.1ft平均分:%3.1fn,studentj.num,,studentj.score1,studentj.score2,studentj.score3,studentj.average); printf(n);void paixu() /排序struct student temp;int j,k,l;for(j=0;jnumber-1;j+)l=j;for(k=j+1;kstudentl.average)l=k;temp=studentl;studentl=studentj;studentj=temp;for(j=0;jnumber;j+) printf(学号:%d姓名:%st语文:%3.1ft数学:%3.1ft英语:%3.1ft平均分:%3.1fn,studentj.num,,studentj.score1,studentj.score2,studentj.score3,studentj.average); printf(n);void average() /平均值int j;for(j=0;jnumber+1;j+)studentj.sum=studentj.score1+studentj.score2+studentj.score3;studentj.average=studentj.sum/3;void shanchu() /删除int inum; int k,j; printf(输入要删除学生的学号:); scanf(%d,&inum); for(k=0;knumber;k+) if(studentk.num=inum) if(k=number)number-=1; else for(j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不正当竞争行为的法律后果
- 算法交易对股市的影响研究
- 2025年编程原理试题及答案
- 奇葩语文拼音题目及答案
- 七年级数学下试卷及答案
- 2025年善意的谎言辩论反方资料
- CN222980409U 一种抗跌落型继电器 (四川宏发电声有限公司)
- CN120248362A 一种多孔配位聚合物及其制备方法与其在c3h6-c3h8混合气分离中的应用 (同济大学)
- 2025年职测题库及答案
- UPS服务安全培训课件
- 630KVA箱变安装工程施工设计方案
- DBJ51T 195-2022 四川省纵向增强体心墙土石坝技术规程
- 农家乐大学生创业计划书
- 《马克思生平故事》课件
- 主动脉夹层临床医学专业教学系列课件讲解
- 天津市河北区2024-2025学年九年级上学期12月月考数学试题(含答案)
- 内墙刮大白分包合同模板2025年
- 甘肃省行政执法人员综合法律知识考试试题库
- 个人资本注入公司合作合同
- GB/T 44739-2024枸杞及其制品中枸杞多糖的测定离子色谱法
- 2015锅炉压力管道安装质量手册程序文件及安装工艺汇编
评论
0/150
提交评论