C语言学生成绩管理系统设计

合集下载

C语言课程设计学生成绩管理系统

C语言课程设计学生成绩管理系统

C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。

它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。

本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。

一、系统需求分析首先,明确系统需要实现的基本功能。

包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。

同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。

对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。

二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。

可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。

例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。

每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。

录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。

查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。

修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。

统计模块用于计算学生的平均分、总分,并进行排名。

(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。

可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。

三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。

在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。

C语言课程设计-学生成绩管理系统-完整版

C语言课程设计-学生成绩管理系统-完整版

#include<>#include<>#include<>#include<>/* strcmp函数原型包含*/#define N 100/*定义最大学生人数为100*/struct student /*学生结构体定义*/{char no[11]; /*学号,10位*/char name[10];/*姓名,3个汉字*/char grade[10];/*班级*/char pro[20];/*专业*/float score[5];/*储存5门功课的成绩*/float ave;/*储存平均分*/int year;/*入学年*/}stu[N];int num;void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/void init(); /*系统初始化函数*/void newfile(); /*建立新的数据文件*/void read1(); /*从数据文件中读取数据*/void weihu(); /*维护界面函数*/void new1(); /*新增一个学生成绩函数*/void xiugai(); /*修改学生成绩*/void xgcj(int); /*修改成绩*/void delete1(); /*删除学生信息函数*/void tongji(); /*统计界面函数*/void tongji1(); /*计算每个学生平均分*/void tongji2(); /*计算每门课程的平均分*/void paixu1(); /*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/void find1(); /*查找界面函数*/int find(char sno[]); /*按学号查找*/int findname(char cname[]);/*按姓名查找*/void findyear(int cyear); /*按入学年查找*/void save(); /*保存文件*/void stop(); /*停顿函数*/void stop() /*停顿函数(公共函数)*/{printf("Press Any Key To Continue...\n");getchar();}void output() /*输出学生成绩函数(公共函数)*/{int i,j;printf("===================================================================\n") ;printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].p ro,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /*系统初始化函数 */{if(access("",0)) /*判断文件是否存在*/newfile(); /*若不存在,新建数据文件*/elseread1(); /*若存在,读取数据*/}void newfile() /*建立新的数据文件 */{int i;FILE *fp;if((fp=fopen("","wb"))==NULL) /*创建二进制文件*/{printf("创建文件失败,请重新运行程序.\n"); /*显示"创建文件失败,请重新运行程序"*/exit(0); /*终止程序*/}printf("初次运行,进行数据初始化...\n");/*显示"初次运行,进行数据初始化..."*/ stop();printf("请输入学生人数:");/*显示"请输入学生人数:"*/scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第 %d个学生的学号:",i+1); /*显示"请输入第i+1个学生的学号:"*/ getchar(); /*吃回车*/gets(stu[i].no);printf("姓名:"); /*显示"姓名:"*/gets(stu[i].name);printf("班级:"); /*显示"班级:"*/gets(stu[i].grade);printf("专业:"); /*显示"专业:"*/gets(stu[i].pro);printf("入学年n:");/*显示"入学年"*/scanf("%d",&stu[i].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[i].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[i].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[i].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[i].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的 %d 个数据为:\n",num); /*显示"刚才输入的 num 个数据为:"*/ printf("========================\n\n");output();}void read1() /*从数据文件中读取数据 */{FILE *fp;num=0; /*num为数据文件中实际存储的学生人数*/fp=fopen("","r");if(fp==NULL) /*数据文件不存在*/{printf("文件打开失败!重新运行程序\n"); /*显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /*文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp);num++;}num--;fclose(fp);printf("\t\t\t=======================================\n");printf(" \t\t\t现有 %d 个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ printf("\t\t\t=======================================\n\n");output();}void weihu() /*维护界面函数 */{char c1;while(1){printf("\n\n\n\t\t\t************************\n");printf("\t\t\t* 维护 *\n");printf("\t\t\t* 1. 新增 *\n"); /*新增*/printf("\t\t\t* 2. 删除 *\n"); /*删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /*修改*/printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t************************\n");printf("\t\t\t 请选择:\n");/*请选择:*/c1=getchar();getchar();if(c1=='9')break;switch(c1){case '1':new1();break;case '2':delete1();case '3':xiugai();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}void new1() /*新增一个学生成绩函数 */{printf("请输入学号:"); /*显示"请输入学号:"*/gets(stu[num].no);printf("姓名:"); /*显示"姓名:"*/gets(stu[num].name);printf("班级:"); /*显示"班级:"*/gets(stu[num].grade);printf("专业:"); /*显示"专业:"*/gets(stu[num].pro);printf("入学年:");/*显示"入学年"*/scanf("%d",&stu[num].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[num].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[num].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[num].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[num].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[num].score[4]);num++;printf("\n======================================\n");printf("现有 %d个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ printf("======================================\n\n");output();}void xiugai() /*修改学生成绩*/{char xg[11];int i;printf("\n请输入要修改学生的学号:\n\n");gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break;if(i==num){printf("\n数据文件无该生信息!\n\n请重新输入学号.\n\n"); stop();return;}xgcj(i);}void xgcj(int x) /*修改成绩*/{char xueke[5][10]={"C语言","高数","物理","电路","模电"};char (*p)[10],c;int j,k;p=xueke;for(;;){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 成绩 \n");printf("\t\t\t 语言 \n"); /*C语言*/printf("\t\t\t 2.高数 \n"); /*高数*/printf("\t\t\t 3.物理 \n"); /*大学物理*/printf("\t\t\t 4.电路 \n"); /*电路*/printf("\t\t\t 5.模电 \n"); /*模电*/printf("\t\t\t 9.返回 \n\n"); /*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择要修改的成绩(按 1.2.3.");c=getchar();getchar();if(c=='9')break;else if (c>='1'&&c<='5'){k=c-49;printf("\n请输入 %s 成绩:\n",p+k);scanf("%f",&stu[x].score[k]);printf("\n修息为:\n");printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].year);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n选择有误,请重选!\n\n");stop();}}int find(char sno[]) /*按学号查找 */{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /*判断两个字符串相等*/return i;/*查找成功*/return -1;/*查找失败*/}void delete1() /*删除学生信息函数*/{char cno[11];int i,j;printf("请输入要删除的学生学号:"); /*"请输入要删除的学生学号"*/ gets(cno);i=find(cno);{for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf("现有%d 个学生的成绩:\n",num); /*显示"现有 NUM个学生的成绩:"*/ output();}else {printf("请输入正确的学号. \n");stop();}}void tongji() /*统计界面函数 */{int i;char c2;while(1){printf("\n\n\n\t\t\t*******************************\n");printf("\t\t\t* 统计 *\n");printf("\t\t\t* 1. 学生平均分 *\n"); /*计算学生平均分*/printf("\t\t\t* 2. 课程平均分 *\n"); /*计算每门课程平均分*/ printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t*******************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c2=getchar();getchar();if(c2=='9') break;{case '1':tongji1();printf("\n\n学生平均分为:\n");printf("===========================================\n");printf("学号姓名入学年平均分\n");printf("===========================================\n");for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop();break;case '2':tongji2();break;default:printf("选择有误,请重选\n");/*"选择有误,请重选!"*/}}}void tongji1() /*计算每个学生平均分*/{int i,j;for(i=0;i<num;i++){stu[i].ave=0;for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j];stu[i].ave=stu[i].ave/5;}}void tongji2() /*计算每门课程的平均分*/ {int i,j;float sum;float avec[5]; /*储存每门课的平均分*/for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n各科平均分:\n");/*"各科平均分:"*/ printf("===================================\n"); printf("C语言高数大物电路模电\n");printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /*排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序 * \n");printf("\t\t\t* 1. 按学号排序 * \n"); /*按学号排序*/printf("\t\t\t* 2. 按平均分排序 * \n"); /*按平均分排序*/ printf("\t\t\t* 3. 按单科成绩排序 * \n"); /*按单科成绩排序*/ printf("\t\t\t* 9. 返回 * \n"); /*返回*/printf("\t\t\t***********************************\n\n");printf("\t请选择:(按1.2.3.9):\n");/*请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break;default:printf("\n选择有误,请重选!\n\n");/*选择有误,请重选!*/stop();}}}void paino() /*按学号排序*/{ /*按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0)change(j,j+1);printf("\n排序后为:\n"); /*"排序后为:"*/output();}void paiave() /*按平均分排序 */{ /*按平均分从高到低冒泡法排序*/int i,j;tongji1(); /*计算平均成绩*/for(i=0;i<num;i++)for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave)change(j,j+1);printf("\n\t排序后为:\n"); /*"排序后为:"*/printf("\t===============================================\n"); printf("\t学号姓名入学年平均分排名\n");printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1);stop();}void paidkcj() /*按单科成绩排序*/{char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩 \n");printf("\t\t\t 语言 \n"); /*C语言*/printf("\t\t\t 2.高数 \n"); /*高数*/printf("\t\t\t 3.物理 \n"); /*大学物理*/ printf("\t\t\t 4.电路 \n"); /*电路*/printf("\t\t\t 5.模电 \n"); /*模电*/printf("\t\t\t 9.返回 \n\n"); /*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择:(按1.2.3.");c=getchar();getchar();if(c=='9')break;else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n选择有误,请重选!\n\n");stop();}}void change(int i,int j) /*交换结构体数组中的两个记录*/{struct student temp;temp=stu[i];stu[i]=stu[j];stu[j]=temp;}void outputx(int k) /*选择输出单科成绩*/{char xueke[5][10]={"C语言","高数","物理","电路","模电"};char (*p)[10]; /*定义一个指向包含10个字符型元素的一维数组的指针变量*/int i;p=xueke;printf("\n\t排序后为:\n");printf("\t===============================================\n");printf("\t学号姓名入学年 %s 排名\n",p+k);printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /*查找界面函数*/{char c4;char cno[11],cname[10];int i,cyear;while(1){printf("\t\t\t*************************************\n");printf("\t\t\t* 查找 *\n");printf("\t\t\t* 1. 按学号查找 *\n"); /*按学号查找*/ printf("\t\t\t* 2. 按姓名查找 *\n"); /*按姓名查找*/ printf("\t\t\t* 3. 按入学年查找 *\n"); /*按入学年查找*/ printf("\t\t\t* 9. 返回 *\n"); /*返回*/printf("\t\t\t*************************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c4=getchar();getchar();if(c4==57) break;switch(c4){case '1':printf("输入学号:\n");/*"输入学号:"*/gets(cno);i=find(cno);panduani(i);break;case '2':printf("输入姓名:\n");/*"输入姓名:"*/gets(cname);i=findname(cname);panduani(i);break;case '3':printf("输入入学年:\n");/*"输入入学年"*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}int findname(char cname[]) /*按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /*判断两个字符串相等*/return i; /*查找成功*/return -1; /*查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf("要查找的学生不存在\n");stop(); }else{printf("查找到的学生信息为:\n");/*"查找到的学生信息为:"*/printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;for(i=0;i<num;i++)if(stu[i].year==cyear) /*判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro ,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}}}}void panduani(int i) /*通过i的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf("要查找的学生不存在\n");/*要查找的学生不存在*/stop();}else{printf("查找到的学生信息为:\n");/*"查找到的学生信息为:"*/printf("学号姓名班级专业入学年 C语言高数大物电路模电\n");printf("===================================================================\n") ;printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].p ro,stu[i].year);for(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /*保存文件*/{int i;FILE *fp;if((fp=fopen("","wb"))==NULL) /*创建二进制文件*/{printf("创建文件失败,请重新运行程序.\n"); /*显示"创建文件失败,请重新运行程序"*/exit(0); /*终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /*将I+1名学生成绩写入文件*/fclose(fp);}void main() /*主控菜单*/{char c;init();while(1){printf("\t\t*************欢迎登陆学生成绩管理系统************\n");printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,任卓辉****\n");printf("\n\t\t*************************************************\n");printf("\t\t* 主菜单 *\n");printf("\t\t* 1. 维护 *\n"); /*维护*/ printf("\t\t* 2. 统计 *\n"); /*统计*/ printf("\t\t* 3. 排序 *\n"); /*排序*/ printf("\t\t* 4. 查找 *\n"); /*排序*/ printf("\t\t* 9. 存盘退出 *\n"); /*存盘退出*/printf("\t\t*************************************************\n");printf("\t\t请选择:\n");/*请选择:*/c=getchar();getchar();switch(c){case '1':weihu();break;case '2':tongji();break;case '3':paixu1();break;case '4':find1();break;case '9':save();exit(0);break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/ }}}。

C语言课程设计--学生成绩管理系统

C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\n");printf("********************** 学生成绩管理系统************************\n");printf(" 1.输入学生成绩\n");printf(" 2.输出学生成绩\n");printf(" 3.查找并显示学生成绩\n");printf(" 4.按姓名查找,修改学生资料\n");printf(" 5.显示所有学生名单\n");printf(" 6.查找并删除学生信息\n");printf(" 7.从文件读取数据\n");printf(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。

C语言课程设计学生成绩管理系统设计

C语言课程设计学生成绩管理系统设计

C语⾔课程设计学⽣成绩管理系统设计第⼀章本课程设计的题⽬及要求1.1课程设计题⽬要求1. 要求利⽤C语⾔⾯向过程的编程思想来完成系统的设计;2. 突出C语⾔的函数特征,以多个函数实现每⼀个⼦功能;3. 画出功能模块图;4. 进⾏简单界⾯设计,能够实现友好的交互;5. 具有清晰的程序流程图和数据结构的详细定义;6. 熟练掌握C语⾔对⽂件的各种操作。

1.2设计思想程序运⽤结构体数组和循环进⾏程序的编写.第⼆章系统完成功能及功能框图2.1系统功能1每条记录包括⼀个学⽣学号、姓名、四科成绩。

2输⼊功能:可以⼀次完成⽆数条记录的输⼊。

3显⽰功能:完成全部学⽣记录的显⽰。

4查找功能:完成按学号查找学⽣记录,并显⽰。

5修改功能:通过查找学⽣学号,修改学⽣记录。

6保存功能:将学⽣记录保存到任何⾃定义的⽂件中。

7读取功能:将保存到⽂件中的学⽣记录读取出来。

8应提供⼀个界⾯来调⽤各个功能,调⽤界⾯和功能的操作界⾯应尽可能清晰美观。

2.2系统框图3.1主菜单输⼊字符后以获得相应的功能,按照菜单提⽰即可。

3.2输⼊信息和浏览信息3.3查询、修改和删除第四章⼯作分⼯我的主要任务是完成对该程序的设计⼯作,运⽤所学的知识来对该程序进⾏整体的设计,在这⼏天的编程时间⾥我会去图书馆查阅资料,以便对整个⼩组的⼯作提供最⼤的便利,最后我还将对检测过程进⾏帮助,⽤最快的速度帮助调试⼯作尽快的完成。

我⾸先设计了整个系统的主函数,这个函数可以最有效的将所有函数运⽤起来,并且减⼩程序的⼤⼩void main() //主函数{int fun;read_data();menu();while(1){system("color f0"); //编辑菜单及字体颜⾊printf("请输⼊功能号[0-6]:",&fun);scanf("%d",&fun);switch(fun){case 0: // 退出break;case 1: //按班级输出学⽣成绩view_data();break;case 2: //输⼊学⽣记录add();break;case 3: //删除学⽣记录delete_data();break;case 4: //编辑学⽣记录edit_data();break;case 5: //查询学⽣记录query_data_no();break;case 6: //统计系统query_data_tongji();break;}if(fun==0) break;to_menu();}}然后我将系统设计完整后运⽤了起泡法将浏览函数中加⼊了排序的函数,这样做可以使得输出的函数的结果更加的清晰,让使⽤者⽅便查找到要查找的对象strcpy(tmp.xueqi,dd.stu[i].xueqi);strcpy(tmp.no,dd.stu[i].no);strcpy(/doc/214575892.html,dd.stu[i].name);tmp.clas=dd.stu[i].clas;tmp.chi=dd.stu[i].chi;tmp.math=dd.stu[i].math;tmp.eng=dd.stu[i].eng;/doc/214575892.html=dd.stu[i].com;tmp.sum=dd.stu[i].sum;tmp.aver=dd.stu[i].aver;strcpy(dd.stu[i].xueqi,dd.stu[j].xueqi);strcpy(dd.stu[i].no,dd.stu[j].no);strcpy(dd.stu[i].name,dd.stu[j].name);dd.stu[i].clas=dd.stu[j].clas;dd.stu[i].chi=dd.stu[j].chi;dd.stu[i].math=dd.stu[j].math;dd.stu[i].eng=dd.stu[j].eng;dd.stu[i].com=dd.stu[j].com;dd.stu[i].sum=dd.stu[j].sum;dd.stu[i].aver=dd.stu[j].aver;strcpy(dd.stu[j].xueqi,tmp.xueqi);strcpy(dd.stu[j].no,tmp.no);strcpy(dd.stu[j].name,/doc/214575892.html);dd.stu[j].clas=tmp.clas;dd.stu[j].chi=tmp.chi;dd.stu[j].math=tmp.math;dd.stu[j].eng=tmp.eng;dd.stu[j].com=/doc/214575892.html;dd.stu[j].sum=tmp.sum;dd.stu[j].aver=tmp.aver;在系统中我将添加的函数设计为下次使⽤可以记录内容的,⾥⾯主要运⽤到了结构体中的count变量,并且加⼊了保存项⽬中,这样做使得下次使⽤时添加数据更加便利,仅仅运⽤添加就可以满⾜使⽤者的需求。

C语言课程设计之学生成绩管理系统

C语言课程设计之学生成绩管理系统

C语言课程设计之学生成绩管理系统#include<conio。

h>/*清屏*/#include <stdio.h〉#include <stdlib.h>#include <string。

h>/*字符串函数*/typedef struct student_type Student;void fun(Student *stu);/*student结构体的指针*/void fun1(Student *stu);/*录入成绩*/void fun2(Student *stu);/*按学号成绩查询*/void fun3(Student *stu);/*按姓名成绩查询*/void fun4(Student *stu);/*新增学生记录*/void fun5(Student *stu);/*修改学生记录*/void fun6(Student *stu);/*删除学生记录*/void fun7(Student *stu);/*输出学生记录*/void count(Student *stu);/*统计成绩*/void sort(Student stu[],int n);/*排序*/void save(Student *stu);struct student_type/*录入*/{char num[20];/*学号,数组长度为20*/ char name[20];/*姓名*/float chinesescore; /*语文分数*/float mathscore;/*数学分数*/float englishscore;/*英语分数*/int max[20];int total[20];int ave[20];int sum;int score[4]; /*总成绩及3门课成绩*/}stud[100];int t;int main(){int i;Student stu_table[20];for (i = 0; i<20; i++)fun(&stu_table[i]);for (i = 0;i<20; i++)fun7(&stu_table[i]);printf(”\n");for (i = 0; i<20; i++)save(stu_table);return 0;}void fun(Student *stu){int n;printf(”\n\n\t\t学生档案管理系统");printf("\n\n\t—--——-——--—-—-—-------—---—————-———-----”);printf(”\n\n\t\t1:录入学生信息系统");printf(”\n\n\t\t2:修改学生信息系统");printf(”\n\n\t\t3:删除学生信息系统");printf("\n\n\t\t4:查询学生信息系统”);printf("\n\n\t\t5:输出学生信息系统");printf(”\n\n\t\t6:退出系统");printf("\n\n\t—--——————----—-—-———-——--—-—-——-———————-");printf(”\n\n请选择你要的服务(按数字1~6进入):”);scanf(”%d”,&n);system(”cls”);if (n == 1){printf("\n\n\t\t欢迎进入录入学生系统〉_〈");fun1(stu);}else if (n == 2){printf(”\n\n\t\t欢迎进入修改学生系统>_〈");fun5(stu);}else if (n == 3){printf(”\n\n\t\t欢迎进入删除学生系统〉_〈”);fun6(stu);}else if (n == 4){printf("\n\n\t\t欢迎进入查询学生系统>_〈”);printf("\n\n\t——-----—-————-—--—-----———-——-———---—-—-”);printf(”\n\n\t\t1:按学号查询学生信息系统");printf("\n\n\t\t2:按姓名查询学生信息系统”);printf("\n\n\t——-—---—-———---------——-——-—--—————-----");printf(”\n\n请选择你要的服务(按数字1~2进入):");scanf("%d”,&n);system("cls");if (n == 1){printf("\n\n\t\t1:按学号查询学生信息系统");fun2(stu);}else if (n == 2){printf(”\n\n\t\t1:按姓名查询学生信息系统”);fun3(stu);}else{printf(”\n\n\t\t数据错误");}}else if (n == 5){printf(”\n\n\t\t欢迎进入输出学生系统>_〈\n”);fun7(stu);}else if (n == 6){printf(”\n\n\t\t谢谢使用学生管理系统!〉_〈\n”);printf(”\n\n\t\t请双击Enter键退出系统:");getchar();getchar();exit(0);}elseprintf(”\n\n\t\t数据错误");}void fun1(Student *stu){int i;char d;printf(”\n\n\t请输入学生的数量:");scanf("%d", &t);for (i = 0; i〈t;i++){printf(”\n\t\t请输入学生学号:”);scanf(”%s",stu[i].num);printf("\n\t\t请输入学生姓名:”);scanf(”%s",stu[i]。

C语言课程设计—学生成绩管理系统

C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。

它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。

在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。

2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。

•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。

•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。

2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。

•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。

•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。

•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。

2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。

•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。

•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。

•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。

3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。

在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。

二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。

2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。

3.数据结构:链表、栈、队列、树等。

4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。

5.调试与优化:调试方法、性能分析、代码优化等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。

1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。

2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。

3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。

四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:《C语言程序设计》。

2.多媒体资料:教学PPT、视频教程、在线编程练习等。

3.实验设备:计算机、网络设备、编程环境等。

五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

C语言课程设计学生成绩管理系统

安全性:系统采用用户身份验证和权限管理,确保数据的安全性和完整性。
PART THREE
学生信息包括:姓名、学号、性别、班级、成绩等 学生信息录入方式:手动输入、文件导入、数据库查询等 学生信息录入界面设计:简洁明了,易于操作 学生信息录入注意事项:确保信息准确无误,避免重复录入
查询结果:显示学生的基本 信息、成绩、课程等信息
系统故障分类:硬件故障、软件故障、网络故障等 故障处理流程:发现故障、分析原因、采取措施、恢复系统 应急预案:制定应急预案、定期演练、及时更新 数据备份与恢复:定期备份数据、灾难恢复计划
汇报人:
,a click to unlimited possibilities
汇报人:
CONTENTS
PART ONE
PART TWO
目标:实现学 生成绩的高效
管理
功能:学生信 息管理、成绩 录入、成绩查 询、成绩统计、 成绩分析、成
绩排名等
系统用户:学生、教师、管理员
权限设置:学生只能查看自己的成绩,教师可以查看和管理所有学生的成绩,管理员可以管理所有用户和权限
查询和报表的界面设计:简 洁明了,易于操作
查询和报表的数据处理:高效、 准确,保证数据的一致性和完 整性
PART SIX
数据备份:定期备份数据,防止数据丢失 数据恢复:在数据丢失或损坏时,能够快速恢复数据 备份策略:制定合理的备份策略,确保数据的完整性和一致性 备份工具:使用专业的备份工具,提高备份效率和可靠性
删除方式:通过学生ID进行 删除
删除条件:学生信息存在且 未被删除
删除操作:在数据库中执行 删除语句
删除结果:学生信息从数据库 中被删除,系统提示删除成功
PART FOUR
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

航空航天大学课程设计报告大作业名称:C语言课程设计大作业题目:学生成绩管理系统设计院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2016年12月24日目录第1章概要设计 (1)1.1题目的容与要求 (1)1.2总体结构 (1)第2章详细设计 (2)2.1主模块 (2)2.2输入模块 (3)2.3显示模块 (3)2.4修改模块 (4)2.5删除模块 (4)2.6查询模块 (5)2.7统计模块 (6)第3章调试分析 (7)第4章使用说明 (8)参考文献 (12)附录(程序清单) (14)第1章概要设计1.1题目的容与要求容:学生成绩信息包括:姓名、学号、语文、数学、英语。

实现的主要功能有:1)信息维护。

包括学生成绩的输入、按学号删除、按学号修改等。

2) 信息查询。

输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分并显示,按总分将所有学生成绩排序,显示出该生的名次。

3)成绩统计。

先输入任意一个科目,接着选择a或b来分别显示平均分或统计分数段学生,若选择a,则直接显示出该科目的平均分;若选择b,则提示用户输入一个分数段,显示所有该科目属于该分数段的学生信息,并给出学生总数。

要求:1)系统以菜单方式工作。

在不同的界面为用户给出具体提示。

2)系统利用C语言实现,源程序要有适当的注释。

3)采用VC环境进行运行调试。

1.2总体结构本程序主要分为七个模块(功能模块图见图1.1):结构体模块,输入模块,显示模块,修改模块,删除模块,查询模块,统计模块。

结构体模块:建立一个结构体模块,为链表存信息用。

输入模块:键盘输入每个学生的信息,并保存在文件中。

显示模块:显示全部学生的具体信息。

修改模块:修改某个学生的成绩信息。

删除模块:删除某个学生的全部信息。

查询模块:查询某个学生的具体信息。

统计模块:通过功能选择,统计并显示某一科目的平均分或某分数段学生的具体信息。

图1.1 功能模块图第2章 详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,图2.1 主模块流程图注释:1.显示主菜单;2.选择不同序号执行不同功能;2.2输入模块图2.2 输入模块流程图注释:1. 循环输入每个学生的信息;2. 保存所有信息2.3显示模块2.3所示。

图2.3 显示模块流程图注释:1. 选择号好功能;2. 显示全部学生的具体信息。

2.4修改模块YN图2.4 修改模块流程图注释:1.输入要修改学生的学号;2.输入要修改的科目信息;3.修改成功,是否要继续修改。

是,继续;否,回到主菜单。

2.5删除模块按学号删除某学生的全部信息,流程图如图2.5所示。

图2.5 删除模块流程图注释:1.输入要删除的学生的学号;2.显示该生信息,是否删除。

是,删除;否,是否继续操作。

3.是否继续删除。

是,重复上述操作;否,退出回到主菜单。

2.6查询模块2.6所示。

Y注释:1.输入要查询的学生的学号;2.显示该生的具体信息;3.是否继续查询。

是,继续查询下一位;否,回到主菜单。

2.7统计模块通过选择不同功能,显示某个科目的平均分或某分数段学生的具体图2.7 统计模块流程图注释:1. 通过菜单选择科目;2. 通过菜单选择a或b功能,分别显示该科目平均分或某分数段学生信息;3. 是否继续查询?是,继续;否,回到主菜单。

第3章调试分析在这次课程设计中,程序编写的过程中遇到了很多问题,主要是函数实现方面问题较多。

问题1:查询函数chaxun( )中,会造成数据混乱,原因是for循环中某行代码运用错误,如下:for(i=0;i<n;i++){if(stu[i].num==x){k=i;/*找到要查询的同学学号,并用k记下其下标*/}OutputOneStudent(k);}将OutputOneStudent(k);拿出后,查询功能正常实现。

正确编写如下:for(i=0;i<n;i++){if(stu[i].num==x){k=i;/*找到要查询的同学学号,并用k记下其下标*/}}OutputOneStudent(k);问题2:统计函数tongji(),功能实现完后不能回到主菜单。

解决方法是,把功能函数gongneng()其中的while循环删掉。

第4章使用说明运行截图如下:1.输入成绩2.信息显示3.修改信息4.删除信息5.查询信息6.1统计信息----科目平均分6.2统计信息----科目某分数段学生信息7.退出系统参考文献1.王敬华,《C语言程序设计教程(第二版)》,清华大学出版社,2009年8月2.谭浩强,《C语言程序设计教程(第二版)》,清华大学出版社,1999年12月3.谭浩强,《C语言程序设计题解与上机指导》,清华大学出版社,2000年11月4.田淑清,《C语言程序设计辅导与习题集》,中国铁道出版社,2000年1月5.荣梅、梁晓林,《Visual C++实用教程》,冶金工业出版社,2004年附录(程序清单)程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 3struct student{int num; //学号char name[20]; //姓名float score[3]; //三门课成绩float sum; //总分float aver; //平均分}stu[N];void menu(); //主菜单功能void input(); //输入信息到结构体中void save(int x); //保存stud.dat文件函数void print(); //输出显示所有学生信息void SaveAllStudent(int n); //保存全部学生信息void xiugai(int n); //按学号修改成绩int shanchu(int n); //按学号删除void OutputOneStudent(int i); //查询一个学生的信息void chaxun(int n); //按学号查询成绩void tongji(); //统计科目信息void gongneng(int x); //a或b功能分别显示科目平均分或分数段学生信息int main(){printf("***********************************************************\n");printf("* *\n");printf("* Hwadee &学生成绩管理系统& Hwadee *\n");printf("* *\n");printf("******************************************************\n\n\n");printf("****************●●欢迎使用●●*******************\n");while(1){menu();}return 0;}/*主菜单***********************************************************/ void menu(){int choice;int n=N;printf("\n请选择功能:\n");printf("\n1:输入成绩\n2:显示信息\n3:修改成绩\n4:删除信息\n5:查询成绩\n6:成绩统计\n0:退出系统\n\n");printf("\n请选择序号:\n");scanf("%d",&choice);switch(choice){case 1:input();save(N);break;case 2:print();break;case 3:xiugai(n);break;case 4:shanchu(n);break;case 5:chaxun(n);break;case 6:tongji();break;case 0:printf ("\n谢谢使用,再见!\n\n");exit (-1);break;default:printf("输入错误!\n");break;}}/*写入函数****************************************************/ void input(){int i,j;printf("\n输入信息\n");for(i=0;i<N;i++){printf("输入学号:");scanf("%d",&stu[i].num);printf("输入姓名:");scanf("%s",&stu[i].name);for(j=0;j<N;j++){printf("第%d门成绩的分数:",j+1);scanf("%f",&stu[i].score[j]);}stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];stu[i].aver=stu[i].sum/3;printf("\n");}}/*写入文件***********************************************************/ void save(int x){FILE *fp;/*定义文件指针用于向文件读入数据*/int i;if((fp=fopen("student.dat","rb+"))==NULL)/*以二进制读,写方式打开文件*/{printf("cannot open file\n");exit(1);}for(i=0;i<N;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("file write error\n");}}fclose(fp);printf("\n\n信息保存成功!恭喜!!\n\n");}/*显示全部学生信息**************************************************/ void print(){int i;printf("学号姓名语文数学英语总分平均分\n");for(i=0;i<N;i++)printf("%d %s %.2f %.2f %.2f %.2f %.2f\n",stu[i ].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[ i].sum,stu[i].aver);}/*保存全部学生信息******************************************8*/void SaveAllStudent(int n){FILE *fp;if((fp=fopen("student.dat","wb"))==NULL){printf("文件打开失败!\n");exit(1);}fwrite(stu,sizeof(struct student),n,fp);fclose(fp);}/*修改学生信息************************************************/ void xiugai(int n){struct student temp;int k=-1,x,i;char c1='y';while(c1=='y'){printf("\n请输入要修改的同学的学号:");scanf("%d",&x);for(i=0;i<n;i++){if(x==stu[i].num){k=i;/*找到要修改的同学学号,并用k记下其下标*/ break;}}if(k<0){printf("\n输入学号有误,请重新输入!");}else{printf("\n请输入要修改学生修改后的的信息\n");printf("语文(空格)数学(空格)英语\t\n");scanf("%f %f %f",&temp.score[0],&temp.score[1],&temp.score[2]);temp.sum=(temp.score[0]+temp.score[1]+temp.score[2]);temp.aver=(temp.score[0]+temp.score[1]+temp.score[2])/3;stu[k].score[0]=temp.score[0];/*修改该学生信息*/stu[k].score[1]=temp.score[1];stu[k].score[2]=temp.score[2];stu[k].sum=temp.sum;stu[k].aver=temp.aver;printf("\n修改成功!恭喜!!\n");break;}SaveAllStudent(k);printf("\n继续修改操作吗?");printf("\n继续修改请按y;不进行修改请按n\n");getchar();c1=getchar();}printf("\n按任意键继续!\n");getchar();}/*删除学生信息*************************************************/ int shanchu(int n){int i,k=-1,x;char c1='y',c2;while(c1=='y'){c2='n';printf("\n请输入要删除的同学的学号:");scanf("%d",&x);for(i=0;i<n;i++){if(x==stu[i].num){k=i;/*找到要删除的同学学号,并用k记下其下标*/ break;}}if(k<0){printf("\n输入学号有误,请重新输入!");}else{printf("\n该同学信息如下:\n");OutputOneStudent(k);printf("\n\n确定删除?\n");printf("确定进行删除请按y;不进行删除请按n\n");getchar();c2=getchar();if(c2=='y'){for(i=k;i<n;i++){stu[i]=stu[i+1];}n--;/*学生人数减1*/printf("\n删除成功!恭喜!!\n");}elseprintf("\n取消删除!\n");printf("\n继续删除操作吗?");printf("\n继续删除请按y;不进行删除请按n\n");getchar();c1=getchar();}}save(n);printf("\n按任意键继续!\n");getchar();return (n);}/*查询一个学生信息********************************************/void OutputOneStudent(int i){printf("学号:%d 姓名:%s \n",stu[i].num,stu[i].name);printf("语文:%.1f 数学:%.1f 英语:%.1f 总分:%.1f 平均分:%.2f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum, stu[i].aver);}/*按学号查询学生信息**************************************/void chaxun(int n){int i,j,k,x;char c='y';while(c=='y'){k=-1;printf("\n请输入学生学号:");scanf("%d",&x);if(x>3||x<1){break;}for(i=0;i<n;i++){if(stu[i].num==x){k=i;/*找到要查询的同学学号,并用k记下其下标*/ }}OutputOneStudent(k);stu[x-1].num=1; //该生排名for(j=0;j<3;j++){if(stu[j].sum>stu[x-1].sum)stu[x-1].num++;}printf("\n该生排名为第%d名。

相关文档
最新文档