C语言综合性实验报告1.doc
华北科技学院计算机系综合性实验
实 验 报 告
课程名称 C程序设计
实验学期 至 学年 第 学期
学生所在系部
年级 专业班级
学生姓名 学号
任课教师
实验成绩
计算机系制
《 C 程 序 设 计 》课程综合性实验报告
开课实验室:数学应用实验室 2010 年 7 月 1日
实验题目《基于链表的学生成绩管理系统》一、实验目的
1、掌握链表的创建、显示、清除;掌握链表结点的查找、修改、删除;
2、掌握链表结点的排序;
3、掌握链表数据的文件保存、读取;
二、设备与环境
微型计算机、Visual C++ 6.0
三、实验内容
源程序:#include
#include
#include
#include
#define LEN sizeof(struct xsnode)
struct xsnode
{
int xh;
char xm[15];
int gs;
int yy;
int wl;
float pj;
int mc;
struct xsnode *next;
}stu[100];
int length;/*全局变量*/
FILE *fp=NULL;/*定义指针*/
/*********************成绩录入********************/
struct xsnode *luru()
{struct xsnode *p1,*p2,*head;
int i,sum=0,flag=1;
system("cls"); /*刷屏*/
while(flag==1)
{printf("input length of list(<100):");
scanf("%d",&length);
if(length<100)
flag=0;
}
for(i=0;i
{p1=(struct xsnode *)malloc(LEN);
if(i==0)
head=p2=p1;
else
p2->next=p1;
p2=p1;
printf("No.:");
scanf("%d",&p1->xh);
printf("name:");
scanf("%s",&p1->xm);
printf("gscj:");
scanf("%d",&p1->gs);
printf("yycj:");
scanf("%d",&p1->yy);
printf("wlcj:");
scanf("%d",&p1->wl);
sum=p1->gs+p1->yy+p1->wl;
p1->pj=(float)(sum/3.0);
}
p1->next=NULL;
fp=fopen("stud1","w");
for(i=0;i
if(fwrite(&stu[i],sizeof(struct xsnode),1,fp)!=1)
printf("file write error\n");
fclose(fp);
return(head);
}
/********************成绩修改********************/
void xiugai(struct xsnode *head)
{struct xsnode *p1,*p2;
system("cls");
p1=head;
int xh1,i=0,sum=0;
printf("请输入要修改的学生的学号:");
scanf("%d",&xh1);
while(xh1!=p1->xh&&p1->next!=NULL)
{p2=p1;p1=p1->next;i++;}
if(xh1==p1->xh)
printf("要修改的学生信息为:\n");
printf("%6d%8s%8d%8d%8d",p1->xh,p1->xm,p1->gs,p1->yy,p1->wl);
printf("\n请重新输入学生信息(学号、姓名、高数成绩、英语成绩、物理成绩)