版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. c语言课程设计报告题目:成绩记录簿学生姓名: 学生学号: 所在班级: 任课教师: 2012年6月19日目 录1.设计目的2.设计思路3.总体设计4.详细设计5.设计体会6附录(所写是运行程序的图片)一、设计目的要求:编制一个c语言成绩记录簿,每个学生信息包括:学号、姓名、c语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、6079、8089、90分以上各分数段的学生信息。、二、设计思路1.设计好算法,用流程图或者用自己简单
2、的想法,并记好记录。2.分别做好主函数,和需要用到的各个函数,参考我们的教材一点点的综合在一起。慢慢的从中学到技巧。3.将已学过的代码和学过的函数拼接起来,做好调试和改正。4.从新检查一遍,将没用的函数或者多余的步骤简化,提高运行速度。5.完成系统总结报告以及使用说明书。三、总体设计主模块学生成绩录入学生成绩显示学生成绩添加学生信息查询学生成绩删除学生信息统计推出程序添加学生信息删除学生信息修改学生信息按姓名查询按学号查询按学号修改按成绩修改60分以下人数6079 人数8089 人数90分以上 人数四、详细设计#include stdio.h #include stdlib.h #includ
3、e string.h int shoudsave=0; / struct student char num20;/学号 char name20; int cgrade; char neartime10;/最近更新时间 ; typedef struct node struct student data; struct node *next; node,*link; void menu() printf(*); printf(t1输入学生资料ttttt2查询学生资料n); printf(t3修改学生资料ttttt4显示学生资料n); printf(t5统计学生成绩ttttt6保存学生资料n); p
4、rintf(t7获取帮助信息ttttt0退出系统n); printf(*n); void printstart() printf(-n); void wrong() printf(n=提示:输入错误!n); void nofind() printf(n=提示:没有找到该学生!n); void printc() / 本函数用于输出中文 printf( 学号t 姓名 c语言成绩 n); void printe(node *p)/本函数用于输出英文 printf(%-12s%st%dt n,p-data.num,,p-data.cgrade); node* locate(lin
5、k l,char findmess,char nameornum) /该函数用于定位连表中符合要求的接点,并返回该指针 node *r; if(strcmp(nameornum,num)=0) /按学号查询 r=l-next; while(r!=null) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /按姓名查询 r=l-next; while(r!=null) if(strcmp(,findmess)=0) return r; r=r-ne
6、xt; return 0; void add(link l) /增加学生 node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=null) r=r-next; /将指针置于最末尾 while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:学号为%s的学生已经存在,若要修改请你选择4 修改!n,num); printstart(); printc
7、(); printe(s); printstart(); printf(n); return; s=s-next; p=(node *)malloc(sizeof(node); strcpy(p-data.num,num); printf(请你输入姓名:); scanf(%s,); getchar(); printf(请你输入c语言成绩:); scanf(%d,&p-data.cgrade); /信息输入已经完成 p-next=null; r-next=p; r=p; shoudsave=1; void qur(link l) /查询学生 int sel; char fi
8、ndmess20; node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按学号查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/学号 printf(请你输入要查找的学号:); scanf(%s,findmess); p=locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else nofind(); else if(sel=2) /姓名 print
9、f(请你输入要查找的姓名:); scanf(%s,findmess); p=locate(l,findmess,name); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else nofind(); else wrong(); void modify(link l) node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的学生学号:); scanf(%s,findmess);
10、p=locate(l,findmess,num); if(p) printf(请你输入新学号(原来是%s):,p-data.num); scanf(%s,p-data.num); printf(请你输入新姓名(原来是%s):,); scanf(%s,); printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); printf(n=提示:资料修改成功!n); shoudsave=1; else nofind(); void disp(link l) int count=0
11、; node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void tongji(link l) node *pc = l; /用于指向分数最高的接点 node *r=l-next; if(!r) printf(n=提示:没有资料可以统计!n); return ; while(r!=null) if(r-data.c
12、grade=pc-data.cgrade) pc=r; r=r-next; printf(-统计结果-n); printf(c语言最高者:t%s %d分n,,pc-data.cgrade); printstart(); void save(link l) file* fp; node *p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=null) printf(n=提示:重新打开文件时发生错误!n); exit(1); p=l-next; while(p) if(fwrite(p,sizeof(node),1,fp
13、)=1) p=p-next; count+; else flag=0; break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); shoudsave=0; fclose(fp); void main() link l;/连表 file *fp; /文件指针 int sel; char ch; char jian; int count=0; node *p,*r; printf(tttt学生成绩记录簿ntttt-计算机信息管理,张志坚(201140130207),李权(201140130106),刘进祎(201140130226),褚璐(
14、201140130114)n); l=(node*)malloc(sizeof(node); l-next=null; r=l; fp=fopen(c:student,rb); if(fp=null) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=y) fp=fopen(c:student,wb); else exit(0); printf(n=提示:文件已经打开,正在导入记录.n); while(!feof(fp) p=(node*)malloc(sizeof(node); if(fread(p,sizeof
15、(node),1,fp) /将文件的内容放入接点中 p-next=null; r-next=p; r=p; /将该接点挂入连中 count+; fclose(fp); /关闭文件 printf(n=提示:记录导入完毕,共导入%d条记录.n,count); while(1) menu(); printf(请你选择操作:); scanf(%d,&sel); if(sel=0) if(shoudsave=1) getchar(); printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=y) save(l); printf(
16、n=提示:你已经退出系统,再见!n); break; switch(sel) case 1:add(l);break; /增加学生 case 2:qur(l);break;/查询学生 case 3:modify(l);break;/修改学生 case 4:disp(l);break;/显示学生 case 5:tongji(l);break;/统计学生 case 6:save(l);break;/保存学生 case 7:printf(ttt=帮助信息=n);break; default: wrong();getchar();break; 五、设计体会通过这次的课程设计,增加了我对学习c语言和往后要学习c+的兴趣,虽然还不是真正的明白所有的c语言的子函数和里面的一些逻辑顺序,但我从c语言这门课程开始,已经发现程序设计的乐趣,在学习c语言的过程中也学到了许多计算机应用基础知识,对计算机的运行也有一个大体的了解。这次课程设计是老师给的给了范例题目,经过自己的查找,在网上的搜索,实现题目上的要求,先做出一些简单的函数和程序,一步步的在做出其它的内容,不过在实际操作过程中犯得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版风力发电场建设施工合同模板3篇
- 课题申报书:大学生学习成本认知的形成发展机制与干预策略研究
- 课题申报书:大数据支持城市内涝灾害治理的困境与多部门协同机制研究
- 2025版林业资源开发与林地承包经营权投资合同3篇
- 2024年财产贷款合同抵押版
- 2024年版股权转让合同模板及注意事项
- 2024年跨境电商服务平台合作协议
- 2024年离婚法律文件:合同书步骤详解版B版
- 2025年度二零二五版光伏发电项目投资回报及还款协议范本3篇
- 2025至2030年中国方形蛋糕软盒行业投资前景及策略咨询研究报告
- 新《安全生产法》解读PPT课件
- E车E拍行车记录仪说明书 - 图文-
- 人才梯队-继任计划-建设方案(珍贵)
- WLANAP日常操作维护规范
- 《健身气功》(选修)教学大纲
- 王家岩隧道工程地质勘察报告(总结)
- GE公司燃气轮机组支持轴承结构及性能分析
- 《昆明的雨》优质课一等奖(课堂PPT)
- 油气田地面建设工程ppt课件
- 电动蝶阀安装步骤说明
- 全自动电镀流水线操作说明书(共12页)
评论
0/150
提交评论