1、用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。在主函数里能实现以下功能。 运行后出现一个选择提示。 可选择的功能有1)创建新的学生信息链表 2)增加一个新的学生信息 3)按学号删除某个学生信息 4)按学号查找某个学生信息 5)可以按照学生成绩对链表排序 6)退出系统 #include "stdio.h" #include "stdlib.h" #inclu
2、de "string.h" #include "conio.h" jiemian(); struct student { char name[50]; char sex[5]; int age; char num[50]; float score1; float score2; float score3; float sum; float ave; }stu[50],del; void gn1() { int i=0; char num1; for(i=0;i<50;i++) { printf("请输入要添加的学生资料:\n"); prin
3、tf("学号:"); scanf("%s",stu[i].num); printf("姓名:"); scanf("%s",stu[i].name); printf("性别:"); scanf("%s",&stu[i].sex); printf("年龄:"); scanf("%d",&stu[i].age); printf("请输入学生的三门成绩:\n"); printf("语文:"); scanf("%f",&stu[i].score1); printf("数学:"); scanf("%f",&stu[i].score2); printf("英语:"); sca
4、nf("%f",&stu[i].score3); printf("是否继续添加:y/n\n"); scanf("%c",&num1); scanf("%c",&num1); if(num1=='N' || num1=='n') { system("cls"); jiemian(); } } } void gn2() { int i; char num[50]; printf("请输入要查找的学生学号:\n"); scanf("%s",num); for(i=0;i<
5、50;i++) if(strcmp(stu[i].num,num)==0) { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; stu[i].ave=stu[i].sum/3; printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[
6、i].ave); break; } if(i==50) printf("查找不到!请重新输入!\n"); getch(); system("cls"); jiemian(); } void gn3() { char num1,i=0; printf("请输入要修改的学生学号:\n"); scanf("%s",stu[i].num); printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:
7、\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave); printf("姓名:"); scanf("%s",stu[i].name); printf("性别:"); scanf("%s",stu[i].sex); printf("年龄:"); scanf("%d",&stu[i].age); printf("请输入学生的三门成
8、绩:\n"); printf("语文:"); scanf("%f",&stu[i].score1); printf("数学:"); scanf("%f",&stu[i].score2); printf("英语:"); scanf("%f",&stu[i].score3); printf("是否继续修改:y/n?\n"); scanf("%c",&num1); scanf("%c",&num1); if(num1=='N' || num1=='n') system
9、"cls"); jiemian(); } void gn4() { int i; char num[50]; printf("请输入要删除的学生学号:\n"); scanf("%s",num); for(i=0;i<50;i++) if(strcmp(num,stu[i].num)==0) { printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i
10、].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave); stu[i]=del; printf("信息已删除,按任意键返回..\n"); break; } if(i==50) printf("您输入的信息不存在!\n"); getch(); system("cls"); jiemian(); } void gn5() { int i=0; stu[i].sum=stu[
11、i].score1+stu[i].score2+stu[i].score3; stu[i].ave=stu[i].sum/3; printf("学号 \t姓名 \t性别 \t年龄 \t语文 \t数学 \t英语 \t总成绩 \t 平均成绩 \n"); for(i=0;i<50;i++) { if(stu[i].age==0) break; printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score
12、1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave); } printf("按任意键返回..."); getch(); system("cls"); jiemian(); } void gn6() { FILE *fp; int i; char filename[50]; printf("\n"); printf("\n"); printf("请输入要保存的文件名:"); scanf("%s",filename); if((fp=fopen(filename,"wb"))==NULL)
13、 printf("文件名为空,不能保存!\n"); for(i=0;i<50;i++) { if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("文件保存失败!\n"); } fclose(fp); printf("文件已保存!\n"); printf("按任意键返回...\n"); getch(); system("cls"); jiemian(); } void gn7() { FILE *fp; int i=0; //打
14、开文件流 char filename[50]; printf("请输入文件名:"); scanf("%s",filename); //输入要载入的文件名 if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。 { printf("文件不存在!\n"); exit(0); } while(fread(&stu[i],sizeof(struct student),1,fp)!=0)//若存在,读取系统 { i++; } fclose(fp);
15、 //程序结束后,关闭流。 printf("信息已载入!\n"); printf("按回车键返回 "); getchar(); getchar(); system("cls"); jiemian(); } void gn8() { printf("按任意键退出..."); exit(0); } void xuanze() { int num; scanf("%d",&num); switch(num) { case 1:system("cls");gn1();break;
16、case 2:system("cls");gn2();break; case 3:system("cls");gn3();break; case 4:system("cls");gn4();break; case 5:system("cls");gn5();break; case 6:system("cls");gn6();break; case 7:system("cls");gn7();break; case 8:system("cls");gn8();break; default:printf(" ");break; } } jiemia
17、n() { printf("\t\t*****************学生档案管理系统*************\n"); printf("\t\t1>添加学生信息"); printf("\t\t\t2>查找学生信息\n"); printf("\t\t3>修改学生信息"); printf("\t\t\t4>删除学生信息\n"); printf("\t\t5>显示学生信息"); printf("\t\t\t6>保存学生信息\n"); printf("\t\t7>载入学生信息"); printf("\t\t\t8>退出系统\n"); printf("\t\t**********************************************\n"); printf("请从1-8中选择您的操作:\n"); xuanze(); } void main() { jiemian(); }






