C语言课程设计实验报告成绩记录簿_第1页
C语言课程设计实验报告成绩记录簿_第2页
C语言课程设计实验报告成绩记录簿_第3页
C语言课程设计实验报告成绩记录簿_第4页
C语言课程设计实验报告成绩记录簿_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

3、" #include "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("

4、t3修改学生资料ttttt4显示学生资料n"); printf("t5统计学生成绩ttttt6保存学生资料n"); printf("t7获取帮助信息ttttt0退出系统n"); printf("*n"); void printstart() printf("-n"); void Wrong() printf("n=>提示:输入错误!n"); void Nofind() printf("n=>提示:没有找到该学生!n"); void printc() /

5、本函数用于输出中文 printf(" 学号t 姓名 C语言成绩 n"); void printe(Node *p)/本函数用于输出英文 printf("%-12s%st%dt n",p->data.num,p->,p->data.cgrade); Node* Locate(Link l,char findmess,char nameornum) /该函数用于定位连表中符合要求的接点,并返回该指针 Node *r; if(strcmp(nameornum,"num")=0) /按学号查询 r=l-&g

6、t;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(r->,findmess)=0) return r; r=r->next; return 0; void Add(Link l) /增加学生 Node *p,*r,*s; char num10; r=l; s=l-&

7、gt;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",

8、num); printstart(); printc(); printe(s); printstart(); printf("n"); return; s=s->next; p=(Node *)malloc(sizeof(Node); strcpy(p->data.num,num); printf("请你输入姓名:"); scanf("%s",p->); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p-&g

9、t;data.cgrade); /信息输入已经完成 p->next=NULL; r->next=p; r=p; shoudsave=1; void Qur(Link l) /查询学生 int sel; char findmess20; Node *p; if(!l->next) printf("n=>提示:没有资料可以查询!n"); return; printf("n=>1按学号查找n=>2按姓名查找n"); scanf("%d",&sel); if(sel=1)/学号 printf(&qu

10、ot;请你输入要查找的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) printf("tttt查找结果n"); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /姓名 printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,&q

11、uot;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",f

12、indmess); p=Locate(l,findmess,"num"); if(p) printf("请你输入新学号(原来是%s):",p->data.num); scanf("%s",p->data.num); printf("请你输入新姓名(原来是%s):",p->); scanf("%s",p->); printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scan

13、f("%d",&p->data.cgrade); printf("n=>提示:资料修改成功!n"); shoudsave=1; else Nofind(); void Disp(Link l) int count=0; Node *p; p=l->next; if(!p) printf("n=>提示:没有资料可以显示!n"); return; printf("tttt显示结果n"); printstart(); printc(); printf("n"); whi

14、le(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.cgrade>=pc->data.cgrade) pc=r; r=r->next; printf("-统计结果-n");

15、 printf("c语言最高者:t%s %d分n",pc->,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(

16、Node),1,fp)=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,李权20

17、1140130106,刘进祎201140130226,褚璐201140130114n"); 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:

18、student","wb"); else exit(0); printf("n=>提示:文件已经翻开,正在导入记录.n"); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /将文件的内容放入接点中 p->next=NULL; r->next=p; r=p; /将该接点挂入连中 count+; fclose(fp); /关闭文件 printf("n=>提示:记录导入完毕,共导入%d条记录.n",co

19、unt); 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("n=>提示:你已经退出系统,再见!n"); break; switch(sel) case 1:Add(l);break; /增加学生 case 2:Qur(l);break;/查询学生 case 3:Modify(l);break;/修改学生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论