1、void PrintTablHeader();void PrintAll(Student *a,int n);int SearchByNo(Student *a,int n,char no);void SearchByname(Student *a,int n,char name);void SortByTotal(Student*a,int n);void SortByMcu(Student*a,int n);void SortByMath(Student*a,int n);void SortByEnglish(Student*a,int n);void Sort(Student *a,in
2、t n,int course);int DeleteByNo(Student*a,int n,char no);void save(Student *a,int n);void english(Student stu , int n );void math(Student stu , int n);void mcu(Student stu , int n);void englishaver(Student stu,int n);void mathaver(Student stu,int n);void mcuaver(Student stu,int n);void totalaver(Stud
3、ent stu,int n);int load(Student t);/符号常量和变量说明#define N 100 / 学生最大人数int length=0; / 学生实际人数 int item;char ch;#define ENGLISH 0 / 英语课程#define MATH 1 / 数学课程#define MCU 2 / 计算机课程#define TOTAL 3 / 总分Student stuN = / 学生结构体数组,全局变量 10, 王安男, 1991, 2, 14, 15, 55,31,11张羽女, 1992, 9, 22, 92, 83, 58,12李明, 1992, 2,
4、 18, 60, 65, 72,13,李江,1992,12,14,100,50,78,14李楠, 1992, 6, 29, 90, 52, 76,15张萍,1991, 8, 9,57, 78, 92,16李文,1992,10,4,100,80,60,17张雨,1991,12,14,60,90,80/6.2主函数及各功能函数void Init() int i; length=8; for(i=0;ino,p-name,p-sex,birth.year,p-birth.month,p-birth.day,sco.english,p-sco.math,p-sco.mcu,p-sco.total);
5、void PrintTablHeader ()学号t姓名t性别t生日tt英语t数学t计算机t总分nvoid PrintAll(Student *a,int n) 目前学生总人数为:%dn,length); PrintTablHeader();n; Print(&ai);/调用Printf函数输出第i个学生信息 printf(nint SearchByNo(Student *a,int n,char no) /按学号查找学生成绩信息 int p=-1; if(strcmp(ai.no,no)=0) p=i; break; return p;void SearchByname(Student *a
6、,int n,char name) /按姓名查找学生成绩信息 int flag=0; for (i=0; if(strcmp(ai.name, name)=0) flag=1; Print(& printf( if (flag=0) printf(查询失败!void SortByEnglish(Student*a,int n) /根据英语成绩进行排序 int i,j;/循环变量 float maxval;/用于临时保存最大值 int maxpos;/用于临时保存最大值的下标 Student temp;/临时变量 /总共需要N-1次选择和交换n-1; maxval=ai.sco.english;
7、 maxpos=i; /在无序区寻找最大值 for (j=i;jmaxval) maxval=aj.sco.english; maxpos=j; if (maxpos!=-1) temp=amaxpos; amaxpos=ai; ai=temp; void SortByMath(Student*a,int n) /根据数学成绩进行排序 maxval=ai.sco.math; if (aj.sco.math maxval=aj.sco.math;=i)void SortByMcu(Student*a,int n) /根据计算机成绩进行排序 maxval=ai.sco.mcu; if (aj.sc
8、o.mcu maxval=aj.sco.mcu;void SortByTotal(Student*a,int n) /根据学生总成绩进行排序 maxval=ai.sco.total; if (aj.sco.total maxval=aj.sco.total; if (maxpos !void english(Student stu , int n) /查询英语成绩不及格学生信息 int i=0; for(i=0; if(stui.sco.english60)t学生证号:%-15s姓名:%-15s英语分数:%-15gnn,stui.no,stui.name,stui.sco.english);v
9、oid math(Student stu , int n) /查询数学成绩不及格学生信息 if(stui.sco.math%-15s数学分数:,stui.no,stui.name,stui.sco.math);void mcu(Student stu , int n) /查询计算机成绩不及格学生信息 if(stui.sco.mcu=N) return n; while (1)请输入学号: scanf(%s,&an.no); pos=SearchByNo(a,n,an.no); if (pos!=-1) printf(学号已经存在,请重新输入! else break;请输入姓名:an.name)
10、;请输入性别:an.sex);请输入出生年份:%dan.birth .year);请输入出生月份:an.birth .month );请输入出生日期:an.birth .day );请输入英语成绩:%fan.sco.english );请输入数学成绩:an.sco.math );请输入计算机成绩:an.sco.mcu); an.sco.total =an.sco.english+an.sco.math+an.sco.mcu; n+; return n;int DeleteByNo(Student*a,int n,char no) int pos=SearchByNo(a,n,no); if (
11、pos=-1)学号不存在,请重新输入!/减少学生人数,并返回该值 if (pos=n-1) n-; for (i=pos; ai=ai+1;/*修改函数*/int ModifyByNo(Student*a,int n,char no) int p; char sno15; if(pos=-1) 该学生不存在!请输入学号:sno); p=SearchByNo(a,n,sno); if(p=-1 | p=pos)/两种情况,1.下表不存在 2.不修改下表 strcpy(apos.no,sno); else printf(学生学号已存在,请重新输入!apos.name );apos.sex);apo
12、s.birth .year);apos.birth .month );apos.birth .day );apos.sco.english );apos.sco.math );apos.sco.mcu );void save(Student *a,int n) /保存函数 FILE *fp; if(fp=fopen(student information.txtwb)=NULL)不能打开文件! exit(1);n保存文件n fprintf(fp,n);/将记录数写入文件rn/将换行符号写入文件i+) fprintf(fp,ai.no,ai.name ,ai.sex ,ai.birth .yea
13、r,ai.birth .month ,ai.birth .day ,ai.sco.english ,ai.sco .math ,ai.sco .mcu ,ai.sco.total );/写入记录 fprintf(fp, fclose(fp);成功保存文件!/*文件的读入*/int load(Student t) int i,n;rb+)=NULL)/打开文件 fscanf(fp,n);/读入记录数 fread(fp,%st%st%st%d%d%dt%3.1ft%ft%ft%f,ti.no ,ti.name,ti.sex,&ti.birth.year,&ti.birth.month,&ti.bi
14、rth.day,&ti.sco.english,&ti.sco.math,&ti.sco.mcu,&ti.sco.total);/读入记录 成功读入记录!void englishaver( Student stu,int n) /英语平均成绩int i;double aver1,sum1=0;for(i=0; sum1+=stui.sco.english; aver1=1.0*sum1/n;英语平均分:%.2fnn,aver1);void mathaver(Student stu,int n) /数学平均成绩 sum1=sum1+stui.sco.math; aver1=sum1/n;数学平均分: %.2fnnvoid mcuaver(Student stu,int n) /计算机平均成绩double aver1,sum1=0 ;n+1; sum1+=stui.sco.mcu;计算机平均分:void totalaver(Student stu,int n) /总平均成绩 int i ;double aver1,sum; sum=stui.sco.mcu+stui.sco.english+stui
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1