1、C语言课程设计学生成绩管理系统完美运行代码/所包含的头文件#include #include #include /标准库函数#include /字符操作函数#include /控制台输入输出函数/定义系统中所需要用到的结构体类型struct _birthday int year; int month; int day;struct _score float english; float math; float mcu; float total;typedef struct _birthday Birthday;typedef struct _score Score;struct _studen
2、t char no15; char name20; char sex10; Birthday birth; Score sco;typedef struct _student Student; / 函数说明void Menu();void Run();void Inti();void Print(Student *p);void PrintTablHeader();void PrintAll(Student *a,int n);int SearchByNo(Student *a,int n,char no);void SearchByname(Student *a,int n,char nam
3、e);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,int 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 st
4、u , 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(Student stu,int n);int load(Student t);/符号常量和变量说明#define N 100 / 学生最大人数int length=0; / 学生实际人数 int item;char ch;#define ENGLISH 0 / 英语课程#define
5、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, 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,李文,女,19
6、92,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, p-birth.year,p-birth.month,p-birth.day, p-sco.english,p-sco.math,p-sco.mcu,p-sco.total); void PrintTablHeader () printf(学号t姓名t性别t生日tt英语t数学t计算机t总分n);void PrintAll(Student *a,int n) int i
7、; printf( 目前学生总人数为:%dn,length); PrintTablHeader(); for(i=0;in;i+) Print(&ai);/调用Printf函数输出第i个学生信息 printf(n); int SearchByNo(Student *a,int n,char no) /按学号查找学生成绩信息 int p=-1; int i; for(i=0;in;i+) if(strcmp(ai.no,no)=0) p=i; break; return p;void SearchByname(Student *a,int n,char name) /按姓名查找学生成绩信息 in
8、t i; int flag=0; PrintTablHeader(); for (i=0;in;i+) if(strcmp(ai.name, name)=0) flag=1; Print(&ai); printf(n); if (flag=0) printf(查询失败!);void SortByEnglish(Student*a,int n) /根据英语成绩进行排序 int i,j;/循环变量 float maxval;/用于临时保存最大值 int maxpos;/用于临时保存最大值的下标 Student temp;/临时变量 /总共需要N-1次选择和交换 for (i=0;in-1;i+)
9、maxval=ai.sco.english; 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) /根据数学成绩进行排序 int i,j;/循环变量 float maxval;/用于临时保存最大值 int maxpos;/用于临时保存最大值的下标 Student temp;/临时变量 /总共需要N-1次选择和交换 for (i=0;in-
10、1;i+) maxval=ai.sco.math; maxpos=i; /在无序区寻找最大值 for (j=i;jmaxval) maxval=aj.sco.math; maxpos=j; if (maxpos!=i) temp=amaxpos; amaxpos=ai; ai=temp; void SortByMcu(Student*a,int n) /根据计算机成绩进行排序 int i,j;/循环变量 float maxval;/用于临时保存最大值 int maxpos;/用于临时保存最大值的下标 Student temp;/临时变量 /总共需要N-1次选择和交换 for (i=0;in-1
11、;i+) maxval=ai.sco.mcu; maxpos=i; /在无序区寻找最大值 for (j=i;jmaxval) maxval=aj.sco.mcu; maxpos=j; if (maxpos!=-1) temp=amaxpos; amaxpos=ai; ai=temp; void SortByTotal(Student*a,int n) /根据学生总成绩进行排序 int i,j;/循环变量 float maxval;/用于临时保存最大值 int maxpos;/用于临时保存最大值的下标 Student temp;/临时变量 /总共需要N-1次选择和交换 for (i=0;in-1
12、;i+) maxval=ai.sco.total; maxpos=i; /在无序区寻找最大值 for (j=i;jmaxval) maxval=aj.sco.total; maxpos=j; if (maxpos !=-1) temp=amaxpos; amaxpos=ai; ai=temp; void english(Student stu , int n) /查询英语成绩不及格学生信息 int i=0; for(i=0;in;i+) if(stui.sco.english60) printf(t学生证号:%-15s姓名:%-15s英语分数:%-15gnn,stui.no,stui.name
13、,stui.sco.english); void math(Student stu , int n) /查询数学成绩不及格学生信息 int i=0; for(i=0;in;i+) if(stui.sco.math60) printf(t学生证号:%-15s姓名:%-15s数学分数:%-15gnn,stui.no,stui.name,stui.sco.math); void mcu(Student stu , int n) /查询计算机成绩不及格学生信息 int i=0; for(i=0;in;i+) if(stui.sco.mcu=N) return n; while (1) printf(请
14、输入学号:); scanf(%s,&an.no); pos=SearchByNo(a,n,an.no); if (pos!=-1) printf(学号已经存在,请重新输入!n); else break; printf(请输入姓名:); scanf(%s,&an.name); printf(请输入性别:); scanf(%s,&an.sex); printf(请输入出生年份:); scanf(%d,&an.birth .year); printf(请输入出生月份:); scanf(%d,&an.birth .month ); printf(请输入出生日期:); scanf(%d,&an.birt
15、h .day ); printf(请输入英语成绩:); scanf(%f,&an.sco.english ); printf(请输入数学成绩:); scanf(%f,&an.sco.math ); printf(请输入计算机成绩:); scanf(%f,&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); int i; if (pos=-1) print
16、f(学号不存在,请重新输入!n); return n;/减少学生人数,并返回该值 if (pos=n-1) n-; return n; for (i=pos;in;i+) ai=ai+1; n-; return n;/减少学生人数,并返回该值/*修改函数*/int ModifyByNo(Student*a,int n,char no) int pos=SearchByNo(a,n,no); int p; char sno15; if(pos=-1) printf(该学生不存在!n); return n; while (1) printf(请输入学号:); scanf(%s,&sno); p=S
17、earchByNo(a,n,sno); if(p=-1 | p=pos)/两种情况,1.下表不存在 2.不修改下表 strcpy(apos.no,sno); break; else printf(学生学号已存在,请重新输入!); printf(请输入姓名:); scanf(%s,&apos.name ); printf(请输入性别:); scanf(%s,&apos.sex); printf(请输入出生年份:); scanf(%d,&apos.birth .year); printf(请输入出生月份:); scanf(%d,&apos.birth .month ); printf(请输入出生日
18、期:); scanf(%d,&apos.birth .day ); printf(请输入英语成绩:); scanf(%f,&apos.sco.english ); printf(请输入数学成绩:); scanf(%f,&apos.sco.math ); printf(请输入计算机成绩:); scanf(%f,&apos.sco.mcu ); return n; void save(Student *a,int n) /保存函数 int i; FILE *fp; if(fp=fopen(student information.txt,wb)=NULL) printf(不能打开文件!n); exi
19、t(1); printf(n保存文件n); fprintf(fp,%d,n);/将记录数写入文件 fprintf(fp,rn);/将换行符号写入文件 for(i=0;in;i+) fprintf(fp,%st%st%st%d-%d-%dt%3.1ft%3.1ft%3.1ft%3.1f,ai.no,ai.name ,ai.sex ,ai.birth .year,ai.birth .month ,ai.birth .day ,ai.sco.english ,ai.sco .math ,ai.sco .mcu ,ai.sco.total );/写入记录 fprintf(fp,rn);/将换行符号写入
20、文件 fclose(fp); printf(成功保存文件!n);/*文件的读入*/int load(Student t) int i,n; FILE *fp; if(fp=fopen(student information.txt,rb+)=NULL)/打开文件 printf(不能打开文件!n); exit(1); fscanf(fp,%d,&n);/读入记录数 for(i=0;in;i+) 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.birth
21、.day,&ti.sco.english,&ti.sco.math,&ti.sco.mcu,&ti.sco.total);/读入记录 fclose(fp); printf(成功读入记录!); return n;void englishaver( Student stu,int n) /英语平均成绩int i;double aver1,sum1=0;for(i=0;in;i+) sum1+=stui.sco.english; aver1=1.0*sum1/n; printf(英语平均分:%.2fnn,aver1);void mathaver(Student stu,int n) /数学平均成绩
22、int i;double aver1,sum1=0;for(i=0;in;i+) sum1=sum1+stui.sco.math; aver1=sum1/n; printf(数学平均分: %.2fnn,aver1);void mcuaver(Student stu,int n) /计算机平均成绩 int i;double aver1,sum1=0 ;for(i=0;in+1;i+) sum1+=stui.sco.mcu; aver1=1.0*sum1/n; printf(计算机平均分: %.2fnn,aver1);void totalaver(Student stu,int n) /总平均成绩 int i ;double aver1,sum;for(i=0;in;i+) sum=stui.sco.mcu+stui.sco.english+stui
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1