华北科技学院计算机系综合性实验实验报告课程名称 C语言程序设计实验学期 2011 至 2012 学年第二学期学生所在系部计算机系年级 2011 专业班级计算机科学与技术B-111学生姓名学号任课教师实验成绩计算机系制实验报告须知1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《C语言程序设计》课程综合性实验报告实验题目基于链表的学生成绩管理系统一、实验目的1、掌握链表的创建、遍历显示和清除;2、掌握链表数据的文件保存、读取;二、设备与环境微型计算机、VC++三、实验内容1、定义结构体,创建链表struct xsnode{int xh;char xm[15];int gs;int yy;int wl;struct xsnode *next;};2、根据以上链表结点结构,实现以下功能a、学生学号、姓名、各门成绩的录入;b、链表数据显示及清除;c、链表数据的文件保存与读取;四、实验结果及分析1、运行结果主菜单数据显示2、源程序主函数void main(){int xz=0;struct xs *head;head=init();while(xz!=5){menu();scanf("%d",&xz);switch(xz){case 1:create(head);break;case 2:print(head);break;case 3:save(head);break;case 4:read(head);break;case 5:printf("\n 系统退出,拜拜!\n ");break;default:printf("\n 选择错误,请按任意键选择!\n ");getch();break;代码:#include""#include""#include<>#include""struct xs{int xh;char xm[20];int gs,yy,wl;struct xs *next;};int num=0;struct xs *init(){struct xs* hd;hd=(struct xs *)malloc(sizeof(struct xs));hd->next=NULL;return hd;}void fr(struct xs *hd){struct xs *p;p=hd->next;while(hd->next!=NULL){p=hd->next;hd->next=p->next;free(p);}}void create(struct xs *hd){int xh,gs,yy,wl,i;char xm[20];struct xs *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=(struct xs *)malloc(sizeof(struct xs));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();}void save(struct xs *hd){if(hd->next!=NULL){struct xs *p=hd->next;int i;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();}}void read(struct xs *hd){int i;struct xs *p;FILE *fp;fr(hd);fp=fopen("","r");fscanf(fp,"%3d\n",&num);for(i=0;i<num;i++){p=(struct xs *)malloc(sizeof(struct xs));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();}void print(struct xs *hd){struct xs*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();}elseprintf("\n 当前链表为空,请先读取文件或创建链表!\n 按任意键继续!\n ");}void menu(){system("cls");printf(" ****************************************\n");printf(" * 学生成绩管理系统*\n");printf(" ****************************************\n");printf(" * jb11-1 31 宋洁2012-7-3 *\n");printf(" ****************************************\n");printf(" * 1-创建链表*\n");printf(" * 2-数据显示*\n");printf(" * 3-保存文件*\n");printf(" * 4-读取文件*\n");printf(" * 5-系统退出*\n");printf(" ****************************************\n");printf(" 请选择操作(1-5:");}void main(){int xz=0;struct xs *head;head=init();while(xz!=5){menu();scanf("%d",&xz);switch(xz){case 1:create(head);break;case 2:print(head);break;case 3:save(head);break;case 4:read(head);break;case 5:printf("\n 系统退出,拜拜!\n ");break;default:printf("\n 选择错误,请按任意键选择!\n ");getch();break;}}fr(head);free(head);}。