#include
#include
#include
#include
#define LEN sizeof(struct studentlist)
int n; //全局变量
FILE *fp;
struct studentlist
{
double number; //学号
char name[20]; //姓名
float Chiscore; //语文成绩
float Mscore; //数学成绩
float Engscore; //英语成绩
float comscore; //计算机专业成绩
struct studentlist *next;
};
struct studentlist *set_list() //建立学生链表函数
{
struct studentlist *head;
struct studentlist *p1,*p2;
int i;
printf("请问需要建立几份学生信息?\n");
scanf("%d", &n);
for(i=1;i<=n;i++)
{
printf("请输入第%d份学生信息\n",i);
p1=(struct studentlist *)malloc(LEN);
printf("学号:");
scanf("%lf",&p1->number);
printf("姓名:");
scanf("%s",p1->name);
printf("语文成绩:");
scanf("%f",&p1->Chiscore);
printf("数学成绩:");
scanf("%f",&p1->Mscore);
printf("英语成绩:");
scanf("%f",&p1->Engscore);
printf("专业成绩:");
scanf("%f",&p1->comscore);
printf("\n");
if(i==1)
head=p1;
else
p2->next=p1;
p2=p1;
}
p2->next=NULL;
return head;
}
void put_list(struct studentlist *head) //输出学生信息函数
{
struct studentlist *p1;
int i;
p1=head;
printf("学号 姓名 语文成绩 数学成绩 英语成绩 计算机专业成绩\n");
while(p1!=NULL)
{
printf("%-2.0lf %s %-7.1f ",p1->number,p1->name,p1->Chiscore);
printf("%-7.1f %-7.1f %-7.1f",p1->Mscore,p1->Engscore,p1->comscore);
printf("\n");
p1=p1->next;
}
}
struct studentlist *del_list()
{
return 0;
}
void save_list(struct studentlist *head) //链表数据保存
{
struct studentlist *p1;
p1=head;
if((fp=fopen("D:\\学生信息表数据.txt","wb"))==NULL)
{
printf("文件打开失败\n");
exit(1);
}
while(p1!=NULL)
{
if( (fwrite(p1,LEN,1,fp))!=1)
{
printf("数据写入失败\n");
exit(1);
}
p1=p1->next;
}
fclose(fp); //释放内存
printf("\n");
printf("链表保存成功!\n");
}
struct studentlist *read_list() //读取文件函数
{
int i;
struct studentlist *head;
struct studentlist *p1,*p2;
if((fp=fopen("D:\\学生信息表数据.txt","rb"))==NULL)
{
printf("文件读取失败\n");
exit(1);
}
for(i=0;i<3;i++)
{
p1=(struct studentlist*)malloc(LEN);
if(fread(p1,LEN,1,fp)!=1)
{
printf("数据读取失败\n");
exit(1);
}
if(i==1)
head=p1;
else
p2->next=p1;
p2=p1;
}
p2->next=NULL;
printf("文件读取成功\n");
fclose(fp);
return head;
}
int main(void)
{
int n;
struct studentlist *temp;
printf("=========================\n");
printf("‖ 按1:建立学生信息 按2:输出学生信息 ‖\n");
printf("‖ 按3:删除学生信息 按4:保存学生信息 ‖\n");
printf("‖ 按5:读取学生信息 ‖\n");
printf("=========================\n");
printf("请问需要执行哪一项操作\n");
scanf("%d",&n);
while(n!=0) //输入 0结束程序
{
switch(n)
{
case 1: temp=set_list();
break;
case 2: put_list(temp);
break;
case 3: del_list();
break;
case 4: save_list(temp);
break;
case 5: temp=read_list();
break;
default :printf("没有找到符合你的操作!请重新输入。\n");
}
printf("请问需要执行哪一项操作\n");
scanf("%d",&n);
}
printf("程序结束!感谢您的使用!");
return 0;
}
~~~~~~~~~~~~~~~~~~~~~
是这个?
看着你的名字,就不想帮你,一点都不尊重别人