C语言课程设计实验报告.docx
- 文档编号:20980591
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:25
- 大小:99.71KB
C语言课程设计实验报告.docx
《C语言课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告.docx(25页珍藏版)》请在冰豆网上搜索。
C语言课程设计实验报告
C语言课程设计实验报告
院系:
通信工程学院
班级:
09级16班
******
学号:
52091601
实验题目:
学生成绩管理系统
实验要求
一、题目目的
利用TURBOC2.0实现学生成绩管理系统的录入、查询、删除、统计等基本操作。
进一步巩固C语言的学习,以提高学生对开发环境的进一步认识和综合编程能力。
二、需要处理的基础数据
学生基本信息:
学号(例如2003级12班6号写作********)、姓名、性别、年龄、课程名称(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])、考试成绩等。
三、系统功能
1.学生基本情况录入。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。
如:
姓张的所有同学。
6.基于各种基本数据的统计计算。
如:
统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。
统计并输出各门功课的平均成绩和总平均成绩。
四、任务说明
1.查找相关函数、编写数据结构、算法、代码等,8学时;(周一)
2.完成菜单以及插入、删除记录过程;(周二)
菜单的样板模式为:
"1.Enterlist"输入记录
"2.Deletearecordfromlist"从表中删除记录
"3.printlist"显示链表中所有记录
"4.Searchrecordonname"按照姓名查找记录
"5.Savethefile"将链表中记录保存到文件中
"6.Loadthefile"从文件中读入记录
"7.computethescore"计算所有学生的总分和均分
"8.insertrecordtolist"插入记录到表中
"9.Quit"退出
3.完成查找、显示记录;(周三)
4.完成保存数据到文件和从文件读数据的过程;(周四)
5.完成学生的总分和均分的计算;(周五)
五、要求
1.只能使用C语言,源程序要有适当的注释,使程序容易阅读。
2.要有用户界面。
要求至少采用文本菜单界面;鼓励采用图形菜单界面。
3.必须使用结构和链表等数据结构。
4.使用文件保存数据。
5.写实验报告(要求正规打印,A4幅面),内容包括:
题目
系统功能模块结构图
数据结构设计及用法说明
程序结构(画流程图)
各模块的功能
实验结果(包括输入数据和输出结果)
体会
附录:
程序清单及源程序软盘
6.凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩并向学院报告。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩并向学院报告。
系统功能模块
12345
678910
数据结构设计与用法说明
一.菜单。
本程序分为10个功能,在菜单上都有显示。
输入你想进行操作的数字号进入不同功能。
二.输入功能。
当输入1时为输入数据功能,按照要求即可输入数据,最后会问你是否要继续,当输入“y”时会重复上述操作,当输入“n”时返回菜单。
三.删除功能。
当输入2时,为删除功能,按照要求输入学号,会把该生打印出来,但你再输入“y”时会删除该生档案,当输入“n”会取消该删除操作。
四.输出功能。
当输入3时为输出功能,会把所有档案都打印出来。
五.通过名字搜索。
当输入4时为通过名字搜索功能,按照要求输入名字即可查到该生成绩。
六.通过学号搜索。
当输入5时为通过学号搜索功能,按照要求输入学号即可查到该生成绩。
七.存储功能。
当输入6时为存储功能,输入要存储的地方即可完成存储。
八.读取功能。
当输入7是为读取功能,即可再次使用存储的档案。
九.运算功能。
当输入8为运算功能,即可完成一系列要求的数据并打印。
十.插入功能。
当输入9时为插入功能,按照要求即可完成插入档案。
十一。
离开。
当输入十时为离开功能,即可返回。
程序源代码
#include
#include
#include
#defineLENsizeof(STUDENT)
#definepaixu10
typedefstructs1
{
charno[9];
charname[15];
charsex;
intage;
intscore[4];
floatsum;
floataverage;
intorder;
structs1*next;
}STUDENT;
staticinta=0;
STUDENT*head;
STUDENT*inport()
{
inti,s;
chary='y';
STUDENT*head=NULL,*p;
while(y=='y')
{
p=(STUDENT*)malloc(LEN);
if(!
p)
{
printf("Outofmemory.");
return(head);
}
printf("inportthenum:
\n");
scanf("%s",p->no);
printf("inportthename:
\n");
scanf("%s",p->name);
printf("inportthesex:
m\\f?
\n");
scanf("%c",&p->sex);
scanf("%c",&p->sex);
while(p->sex!
='f'&&p->sex!
='m')
{printf("pleaseinportagain\n");
scanf("%c",&p->sex);
scanf("%c",&p->sex);}
printf("inporttheage:
\n");
scanf("%d",&p->age);
if(p->age<0||p->age>100){
printf("error,pleaseinportagain.\n");
scanf("%d",&p->age);
}while(p->age<0||p->age>100);
printf("Pleaseinportthe%dscores\n",4);
s=0;
for(i=0;i<4;i++)
{
do
{
printf("score%d:
",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0||p->score[i]>100)
printf("Dataerror,pleaseenteragain.\n");
}while(p->score[i]<0||p->score[i]>100);
s=s+p->score[i];
}
p->sum=(float)s;
p->average=(float)s/4;
p->order=0;
p->next=head;
head=p;
printf("doyouwanttocontinue,y\\n?
:
\n");
scanf("%c",&y);
scanf("%c",&y);
}
return(head);
}
voidprint(STUDENT*head)
{
inti=0;
STUDENT*p;
p=head;
printf("\nthosearewhatyouwant.\n");
printf("NO:
Num:
Name:
sex:
age:
Sc1:
Sc2:
Sc3:
Sc4:
Sum:
Ave:
Order:
\n");
while(p!
=NULL)
{
i++;
printf("%3d%4s%-4s%3c%3d%3d%3d%3d%3d%4.2f%4.2f%-5d\n",
i,p->no,p->name,p->sex,p->age,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);
p=p->next;
}
printf("thatisall.\n");
a=i;
}
voidsearchname(STUDENT*head)
{
STUDENT*p;
chars[5];
system("cls");
printf("Pleaseinportthename.\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%3d%3d%3d%3d%4.2f%4.2f%-5d\n",
p->no,p->name,p->sex,p->age,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);
p=p->next;
}
}
}
voidsearchnum(STUDENT*head)
{
STUDENT*p;
chars[9];
system("cls");
printf("Pleaseinportthenum.\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->no,s)&&p!
=NULL)
p=p->next;
else{
printf("%4s%-4s%3c%3d%3d%3d%3d%3d%4.2f%4.2f%-5d\n",
p->no,p->name,p->sex,p->age,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);
p=p->next;
}
}
}
voidsave(STUDENT*head)
{
FILE*fp;
STUDENT*p;
charoutfile[10];
printf("c:
\\£¨inportoutfilename£©forexamplec:
\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w"))==NULL)
{
printf("Cannotopenthefile\n");
return;
}
p=head;
while(p!
=NULL)
{
fwrite(p,LEN,1,fp);
p=p->next;
}
fclose(fp);
printf("Savethefile!
\n");
}
voidcompute_the_score(STUDENT*head)
{
inti,j,m,z,w,k=0;
floatthesum=0;
STUDENT*r[paixu];
STUDENT*p0,*p;
p0=head;
while(p0!
=NULL)
{
r[k++]=p0;
p0=p0->next;
}
m=k;
r[k]=NULL;
for(i=0;i for(j=0;j if((*r[j]).sum<(*r[j+1]).sum) { p=r[j]; r[j]=r[j+1]; r[j+1]=p; } for(i=0,j=1;i { (*r[i]).order=j++; } for(i=0;i { printf("Theorder: %d\n",(*r[i]).order); printf("no.: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); printf("thesum: %4.2fave: %4.2f\n\n\n",(*r[i]).sum,(*r[i]).average); } printf("Doyouwanttowatchthedetailofscore.inportyes (1)orno (2): \n"); scanf("%d",&z); if(z==1){ printf("pleaseinput`90807060`tochoicetheleave."); scanf("%d",&w); if(w==90){printf("\n\nthosestudentsareover90or90.\n"); for(i=0;i { if((*r[i]).average>=90) {printf("no: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); } }} if(w==80){printf("\n\nthosestudentsareover80or80\n"); for(i=0;i { if((*r[i]).average>=80) {printf("no: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); } }} if(w==70){printf("\n\nthosestudentsareover70or70\n"); for(i=0;i { if((*r[i]).average>=70) {printf("no: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); } }} if(w==60){printf("\n\nthosestudentsareover60or60\n"); for(i=0;i { if((*r[i]).average>=60) {printf("no: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); } }} printf("\n\nthosestudentsdidn`tpasstheexam.\n"); for(i=0;i { if((*r[i]).average<60) {printf("no: %sname: %ssex: %cage: %d\n",(*r[i]).no,(*r[i]).name,(*r[i]).sex,(*r[i]).age); printf("score: sc1: %dsc2: %dsc3: %dsc4: %d\n",(*r[i]).score[0],(*r[i]).score[1],(*r[i]).score[2],(*r[i]).score[3]); } } } } STUDENT*delete_data(STUDENT*head) { STUDENT*p1,*p2; charc,s[9]; printf("Pleaseinportthenoyouwanttodelete: "); scanf("%s",s); p1=p2=head; while(strcmp(p1->no,s)&&p1! =NULL) { p2=p1; p1=p1->next; } if(strcmp(p1->no,s)==0) {printf("NumNamesc1sc2sc3sc4SumAveOrder\n"); printf("%4s%4s%3d%3d%3d%3d%3f%4.2f%-5d\n", p1->no,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->sum,p1->average,p1->order); printf("Areyousurey/n? "); while (1) { scanf("%c",&c); if(c=='n'||c=='N')break; if(c=='y'||c=='Y') { if(p1==head) head=p1->next; else p2->next=p1->next; printf("%sthestudenthavebeenDeleted.\n",s);break; } } } if(p1==NULL) printf("Thereisnonumstudentonthelist.\n"); return(head); } STUDENT*Insert(STUDENT*head,STUDENT*New) { STUDENT*p0,*p1,*p2; intsum1,i,s; p1=head; p0=New; sum1=0; printf("inportthenum: \n"); scanf("%s",New->no); printf("inportthename: \n"); scanf("%s",New->name); printf("inportthesex: m\\f? \n"); scanf("%c",&New->sex); scanf("%c",&New->sex); while(New->sex! ='f'&&New->sex! ='m') {printf("pleaseinportagain\n"); scanf("%c",&New->sex); scanf("%c",&New->sex);} printf("inporttheage: \n"); scanf("%d",&New->age); if(New->age<0||New->age>100){ printf("error,pleaseinportagain.\n"); scanf("%d",&New->age); }while(New->age<0||New->age>100); printf("Pleaseinportthe%dscores\n",4); s=0; for(i=0;i<4;i++) { do { printf("score%d: ",i+1); scanf("%d",&New->score[i]); if(New->score[i]<0||New->score[i]>100) printf("error,pleaseinportagain.\n"); }while(New->score[i]<0||New->score[i]>100); s=s+New->score[i]; } New->sum=(float)s; New->average=(float)s/4; New->order=0; if(head==NULL) { head=p0; p0->n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 实验 报告