C语言程序设计基于链表格范例的学生成绩管理学习系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北科技学院计算机系综合性实验
实验报告
课程名称 C 语言程序设计
实验学期2011 至2012 学年第二学期
学生所在系部计算机系
年级2011 专业班级计算机科学与技术B-111
学生姓名学号
任课教师
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必定为打印稿(A4纸)。

页面空间不够,可以顺延。

2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、
内容、结果及解析等。

3、教师应该填写的内容包括:实验成绩、教师议论等。

4、教师依照本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合
性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。

综合性实验
中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。

任课教师一致
刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。

5、未尽事宜,请参照该课程的实验大纲和授课大纲。

《C语言程序设计》课程综合性实验报告
开课实验室:基础五2012 年7月6 日
实验题目基于链表的学生成绩管理系统
一、实验目的
1、掌握链表的创办、遍历显示和除去;
2、掌握链表数据的文件保存、读取;
二、设备与环境
微型计算机、VC++
三、实验内容
1、定义结构体,创办链表
structxsnode
{
intxh;
charxm[15];
intgs;
intyy;
intwl;
structxsnode*next;
};
2、依照以上链表结点结构,实现以下功能
、学生学号、姓名、各门成绩的录入;
、链表数据显示及除去;
、链表数据的文件保存与读取;
四、实验结果及解析
1、运行结果
主菜单
C语言程序设计基于链表格范例的学生成绩管理学习系统数据显示
2、源程序
主函数
voidmain()
{
intxz=0;
structxs*head;
head=init();
while(xz!=5)
{
menu();
scanf("%d",&xz);
switch(xz)
{
case1:
create(head);
break;
case2:
print(head);
break;
case3:
save(head);
break;
case4:
read(head);
break;
case5:
printf("\n
系统退出,
拜拜
!\n"); break;
default:
printf("\n
选择错误,请按任意键选择
!
\n
");
getch(); break;
}
}
fr(head);
free(head);
}
数据录入源代码
voidcreate(structxs*hd)
{
intxh,gs,yy,wl,i;
charxm[20];
structxs*p;
fr(hd);
printf("\n 请输入学生个数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("请输入%d个学生of%d\n",i+1,num); printf(" 学号:");
scanf("%d",&xh);
printf(" 姓名:");
scanf("%s",xm);
printf(" 高数:");
scanf("%d",&gs);
printf(" 英语:");
scanf("%d",&yy);
printf(" 物理:");
scanf("%d",&wl);
p=(structxs*)malloc(sizeof(structxs));
p->xh=xh;
strcpy(p->xm,xm);
p->gs=gs;
p->yy=yy;
p->wl=wl;
p->next=hd->next;
hd->next=p;
}
printf(" 录入数据达成,请按任意键连续!\n "); getch();
}
增加记录源代码
voidprint(structxs*hd)
{
structxs*p;
p=hd->next;
if(p!=NULL)
{
printf("\n
\n");
数据
显示
printf("**********************************************\n");
printf("学号姓名高数英语物理
printf("*************************************
平均分\n");
*********\n");
while(p!=NULL)
{
printf("%4d",p->xh);
printf("%10s",p->xm);
printf("%8d",p->gs);
printf("%7d",p->yy);
printf("%6d",p->wl);
printf("%\n",(p->wl+p->wl+p->wl)/;
p=p->next;
}
printf("**********************************************\n");
printf(" 链表显示达成,请按任意键连续!\n");
getch();
}
else
printf("\n 当前链表为空,请先读取文件或创办链表!\n 按任意键连续!\n ");
}
盘问记录源代码
voidmenu()
{
system("cls");
printf(" ****************************************\n");
pri
ntf("*学生成绩管理系统
*\n") ;
pri ntf("
******************************* *********\n");
pri
ntf("*jb11-131宋洁2012-7-3
*\ n");
pri ntf("
******************************* *********\n");
pri
ntf("*1-创办链表
* \n") ;
pri
ntf("*2-数据显示
* \n") ;
pri
ntf("*3-保存文件
* \n") ;
pri
ntf("*4-读取文件
* \n") ;
pri
ntf("*5-系统退出
* \n") ;
pri ntf("
******************************* *********\n");
pri
ntf("请选择操作(1-5:");
}
源程序
#include""
#include""
#include<>
#include""
structxs
{
intxh;
charxm[20];
intgs,yy,wl;
structxs*next;
};
intnum=0;
structxs*init()
{
structxs*hd;
hd=(structxs*)malloc(sizeof(structxs)); hd->next=NULL;
returnhd;
}
voidfr(structxs*hd)
{
structxs*p;
p=hd->next;
while(hd->next!=NULL)
{
p=hd->next;
hd->next=p->next;
free(p);
}
}
voidcreate(structxs*hd)
{
intxh,gs,yy,wl,i;
charxm[20];
structxs*p;
fr(hd);
printf("\n 请输入学生个数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("请输入%d个学生o f%d\n",i+1,num); printf(" 学号:");
scanf("%d",&xh);
printf(" 姓名:");
scanf("%s",xm);
printf(" 高数:");
scanf("%d",&gs);
printf(" 英语:");
scanf("%d",&yy);
printf(" 物理:");
scanf("%d",&wl);
p=(structxs*)malloc(sizeof(structxs));
p->xh=xh;
strcpy(p->xm,xm);
p->gs=gs;
p->yy=yy;
p->wl=wl;
p->next=hd->next;
hd->next=p;
}
printf("录入数据达成,请按任意键连续!\n");getch();
}
voidsave(structxs*hd)
{
if(hd->next!=NULL)
{
structxs*p=hd->next;
inti;
FILE*fp;
fp=fopen("","w");
fprintf(fp,"%3d\n",num);
for(i=0;i<num;i++)
{
fprintf(fp,"%3d%12s%3d%3d%3d\n",p->xh,p->xm,p->gs,p->yy,p->wl);p=p->next;
}
fclose(fp);
printf("\n保存文件达成,请按任意键连续!\n");getch();
}
else
{
printf("\n 当前链表为空,不需要保存,请按任意键连续!\n ");
getch();
}
}
voidread(structxs*hd)
{
inti;
structxs*p;
FILE*fp;
fr(hd);
fp=fopen("","r");
fscanf(fp,"%3d\n",&num);
for(i=0;i<num;i++)
{
p=(structxs*)malloc(sizeof(structxs));
fscanf(fp,"%3d%12s%3d%3d%3d\n",p->xh,p->xm,p->gs,p->yy,p->wl);p->next=hd->next;
hd->next=p;
}
fclose(fp);
printf("\n读取文件达成,请按任意键连续!\n");getch();
}
voidprint(structxs*hd)
{
structxs*p;
p=hd->next;
if(p!=NULL)
{
printf("\n
数据
\n");
显示
printf("**********************************************\n");
printf(" 学号姓名高数英语
物理
平均分\n");
printf("*********************************
*************\n");
while(p!=NULL)
{
printf("%4d",p->xh);
printf("%10s",p->xm);
printf("%8d",p->gs);
printf("%7d",p->yy);
printf("%6d",p->wl);
printf("%\n",(p->wl+p->wl+p->wl)/;
p=p->next;
}
printf("**********************************************\n");
printf(" 链表显示达成,请按任意键连续!\n");
getch();
}
else
printf("\n 当前链表为空,请先读取文件或创办链表!\n 按任意键继续!\n ");
}
voidmenu()
{
system("cls");
printf(" ****************************************\n");
pri
ntf("*学生成绩管理系统
*\n") ;
pri ntf("
******************************* *********\n");
pri
ntf("*jb11-131宋洁2012-7-3
*\ n");
pri ntf("
******************************* *********\n");
pri
ntf("*1-创办链表
* \n") ;
pri
ntf("*2-数据显示
* \n") ;
pri
ntf("*3-保存文件
* \n") ;
pri
ntf("*4-读取文件
* \n") ;
pri
ntf("*5-系统退出
* \n") ;
pri*******************************
C语言程序设计基于链表格范例的学生成绩管理学习系统
ntf("*********\n");
pri
ntf("请选择操作(1-5:");
}
voidmain()
{
intxz=0;
structxs*head;
head=init();
while(xz!=5)
{
menu();
scanf("%d",&xz);
switch(xz)
{
case1:
create(head);
break;
case2:
print(head);
break;
case3:
save(head);
break;
case4:
read(head);
break;
case5:
printf("\n 系统退出,拜拜!\n ");
break;
default:
printf("\n 选择错误,请按任意键选择!\n ");
getch();
break;
}
}
fr(head);
free(head);
}
3、试查收获
经过此次试验,我掌握了链表的创办、遍历显示和除去功能,掌握了链表数据的文件保存、读取,可以熟练的使用VC++,对C程序有了更深的认识。

评定项目ABCD评定项目ABCD
算法正确界面雅观,布局合理
程序结构
合理操作熟练
语法、语
义正解析完满


实验结果
正确文字流畅
师报告规范题解正确
评其他:

议论教师签字:
年月

代码:
#include""
#include""
#include<>
#include""
structxs
{
intxh;
charxm[20];
intgs,yy,wl;
structxs*next;
};
intnum=0;
structxs*init()
{
structxs*hd;
hd=(structxs*)malloc(sizeof(structxs)); hd->next=NULL;
returnhd;
}
voidfr(structxs*hd)
structxs*p;
p=hd->next;
while(hd->next!=NULL) {
p=hd->next;
hd->next=p->next;
free(p);
}
voidcreate(structxs*hd)
{
intxh,gs,yy,wl,i;
charxm[20];
structxs*p;
fr(hd);
printf("\n 请输入学生个数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("请输入%d个学生of%d\n",i+1,num); printf(" 学号:");
scanf("%d",&xh);
printf(" 姓名:");
scanf("%s",xm);
printf(" 高数:");
scanf("%d",&gs);
printf(" 英语:");
scanf("%d",&yy);
printf(" 物理:");
scanf("%d",&wl);
p=(structxs*)malloc(sizeof(structxs)); p->xh=xh;
strcpy(p->xm,xm);
p->gs=gs;
p->yy=yy;
p->wl=wl;
p->next=hd->next;
hd->next=p;
}
printf(" 录入数据达成,请按任意键连续!\n ");
getch();
}
voidsave(structxs*hd)
{
if(hd->next!=NULL)
{
structxs*p=hd->next;
inti;
FILE*fp;
fp=fopen("","w");
fprintf(fp,"%3d\n",num);
for(i=0;i<num;i++)
{
fprintf(fp,"%3d%12s%3d%3d%3d\n",p->xh,p->xm,p->gs,p->yy,p->wl); p=p->next;
}
fclose(fp);
printf("\n 保存文件达成,请按任意键连续!\n ");
getch();
}
else
{
printf("\n 当前链表为空,不需要保存,请按任意键连续!\n "); getch();
}
}
voidread(structxs*hd)
{
inti;
structxs*p;
FILE*fp;
fr(hd);
fp=fopen("","r");
fscanf(fp,"%3d\n",&num);
for(i=0;i<num;i++)
{
p=(structxs*)malloc(sizeof(structxs));
fscanf(fp,"%3d%12s%3d%3d%3d\n",p->xh,p->xm,p->gs,p->yy,p->wl); p->next=hd->next;
hd->next=p;
}
fclose(fp);
printf("\n 读取文件达成,请按任意键连续!\n ");
getch();
}
voidprint(structxs*hd)
{
structxs*p;
p=hd->next;
if(p!=NULL)
{
printf("\n 数据显示\n");
printf("**********************************************\n");
printf(" 学号姓名高数英语物理平均分\n");
printf("**********************************************\n");
while(p!=NULL)
{
printf("%4d",p->xh);
printf("%10s",p->xm);
printf("%8d",p->gs);
printf("%7d",p->yy);
printf("%6d",p->wl);
printf("%\n",(p->wl+p->wl+p->wl)/;
p=p->next;
}
printf("**********************************************\n");
printf(" 链表显示达成,请按任意键连续!\n");
getch();
}
else
printf("\n 当前链表为空,请先读取文件或创办链表!\n 按任意键连续!\n "); }
voidmenu()
{
system("cls");
printf(" ****************************************\n");
pr
intf("*学生成绩管理系统
*\n" );
pr intf("
************************** **************\n");
pr
intf("*
jb11-131宋洁
2012-7-3
*
\n");
pr intf("
************************** **************\n");
pr
intf("*1-创办链表
* \n" );
pr
intf("*2-数据显示
* \n" );
pr
intf("*3-保存文件
* \n" );
pr
intf("*4-读取文件
* \n" );
pr
intf("*5-系统退出
* \n" );
printf(" ****************************************\n"); printf(" 请选择操作(1-5:");
}
voidmain()
{
intxz=0;
structxs*head;
head=init();
while(xz!=5)
{
menu();
scanf("%d",&xz);
switch(xz)
{
case1:
create(head);
break;
case2:
print(head);
break;
save(head);
break;
case4:
read(head);
break;
case5:
!\n");
printf("\n
系统退
出,拜拜
break;
printf("\n 选择错误,请按任意键选择!\n "); getch();
break;
}
}
fr(head);
free(head);
}。

相关文档
最新文档