C语言课程设计试验报告_第1页
C语言课程设计试验报告_第2页
C语言课程设计试验报告_第3页
C语言课程设计试验报告_第4页
C语言课程设计试验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言课程设计实验报告院系:通信工程学院班级:09级16班姓名:马萧学号:52091601实验题目:学牛成绩管理系统实验要求一、题目目的利用 TURBOC2.0 实现学生成绩管理系统的录入、查询、删除、统计等基本操作。进一 步巩固 C 语言的学习,以提高学生对开发环境的进一步认识和综合编程能力。二、需要处理的基础数据学生基本信息:学号(例如 2003 级 12 班 6 号写作 20031206 )、姓名、性别、年龄、课 程名称(外语 SCORE0 、高数 SCORE1 、C 语言 SCORE2 、马哲 SCORE3 )、考试成绩 等。三、系统功能1学生基本情况录入。2允许对已经录入的数据进行显

2、示。3允许进行数据的插入。4删除基本数据的相关信息。 5基于姓名的查询。如:姓张的所有同学。6基于各种基本数据的统计计算。如: 统计每个学生各门功课的平均成绩, 并按平均成绩从高到低的次序排名输出每个学生 各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩) 。 列出 90分以上(包括 90)、80分以上(包括 80)、70 分以上(包括 70)、 60分以上 (包括 60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。 统计并输出各门功课的平均成绩和总平均成绩。四、任务说明1查找相关函数、编写数据结构、算法、代码等,2完成菜单以及插入、删除记录过程;菜单的样板

3、模式为:" 1. Enter list"" 2. Delete a record from list"" 3. print list "" 4. Search record on name"" 5. Save the file"" 6. Load the file"" 7. compute the score"" 8. insert record to list "8 学时;(周一) 周二)输入记录 从表中删除记录 显示链表中所有记录

4、按照姓名查找记录 将链表中记录保存到文件中 从文件中读入记录 计算所有学生的总分和均分 插入记录到表中" 9. Quit"退出3完成查找、显示记录; (周三) 4完成保存数据到文件和从文件读数据的过程;(周四)5完成学生的总分和均分的计算; (周五)五、要求1只能使用 C 语言,源程序要有适当的注释,使程序容易阅读。 2要有用户界面。要求至少采用文本菜单界面;鼓励采用图形菜单界面。3必须使用结构和链表等数据结构。 4使用文件保存数据。5写实验报告(要求正规打印, A4 幅面),内容包括: 题目 系统功能模块结构图 数据结构设计及用法说明 程序结构(画流程图)各模块的功能 实

5、验结果(包括输入数据和输出结果) 体会附录:程序清单及源程序软盘 6凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩并向学院报告。凡发 现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩并向学院报告。系统功能模块一.菜单数据结构设计与用法说明system menu- |1 inport list12. Delete lisi| 3. print listSearch by name15. search by num16. Saue11. LoadI 8. compute the score | 9. insert 1isi!1Q. Quitwhat do you want

6、to do,please inport the num:本程序分为10个功能,在菜单上都有显示。输入你想进行操作的数 字号进入不同功能。二.输入功能ilLI?hal do you want to do,please inport 十h巳 num;1 inport the num: inport the nane:axinport the sex:mr?f IIIIainport2 lease core core core core o youthe age1234inport:99:99:99:99 wani toihe k scores匚ontinue,vn?:当输入1时为输入数据功能,按照

7、要求即可输入数据,最后会问你是 否要继续,当输入“y”时会重复上述操作,当输入“n”时返回菜单。 三.删除功能。khunt do you w日ntto do,pleaseinpar t thenun: 2Pledge inport theno youNdlltto delete:1NunNonesclsc2sc3setSumfiveOrder1man99999999396.GO0O9O99.090Arc you sure y/n7当输入2时,为删除功能,按照要求输入学号,会把该生打印出来,但你再输入“y”时会删除该生档案,当输入“n”会取消该删除操作四. 输出功能內hat do you via

8、nt to do, please inport the num: 3 those are what you want.NO: Num: Name: sex: age: Scl: S匸2: Sc3: Set: Sum: five:Order:11 max f 22 9999 9999396,00 99.00 0that is all.当输入3时为输出功能,会把所有档案都打印出来五. 通过名字搜索Please inport the name.naxNum: Name: sex: age: Scl: Sc2: Sc3: Set: Sum: Rue: Order:1 max f 2299 99 99

9、99396.00 99.000当输入4时为通过名字搜索功能,按照要求输入名字即可查到该生成 绩。六. 通过学号搜索Please inport the num.uin: Name: sex: age: Scl: Sc2: Sc3: Sc4: Sum: Aue: Order:1 max f 2299 99 99 99396.00 99.000当输入5时为通过学号搜索功能,按照要求输入学号即可查到该生成七. 存储功能what do you want to do,please inport th巳 num:6 c:ddinport outfile nameu-for example c:scorec:

10、scoreSave the file!当输入6时为存储功能,输入要存储的地方即可完成存储。八. 读取功能。do you 咄日nt to do .please inport the num: 1 p:score inport file's name,for example c:x匚o厂e p:scorevie are Loading the file/ou have read the file当输入7是为读取功能,即可再次使用存储的档案九. 运算功能do you want to do,please inpo广t the num:8 The order:1no.;1 nane:max se

11、x:f age:22 score:scl:99 sc2:99 sc3:99 set:99 She sum:396.00 ave:99,00当输入8为运算功能,即可完成一系列要求的数据并打印。十.插入功能III,hat do you want to do,please inport ihe num:9 nportthenum:nport theinport theIIname:sex:mf?npor t2 lease core core core corethe age:123 4inport the 4 scores:98:98:98:98o you uanf to watch the det

12、ail of score, inpor t yes(1) or no(2):IIplease input '90 80 70 60' to choice the ledve+90 those students are over 90 or 90.no:1 none:maxsex:f age:22score:scl:99 sc2:99 sc3i99 sci:99those 骂tudents didn't pass the exam.当输入9时为插入功能,按照要求即可完成插入档案 十一° 离开。当输入十时为离开功能,即可返回。程序源代码#include <s

13、tdio.h>#include <stdlib.h>#include <string.h>#define LEN sizeof(STUDENT)#define paixu 10typedef struct s1char no9;char name15;char sex;int age;int score4;float sum;float average;int order;struct s1 *next;STUDENT;static int a=0;STUDENT *head;STUDENT *inport()int i,s;char y='y'S

14、TUDENT *head=NULL,*p;while(y='y')p=(STUDENT *)malloc(LEN);if(!p)printf("Out of memory.");return (head);printf("inport the num:n");scanf("%s",p->no);printf("inport the name:n"); scanf("%s",p->name);printf("inport the sex:mf?n")

15、;scanf("%c",&p->sex);scanf("%c",&p->sex); while(p->sex!='f'&&p->sex!='m') printf("please inport againn");scanf("%c",&p->sex); scanf("%c",&p->sex); printf("inport the age:n"); scanf(&

16、quot;%d",&p->age);if(p->age<0|p->age>100)printf("error,please inport again.n"); scanf("%d",&p->age);while(p->age<0 | p->age>100);printf("Please inport the %d scoresn",4);s=0;for(i=0;i<4;i+)doprintf("score %d :",i+1

17、); scanf("%d",&p->scorei); if(p->scorei<0 | p->scorei>100) printf("Data error,please enter again.n");while(p->scorei<0 | p->scorei>100); s=s+p->scorei;p->sum=(float)s;p->average=(float)s/4;p->order=0;p->next=head;head=p;printf("d

18、o you want to continue,yn?:n"); scanf("%c",&y);scanf("%c",&y); return(head);void print(STUDENT *head)int i=0;STUDENT *p;p=head;printf("nthose are what you want.n");printf("NO: Num: Name: sex: age: Sc1: Sc2: Sc3: Sc4: Sum: Ave:Order:n"); while(p!=N

19、ULL)i+;printf("%3d %4s %-4s %3c %3d %3d %3d %3d %3d %4.2f %4.2f %-5dn", i,p->no,p->name,p->sex,p->age,p->score0,p->score1,p->score2,p->score3, p->sum,p->average,p->order);p=p->next;printf("that is all.n");a=i;void searchname(STUDENT *head)STUDE

20、NT *p;char s5; system("cls");printf(" Please inport the name.n"); scanf("%s",s);p=head;printf("Num: Name: sex: age: Sc1: Sc2: Sc3: Sc4: Sum: Ave: Order:n"); while(p!=NULL)if(strcmp(p->name,s)&&p!=NULL) p=p->next;else printf("%4s %-4s %3c %3d

21、 %3d %3d %3d %3d %4.2f %4.2f %-5dn",p->no,p->name,p->sex,p->age,p->score0,p->score1,p->score2,p->score3, p->sum,p->average,p->order);p=p->next;void searchnum(STUDENT *head)STUDENT *p;char s9;system("cls");printf(" Please inport the num.n")

22、;scanf("%s",s);p=head;printf("Num: Name: sex: age: Sc1: Sc2: Sc3: Sc4: Sum: Ave: Order:n");while(p!=NULL)if(strcmp(p->no,s)&&p!=NULL)p=p->next;else printf("%4s %-4s %3c %3d %3d %3d %3d %3d %4.2f %4.2f %-5dn", p->no,p->name,p->sex,p->age,p->s

23、core0,p->score1,p->score2,p->score3, p->sum,p->average,p->order);p=p->next;void save(STUDENT *head)FILE *fp;STUDENT *p;char outfile10;printf("c:inport outfile name £? for example c:scoren");scanf("%s",outfile);if(fp=fopen(outfile,"w")=NULL)prin

24、tf("Cannot open the filen");return;p=head;while(p!=NULL)fwrite(p,LEN,1,fp);p=p->next; fclose(fp); printf("Save the file!n");void compute_the_score(STUDENT *head)int i,j,m,z,w,k=0;float thesum=0;STUDENT *rpaixu;STUDENT *p0,*p ;p0=head;while(p0!=NULL)rk+=p0;p0=p0->next;m=k;rk

25、=NULL;for(i=0;i<m-1;i+)for(j=0;j<m-1-i;j+)if(*rj).sum<(*rj+1).sum)p=rj;rj=rj+1;rj+1=p;for(i=0,j=1;i<m;i+)(*ri).order=j+;for(i=0;i<m;i+)printf("The order:%dn",(*ri).order);printf("no.:%s name:%s sex:%c age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).age);printf("s

26、core:sc1:%d sc2:%d sc3:%d sc4:%d n",(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3);printf("the sum:%4.2f ave:%4.2f nnn",(*ri).sum,(*ri).average);printf("Do you want to watch the detail of score.inport yes(1) or no(2):n"); scanf("%d",&z);if(z=1)printf(&quo

27、t;please input '90 80 70 60' to choice the leave.");scanf("%d",&w);if(w=90)printf("nnthose students are over 90 or 90.n");for(i=0;i<m;i+)if(*ri).average>=90) printf("no:%s name:%s age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).age);printf("scor

28、e:sc1:%d sc2:%d sc3:%d n",(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3); if(w=80)printf("nnthose students are over 80 or 80n");for(i=0;i<m;i+)if(*ri).average>=80) printf("no:%s name:%s age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).age);printf("score:sc1:%d s

29、c2:%d sc3:%d n",(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3);if(w=70)printf("nnthose students are over 70 or 70n");for(i=0;i<m;i+)if(*ri).average>=70) printf("no:%s name:%s age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).age);printf("score:sc1:%d sc2:%d sc3:%

30、d n",(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3); if(w=60)printf("nnthose students are over 60 or 60n");for(i=0;i<m;i+)if(*ri).average>=60) printf("no:%s name:%s age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).age);printf("score:sc1:%d sc2:%d sc3:%d n",

31、(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3);printf("nnthose students didn't pass the exam.'n");sex:%csc4:%dsex:%csc4:%dsex:%csc4:%dsex:%csc4:%dfor(i=0;i<m;i+)if(*ri).average<60)sex:%csc4:%d printf("no:%s name:%s age:%dn",(*ri).no,(*ri).name,(*ri).sex,(*ri).

32、age);printf("score:sc1:%d sc2:%d sc3:%d n",(*ri).score0,(*ri).score1,(*ri).score2,(*ri).score3);STUDENT *delete_data(STUDENT *head)STUDENT *p1,*p2;char c,s9; printf("Please inport the no you want to delete: "); scanf("%s",s);p1=p2=head; while(strcmp(p1->no,s)&&am

33、p;p1!=NULL)p2=p1;p1=p1->next; if(strcmp(p1->no,s)=0)printf(" Num Name sc1 sc2 sc3 sc4 Sum Ave Order n");printf(" %4s %4s %3d %3d %3d %3d %3f %4.2f %-5d n",p1->no,p1->name,p1->score0,p1->score1,p1->score2,p1->score3,p1->s um,p1->average,p1->order);

34、printf("Are you sure y/n ?");while(1)scanf("%c",&c);if(c='n'|c='N') break;if(c='y'|c='Y') if(p1=head) head=p1->next;elsep2->next=p1->next;printf("%s the student have been Deleted.n",s);break;if(p1=NULL)printf("There is n

35、o num student on the list.n"); return(head);STUDENT *Insert(STUDENT *head,STUDENT *New)STUDENT *p0,*p1,*p2;int sum1,i,s;p1=head;p0=New;sum1=0;printf("inport the num:n");scanf("%s",New->no);printf("inport the name:n"); scanf("%s",New->name);printf(&q

36、uot;inport the sex:mf?n");scanf("%c",&New->sex);scanf("%c",&New->sex); while(New->sex!='f'&&New->sex!='m') printf("please inport againn");scanf("%c",&New->sex); scanf("%c",&New->sex); pri

37、ntf("inport the age:n"); scanf("%d",&New->age); if(New->age<0|New->age>100) printf("error,please inport again.n"); scanf("%d",&New->age);while(New->age<0 | New->age>100); printf("Please inport the %d scoresn",4);

38、 s=0;for(i=0;i<4;i+)doprintf("score %d :",i+1); scanf("%d",&New->scorei); if(New->scorei<0 | New->scorei>100) printf("error,please inport again.n");while(New->scorei<0 | New->scorei>100); s=s+New->scorei;New->sum=(float)s;New->

39、average=(float)s/4;New->order=0;if(head=NULL)head=p0;p0->next=NULL;elsewhile(p0->average<p1->average)&&(p1->next!=NULL) p2=p1; p1=p1->next;if(p0->average>=p1->average)if(head=p1)head=p0;else p2->next=p0;p0->next=p1;elsep1->next=p0;p0->next=NULL;a=a+1

40、;printf("n the student %s have been inserted.n",New->name); return(head);STUDENT *load()STUDENT *p1,*p2,*head=NULL;FILE *fp;char infile10;printf("c:score inport file's name,for example c:scoren");scanf("%s",infile);if(fp=fopen(infile,"r")=NULL)printf(&q

41、uot;Can not open the file.n");return(head);printf("n we are Loading the filen"); p1=(STUDENT *)malloc(LEN);if(!p1)printf("Out of memoryn");return(head);head=p1;while(!feof(fp)if(fread(p1,LEN,1,fp)!=1) break; p1->next=(STUDENT *)malloc(LEN);if(!p1->next)printf("Out

42、 of memoryn");return (head);p2=p1;p1=p1->next;p2->next=NULL;fclose(fp);printf("nYou have read the filen");return (head);int main()STUDENT *head,New;STUDENT *inport();STUDENT *delete_data();void save();STUDENT *load();int n;while(1)printf("tttsystem menun");printf("ttt%sn","|1. inport list|");printf("ttt%sn","|2. Delete list|");printf("ttt%sn","|3. print list|");printf("ttt%sn","|4. Search by name|");printf("ttt%sn",

温馨提示

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

评论

0/150

提交评论