超好的学生成绩管理系统顺序表实现的代码含详细注释哦_第1页
超好的学生成绩管理系统顺序表实现的代码含详细注释哦_第2页
超好的学生成绩管理系统顺序表实现的代码含详细注释哦_第3页
超好的学生成绩管理系统顺序表实现的代码含详细注释哦_第4页
超好的学生成绩管理系统顺序表实现的代码含详细注释哦_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include #include #define LIST_INIT_SIZE 4 /线性表存储空间的初始分配量#define LISTINCREMENT 10 /线性表存储空间的分配增量/学生的定义typedef structint num; char name20; float english; float math; float database; float sum; float average;Student;/顺序表的定义typedef structStudent *stu;int length;int listsize;sqlist;/函数1录入信息int I

2、nput(sqlist *L)int i=1;/为了查找、排序的方便将第一个当哨兵char flag=y;/输入数据while(flag = Y | flag = y)for(i =1; i listsize; +i)printf(请输入第%d个同学的信息:n,L-length);printf(学号:);fflush(stdin);scanf(%d,&L-stuL-length.num);printf(姓名:);fflush(stdin);scanf(%s,L-stuL-);printf(英语成绩:);fflush(stdin);scanf(%f,&L-stuL-leng

3、th.english);printf(高数成绩:);fflush(stdin);scanf(%f,&L-stuL-length.math);printf(数据结构成绩:);fflush(stdin);scanf(%f,&L-stuL-length.database);L-stuL-length.sum=L-stuL-length.english+L-stuL-length.math+L-stuL-length.database;L-stuL-length.average=L-stuL-length.sum/3;L-length+;printf(是否继续Y/N. );fflush(stdin);

4、flag = getchar();if(flag=N|flag=n)break;return 0;/函数2显示所有学生信息int Display(sqlist *L)int i;if(L-length=1)printf(请先输入数据!n);return 0;printf(所有同学信息如下:n);printf(学号t姓名t总分t平均分t英语成绩t高数成绩t数据结构成绩n);for(i=1;ilength;i+)printf(%dt%st%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stui.num,L-,L-stui.sum,L-stui.average,L-st

5、ui.english,L-stui.math,L-stui.database);return 0;/函数3插入一条记录到表尾void Insert(sqlist *L)printf(学号:);scanf(%d,&L-stuL-length.num);printf(姓名:);scanf(%s,L-stuL-);printf(英语成绩:);scanf(%f,&L-stuL-length.english);printf(高数成绩:);scanf(%f,&L-stuL-length.math);printf(数据结构成绩:);scanf(%f,&L-stuL-length.dat

6、abase);L-stuL-length.sum=L-stuL-length.english+L-stuL-length.math+L-stuL-length.database;L-stuL-length.average=L-stuL-length.sum/3;L-length+;/函数4删除一条记录int Delete(sqlist *L)char s20;int i=1,j,ch,n;/第一个是哨兵if(L-,s)!=0&ilength)i+;elseprintf(请输入学号:);scanf(%d,&n);while(L-stui.num!=n&ilength

7、)i+;if(i=L-length)printf(要删除记录不存在!);return 0;for(j=i;jlength;j+)L-stuj=L-stuj+1;printf(删除成功!n);L-length-;return 0;/函数5统计成绩int Statistic(sqlist *L)int i,j=1,j1=1,j2=1,j3=1,k=1,k1=1,k2=1,k3=1;/要算及格率两个整数相除可能会是0所以float型float aver,stusum=0,stusum1=0,stusum2=0,stusum3=0,count1=0,count2=0,count3=0;if(L-len

8、gth=1)printf(请先输入数据!n);return 0;for(i=1;ilength;i+)/用于计算全班平均成绩stusum+=L-stui.sum;/用于计算各科平均成绩stusum1+=L-stui.english;stusum2+=L-stui.math;stusum3+=L-stui.database;/查找总分最高分if(L-stuj.sumstui.sum)j=i;/查找总分最低分if(L-stuk.sumL-stui.sum)k=i;/查找英语最高分if(L-stuj1.englishstui.english)j1=i;/查找高数最高分if(L-stuj2.maths

9、tui.math)j2=i;/查找数据结构最高分if(L-stuj3.databasestui.database)j3=i;/查找英语最低分if(L-stuk1.englishL-stui.english)k1=i;/查找高数最低分if(L-stuk2.mathL-stui.math)k2=i;/查找数据结构最低分if(L-stuk3.databaseL-stui.database)k3=i;/用于计算及格率if(L-stui.english=60)count1+;if(L-stui.math=60)count2+;if(L-stui.database=60)count3+;aver=stus

10、um/L-length;printf(共有%d条记录.n,L-length);printf(总分最高的记录:n);printf(学号t姓名t总分t平均分t英语成绩t高数成绩t数据结构成绩n);printf(%dt%st%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stuj.num,L-,L-stuj.sum,L-stuj.average,L-stuj.english,L-stuj.math,L-stuj.database);printf(总分最低的记录:n);printf(学号t姓名t总分t平均分t英语成绩t高数成绩t数据结构成绩n);printf(%dt%st

11、%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stuk.num,L-,L-stuk.sum,L-stuk.average,L-stuk.english,L-stuk.math,L-stuk.database);printf(全体同学平均成绩:%.2fn,aver);printf(英语及格率:%.2fn,count1/(L-length-1);printf(高数及格率:%.2fn,count2/(L-length-1);printf(数据结构及格率:%.2fn,count3/(L-length-1);printf(英语最高分:%.2fn,L-stuj1.engli

12、sh);printf(高数最高分:%.2fn,L-stuj2.math);printf(数据结构最高分:%.2fn,L-stuj3.database);printf(英语最低分:%.2fn,L-stuk1.english);printf(高数最低分:%.2fn,L-stuk2.math);printf(数据结构最低分:%.2fn,L-stuk3.database);return 0;/函数6查找int Search(sqlist *L)char sn20;int i=1,ch1,ch2,j,snum,low,high,mid;if(L-lengthstui.num!=snum&ilength)

13、i+;elseprintf(请输入姓名:);scanf(%s,sn);while(strcmp(L-,sn)!=0&ilength)i+;if(i=L-length)printf(查找失败!);return 0;printf(查找成功!n);printf(学号t姓名t总分t平均分t英语成绩t高数成绩t数据结构成绩n);printf(%dt%st%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stui.num,L-,L-stui.sum,L-stui.average,L-stui.english,L-stui.math,L-stui.databas

14、e);if(ch1=2)printf(1.按学号查找n2.按姓名查找n请选择:);scanf(%d,&ch2);if(ch2=1) /二分查找,先按学号排序for(i=2;ilength;i+)if(L-stui.numstui-1.num)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.numstuj.num;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;printf(请输入学号:);scanf(%d,&snum);low=1;high=L-length-1 ; / 置区间初值while(lowstumid.num=snum)

15、 printf(查找成功!n);printf(学号t姓名t总分t平均分t英语成绩t高数成绩t数据结构成绩n);printf(%dt%st%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stumid.num,L-,L-stumid.sum,L-stumid.average,L-stumid.english,L-stumid.math,L-stumid.database);return 0;elseif(snumstumid.num) high=mid-1; / 继续在前半区间进行查找elselow=mid+1; / 继续在后半区间进行查找printf(查找失败!

16、n);return 0;else /二分查找,先按姓名排序for(i=2;ilength;i+)if(strcmp(L-,L-)stu0=L-stui;L-stui=L-stui-1;for(j=i-2;strcmp(L-,L-)stuj+1=L-stuj;L-stuj=L-stu0;printf(请输入姓名:);scanf(%s,sn);low=1;high=L-length-1 ; / 置区间初值while(,sn)=0)printf(查找成功!n);printf(学号t姓名t总分t平均

17、分t英语成绩t高数成绩t数据结构成绩n);printf(%dt%st%.2ft%.2ft%.2ftt%.2ftt%.2fn,L-stumid.num,L-,L-stumid.sum,L-stumid.average,L-stumid.english,L-stumid.math,L-stumid.database);return 0;elseif(strcmp(sn,L-)length=1)printf(请先输入数据!n);return 0;printf(1.直接插入排序t2.折半插入排序n3.冒泡排序t4.直接选择排序n请选择:);scanf(%d,

18、&ch1);switch (ch1)case 1:printf(1.按学号排序n2.按英语成绩排序t3.按高数成绩排序n4.按数据结构成绩排序t5.按总分排序n请选择:);scanf(%d,&ch2);switch (ch2)case 1:for(i=2;ilength;i+)if(L-stui.numstui-1.num)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.numstuj.num;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;break;case 2:for(i=2;ilength;i+)if(L-stui.eng

19、lishstui-1.english)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.englishstuj.english;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;break;case 3:for(i=2;ilength;i+)if(L-stui.mathstui-1.math)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.mathstuj.math;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;break; case 4:for(i=2;ilength

20、;i+)if(L-stui.databasestui-1.database)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.databasestuj.database;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;break;case 5:for(i=2;ilength;i+)if(L-stui.sumstui-1.sum)L-stu0=L-stui;L-stui=L-stui-1;for(j=i-2;L-stu0.sumstuj.sum;j-)L-stuj+1=L-stuj;L-stuj=L-stu0;break;/swich

21、(ch2)break;case 2:printf(1.按学号排序n2.按英语成绩排序t3.按高数成绩排序n4.按数据结构成绩排序t5.按总分排序n请选择:);scanf(%d,&ch2);switch (ch2)case 1:for(i=2; ilength; i+)if(L-stui.numstui-1.num)L-stu0=L-stui; /*设置监测哨*/low=1;high=i-1;while(lowstu0.numstumid.num)high=mid-1; /*插入点在低半区*/elselow=mid+1; /*插入点在高半区*/*while*/for(j=i-1; j=low;

22、-j)L-stuj+1=L-stuj; /*记录后移*/L-stuhigh+1=L-stu0; /*插入到正确位置*/*if*/*for*/break;case 2:for(i=2; ilength; i+)if(L-stui.englishstui-1.english)L-stu0=L-stui; /*设置监测哨*/low=1;high=i-1;while(lowstu0.englishstumid.english)high=mid-1; /*插入点在低半区*/elselow=mid+1; /*插入点在高半区*/*while*/for(j=i-1; j=low; -j)L-stuj+1=L-

23、stuj; /*记录后移*/L-stuhigh+1=L-stu0; /*插入到正确位置*/*if*/*for*/break;case 3:for(i=2; ilength; i+)if(L-stui.mathstui-1.math)L-stu0=L-stui; /*设置监测哨*/low=1;high=i-1;while(lowstu0.mathstumid.math)high=mid-1; /*插入点在低半区*/elselow=mid+1; /*插入点在高半区*/*while*/for(j=i-1; j=low; -j)L-stuj+1=L-stuj; /*记录后移*/L-stuhigh+1=

24、L-stu0; /*插入到正确位置*/*if*/*for*/break;case 4:for(i=2; ilength; i+)if(L-stui.databasestui-1.database)L-stu0=L-stui; /*设置监测哨*/low=1;high=i-1;while(lowstu0.databasestumid.database)high=mid-1; /*插入点在低半区*/elselow=mid+1; /*插入点在高半区*/*while*/for(j=i-1; j=low; -j)L-stuj+1=L-stuj; /*记录后移*/L-stuhigh+1=L-stu0; /*

25、插入到正确位置*/*if*/*for*/break;case 5:for(i=2; ilength; i+)if(L-stui.sumstui-1.sum)L-stu0=L-stui; /*设置监测哨*/low=1;high=i-1;while(lowstu0.sumstumid.sum)high=mid-1; /*插入点在低半区*/elselow=mid+1; /*插入点在高半区*/*while*/for(j=i-1; j=low; -j)L-stuj+1=L-stuj; /*记录后移*/L-stuhigh+1=L-stu0; /*插入到正确位置*/*if*/*for*/break;/swi

26、ch(ch2)break;case 3:printf(1.按学号排序n2.按英语成绩排序t3.按高数成绩排序n4.按数据结构成绩排序t5.按总分排序n请选择:);scanf(%d,&ch2);switch (ch2)case 1:/采用自前向后扫描的方法,对顺序表L做冒泡排序i=L-length-1;while(i1)k=1;for(j=1; jstuj+1.numstuj.num)L-stu0=L-stuj;L-stuj=L-stuj+1;L-stuj+1=L-stu0;k=j; /*交换的位置*/i=k;break;case 2:/采用自前向后扫描的方法,对顺序表L做冒泡排序i=L-len

27、gth-1;while(i1)k=1;for(j=1; jstuj+1.englishstuj.english)L-stu0=L-stuj;L-stuj=L-stuj+1;L-stuj+1=L-stu0;k=j; /*交换的位置*/i=k;break;case 3:/采用自前向后扫描的方法,对顺序表L做冒泡排序i=L-length-1;while(i1)k=1;for(j=1; jstuj+1.mathstuj.math)L-stu0=L-stuj;L-stuj=L-stuj+1;L-stuj+1=L-stu0;k=j; /*交换的位置*/i=k;break;case 4:/采用自前向后扫描的

28、方法,对顺序表L做冒泡排序i=L-length-1;while(i1)k=1;for(j=1; jstuj+1.databasestuj.database)L-stu0=L-stuj;L-stuj=L-stuj+1;L-stuj+1=L-stu0;k=j; /*交换的位置*/i=k;break;case 5:/采用自前向后扫描的方法,对顺序表L做冒泡排序i=L-length-1;while(i1)k=1;for(j=1; jstuj+1.sumstuj.sum)L-stu0=L-stuj;L-stuj=L-stuj+1;L-stuj+1=L-stu0;k=j; /*交换的位置*/i=k;bre

29、ak;/swich(ch2)break;case 4:printf(1.按学号排序n2.按英语成绩排序t3.按高数成绩排序n4.按数据结构成绩排序t5.按总分排序n请选择:);scanf(%d,&ch2);switch (ch2)case 1:for(i=1; ilength-1; i+)k=i;for(j=i+1; jlength; j+) /*在i开始的L.length-i+1个记录中选关键字最小的记录*/ if(L-stuk.numL-stuj.num)k=j; /* k中存放关键字最小的记录的下标*/if(k!=i)L-stu0=L-stuk;L-stuk=L-stui; /*关键字最

30、小的记录与第i个记录*/L-stui=L-stu0;/*if*/*for*/break;case 2:for(i=1; ilength-1; i+)k=i;for(j=i+1; jlength; j+) /*在i开始的L.length-i+1个记录中选关键字最小的记录*/ if(L-stuk.englishL-stuj.english)k=j; /* k中存放关键字最小的记录的下标*/if(k!=i)L-stu0=L-stuk;L-stuk=L-stui; /*关键字最小的记录与第i个记录*/L-stui=L-stu0;/*if*/*for*/break;case 3:for(i=1; ile

31、ngth-1; i+)k=i;for(j=i+1; jlength; j+) /*在i开始的L.length-i+1个记录中选关键字最小的记录*/ if(L-stuk.mathL-stuj.math)k=j; /* k中存放关键字最小的记录的下标*/if(k!=i)L-stu0=L-stuk;L-stuk=L-stui; /*关键字最小的记录与第i个记录*/L-stui=L-stu0;/*if*/*for*/break;case 4:for(i=1; ilength-1; i+)k=i;for(j=i+1; jlength; j+) /*在i开始的L.length-i+1个记录中选关键字最小的记录*/ if(L-stuk.databaseL-stuj.database)k=j; /* k中存放关键字最小的记录的下标*/if(k!=i)L-stu0=L-stuk;L-stuk=L-stui; /*关键字最小的记录与第i个记录*/L-stui=L-stu0;/*if*/*for*/break;case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论