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. 学生能理解C语言在开发学生成绩管理系统中的应用,掌握基本的程序结构和语法。

2. 学生能运用C语言实现对学生成绩的录入、查询、修改、删除和排序等功能。

3. 学生了解并掌握数组、结构体、文件操作等C语言核心知识在学生成绩管理系统中的运用。

技能目标:1. 学生能够独立设计并编写简单的C语言程序,实现学生成绩管理系统的基本功能。

2. 学生能够运用调试工具对程序进行调试,找出并修正程序中的错误。

3. 学生能够通过分析实际需求,提出合理的解决方案,提高编程解决问题的能力。

情感态度价值观目标:1. 学生通过学习C语言学生成绩管理系统,培养对计算机编程的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享、合作,培养良好的团队精神和编程习惯。

3. 学生通过解决实际问题,体会编程带来的成就感,增强自信心,培养积极向上的学习态度。

课程性质:本课程属于实践性较强的课程,旨在让学生通过动手实践,掌握C 语言编程技能,并能够应用于实际问题的解决。

学生特点:学生已经具备一定的C语言基础,对编程有一定的了解,但对复杂程序的设计和开发尚处于起步阶段。

教学要求:结合学生特点和课程性质,本课程要求教师注重实践操作,引导学生通过动手实践掌握编程技能,并在实践中提高解决问题的能力。

同时,注重培养学生的团队协作和沟通能力,提高学生的综合素质。

通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程的学习打下坚实基础。

二、教学内容1. C语言基础知识回顾:包括数据类型、运算符、控制结构等,为后续课程打下基础。

(对应教材章节:1-3章)- 数据类型、变量定义- 运算符、表达式- 顺序结构、分支结构、循环结构2. 数组与函数:介绍数组的使用以及函数的定义与调用,为成绩管理系统提供数据存储和处理方法。

(对应教材章节:4-5章)- 一维数组、二维数组- 函数的定义、调用、参数传递- 递归函数3. 结构体与文件操作:讲解结构体的定义和使用,以及文件操作的基本方法,为成绩管理系统提供数据存储和读取功能。

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

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

部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解

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语言课程设计

学生成绩管理系统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课程设计学生成绩管理系统

c课程设计学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握学生成绩管理系统的基本概念和功能。

2. 学生能够运用所学知识,设计并实现一个简易的学生成绩管理系统。

3. 学生了解数据库的基本操作,如数据的插入、查询、更新和删除。

技能目标:1. 学生掌握使用编程语言(如Python、Java等)开发简单的数据库应用。

2. 学生能够运用结构化查询语言(SQL)进行数据库的基本操作。

3. 学生具备分析和解决实际问题的能力,能够根据需求设计合适的数据库结构。

情感态度价值观目标:1. 学生培养对计算机科学的兴趣和热情,增强学习动力。

2. 学生树立团队合作意识,学会在团队中发挥个人优势,共同完成任务。

3. 学生认识到信息技术的实用价值,提高对现代社会信息技术的认识。

课程性质分析:本课程为信息技术或计算机科学相关课程的实践环节,旨在通过设计与实现学生成绩管理系统,让学生将所学理论知识应用于实际项目中。

学生特点分析:学生具备一定的编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。

教学要求:1. 结合课本知识,引导学生运用编程语言和数据库技术实现学生成绩管理系统。

2. 注重实践操作,让学生在动手实践中掌握课程知识。

3. 强调团队协作,培养学生沟通、协作和解决问题的能力。

4. 结合课程目标,对学生的学习成果进行评估,确保课程目标的达成。

二、教学内容1. 数据库基础知识回顾:包括数据库的定义、作用、分类,重点掌握关系型数据库的基本概念。

教材章节:第一章 数据库概述2. 数据库设计:讲解数据库设计的基本原则,指导学生设计学生成绩管理系统的数据库表结构。

教材章节:第二章 数据库设计3. 结构化查询语言(SQL):复习SQL的基本语法,包括数据定义、数据查询、数据更新和数据删除。

教材章节:第三章 结构化查询语言4. 编程语言与数据库连接:根据学生已掌握的编程语言,教授如何使用编程语言操作数据库。

教材章节:第四章 编程语言与数据库连接5. 学生成绩管理系统功能模块设计:分析系统需求,设计功能模块,包括学生信息管理、课程信息管理、成绩管理等。

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

C语言课程设计学生成绩管理系统
安全性:系统采用用户身份验证和权限管理,确保数据的安全性和完整性。
PART THREE
学生信息包括:姓名、学号、性别、班级、成绩等 学生信息录入方式:手动输入、文件导入、数据库查询等 学生信息录入界面设计:简洁明了,易于操作 学生信息录入注意事项:确保信息准确无误,避免重复录入
查询结果:显示学生的基本 信息、成绩、课程等信息
系统故障分类:硬件故障、软件故障、网络故障等 故障处理流程:发现故障、分析原因、采取措施、恢复系统 应急预案:制定应急预案、定期演练、及时更新 数据备份与恢复:定期备份数据、灾难恢复计划
汇报人:
,a click to unlimited possibilities
汇报人:
CONTENTS
PART ONE
PART TWO
目标:实现学 生成绩的高效
管理
功能:学生信 息管理、成绩 录入、成绩查 询、成绩统计、 成绩分析、成
绩排名等
系统用户:学生、教师、管理员
权限设置:学生只能查看自己的成绩,教师可以查看和管理所有学生的成绩,管理员可以管理所有用户和权限
查询和报表的界面设计:简 洁明了,易于操作
查询和报表的数据处理:高效、 准确,保证数据的一致性和完 整性
PART SIX
数据备份:定期备份数据,防止数据丢失 数据恢复:在数据丢失或损坏时,能够快速恢复数据 备份策略:制定合理的备份策略,确保数据的完整性和一致性 备份工具:使用专业的备份工具,提高备份效率和可靠性
删除方式:通过学生ID进行 删除
删除条件:学生信息存在且 未被删除
删除操作:在数据库中执行 删除语句
删除结果:学生信息从数据库 中被删除,系统提示删除成功
PART FOUR

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

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

c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。

–理解结构体和文件操作等相关知识。

2.技能目标:–能够运用C语言编写简单的程序。

–学会使用C语言实现数据的输入、输出和处理。

–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。

3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。

–培养学生的团队协作能力和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。

具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。

2.数据结构:结构体、数组、指针等。

3.文件操作:文件的打开、关闭、读写等。

4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。

3.实验法:让学生动手实践,编写程序,培养实际编程能力。

四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。

2.参考书:《C Primer Plus》、《C语言编程思想》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程作业等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。

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

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

学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,能够设计并实现一个学生成绩管理系统;2. 让学生了解并掌握文件操作在C语言中的实现方法,能够完成数据的存储与读取;3. 让学生理解模块化编程的思想,能够将复杂的程序分解为多个简单、独立的功能模块。

技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程技巧;2. 培养学生分析问题、设计算法、编写程序、调试程序的能力;3. 培养学生团队协作能力,能够与他人共同完成一个项目。

情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发学生学习C语言的积极性;2. 培养学生认真负责、严谨细致的工作态度,养成良好的编程习惯;3. 培养学生善于思考、勇于创新的精神,提高学生的自主学习能力。

分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 能够独立设计并实现一个具备基本功能的学生成绩管理系统;2. 能够运用所学知识,完成对学生成绩的增、删、改、查等操作;3. 能够通过团队协作,优化系统功能,提高系统性能;4. 能够对编程过程中遇到的问题进行自主分析、解决,并在实践中不断总结经验,提高编程能力。

二、教学内容根据课程目标,本章节的教学内容主要包括以下几部分:1. C语言基础回顾:结构体、数组、函数的定义与使用;2. 文件操作:文件的打开、关闭、读写操作;3. 模块化编程:功能模块的划分、接口设计、实现与调用;4. 学生成绩管理系统需求分析:功能模块划分、数据结构设计;5. 学生成绩管理系统的设计与实现:各功能模块的具体实现;6. 团队协作与项目实践:项目分工、进度安排、协作沟通。

具体教学大纲安排如下:1. 复习C语言基础知识,明确课程所需掌握的基本概念(1课时);2. 讲解文件操作原理,并通过示例演示文件操作在C语言中的实现(2课时);3. 介绍模块化编程思想,分析学生成绩管理系统功能模块划分及接口设计(2课时);4. 分析学生成绩管理系统需求,引导学生进行数据结构设计(2课时);5. 指导学生进行学生成绩管理系统的设计与实现,分阶段完成各功能模块(6课时);6. 安排团队协作项目实践,确保学生在实践中掌握所学知识,提高编程能力(4课时)。

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

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

C语言程序课程设计--学生成绩管理系统
学生成绩管理系统是一种利用计算机程序来储存、处理和管理学生成绩信息的系统。

它可以收集、整理学生的相关成绩信息,如学生的学号、姓名、年级及其对应的期末考试
成绩,实现对这些成绩的存储、修改、查询和汇总统计等功能。

它可以不仅可以查询当前
成绩,还可以查询学生在不同学期的前若干学期的成绩状况,方便学校管理者和老师快速
了解到学生的学习状况。

首先,学生成绩管理系统需要建立学生信息数据库,储存学生的基本信息,以及课程、考试成绩的数据表,用以储存和查询学生的考试成绩。

比如有学生信息表:学号,姓名,
班级、学科成绩表:报考科目,期末考试成绩,考试时间等等。

接着,学生成绩管理系统需要实现一些基本功能用于操作这些数据表。

根据学校成绩
管理的需要,系统可以实现新增学生、新增科目成绩、查询学生成绩、修改学生成绩等功能,为学校提供必要的成绩管理支持。

其次,学生成绩管理系统还可以进行学生成绩的统计分析。

可以对学生在各科考试中
的情况进行统计分析,分析学生的表现,以便学校更方便、更全面地了解学生的学习状况。

最后,学生成绩管理系统为管理者和老师提供更便捷、高效的管理效率,减少管理者
管理工作时间,节约学校的人力资源,有助于改善学子的学习水平。

综上所述,学生成绩管理系统对于教育管理者而言,无疑是一个非常重要的系统,为
学校管理者和老师提供了快速准确的学生成绩信息,帮助他们更好地了解学生的成绩状况,进而提高教育管理的精准性和质量。

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

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

c语言课程设计学生成绩管理系统一、课程目标知识目标:1. 理解C语言编程的基本概念,掌握数据类型、变量、运算符、控制结构等基础知识。

2. 学习使用数组、函数和指针等C语言特性进行程序设计。

3. 掌握文件操作,实现对数据的保存和读取。

技能目标:1. 能够运用C语言编写学生成绩管理系统的各个功能模块,如录入、查询、修改和删除成绩。

2. 培养学生运用结构体处理复杂数据结构的能力。

3. 提高学生分析问题、设计程序、调试程序和解决问题的能力。

情感态度价值观目标:1. 培养学生认真负责、细心严谨的学习态度,养成良好的编程习惯。

2. 激发学生创新意识,鼓励合作交流,提高团队协作能力。

3. 培养学生面对挫折和困难时,保持积极心态,勇于克服问题。

本课程针对高年级学生,结合C语言课程知识,以学生成绩管理系统为实际案例,注重理论与实践相结合。

在教学过程中,充分考虑学生的认知特点,由浅入深,逐步引导学生掌握C语言编程技能,培养实际编程能力。

课程目标明确,分解为具体学习成果,便于教学设计和评估。

通过本课程的学习,使学生能够独立完成学生成绩管理系统的设计与实现,提高编程水平和实践能力。

二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式、控制结构(条件语句、循环语句)。

相关教材章节:第一章至第三章。

2. 函数与数组:函数定义、调用、传参;一维数组、二维数组的应用。

相关教材章节:第四章、第六章。

3. 指针与结构体:指针的概念、操作;结构体的定义、初始化、使用。

相关教材章节:第七章、第八章。

4. 文件操作:文件打开、关闭、读写操作;文件存储结构。

相关教材章节:第十章。

5. 学生成绩管理系统设计与实现:a. 功能需求分析:录入、查询、修改、删除成绩。

b. 数据结构设计:学生信息结构体、成绩结构体、链表或数组实现。

c. 功能模块实现:各功能模块的详细设计与编程实现。

d. 系统测试与调试:单元测试、集成测试、性能优化。

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

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

c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。

2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。

3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。

技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。

2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。

3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。

情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。

2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。

3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。

课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。

学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。

教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。

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

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

c 课程设计学生成绩管理系统一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握学生成绩管理系统的相关概念、原理和方法;技能目标要求学生能够运用学生成绩管理系统进行成绩的录入、查询、统计和分析;情感态度价值观目标要求学生树立正确的成绩观,认识到成绩管理的重要性,培养学生的责任感和使命感。

通过本课程的学习,学生将能够:1.描述学生成绩管理系统的概念、原理和方法;2.运用学生成绩管理系统进行成绩的录入、查询、统计和分析;3.认识到成绩管理的重要性,树立正确的成绩观,培养责任感和使命感。

二、教学内容本课程的教学内容主要包括学生成绩管理系统的概念、原理和方法,以及如何运用学生成绩管理系统进行成绩的录入、查询、统计和分析。

1.学生成绩管理系统的概念、原理和方法:介绍学生成绩管理系统的定义、功能、特点和应用,讲解成绩管理的原理和方法。

2.学生成绩管理系统的运用:教授如何运用学生成绩管理系统进行成绩的录入、查询、统计和分析,包括操作步骤和技巧。

3.成绩观的教育:引导学生树立正确的成绩观,认识到成绩管理的重要性,培养学生的责任感和使命感。

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

1.讲授法:通过讲解学生成绩管理系统的概念、原理和方法,让学生掌握基本知识。

2.案例分析法:通过分析实际案例,让学生学会如何运用学生成绩管理系统进行成绩的录入、查询、统计和分析。

3.讨论法:学生进行分组讨论,引导学生思考成绩管理的重要性,培养学生的责任感和使命感。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:为学生提供基本的学习资料,包括学生成绩管理系统的概念、原理和方法等内容。

2.参考书:为学生提供更多的学习资源,以便深入研究学生成绩管理系统的相关知识。

3.多媒体资料:通过视频、动画等形式,为学生提供直观的学习材料,帮助学生更好地理解学生成绩管理系统的工作原理。

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

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

学生成绩管理系统c语言课程设计学生成绩管理系统是指通过计算机技术来管理学生的各类成绩信息的系统,主要包括学生信息的录入、查询、修改和删除,成绩信息的录入、查询、修改和统计等功能。

下面是一个关于学生成绩管理系统的C语言课程设计的参考内容。

一、需求分析1. 系统具备学生信息的录入功能,包括学号、姓名、性别、年龄、班级等信息。

2. 系统具备学生成绩的录入功能,包括课程名称、学分、成绩等信息。

3. 系统具备学生信息的查询功能,可以通过学号、姓名等关键字进行查询,并显示结果。

4. 系统具备学生成绩的查询功能,可以按照学号、课程名称等关键字进行查询,并显示结果。

5. 系统具备学生成绩的统计功能,可以统计某一门课程的平均分、最高分、最低分等。

6. 系统具备学生信息的修改功能,可以修改学生的基本信息。

7. 系统具备学生成绩的修改功能,可以修改学生的某一门课程成绩。

8. 系统具备学生信息的删除功能,可以根据学号删除学生的信息。

9. 系统具备学生成绩的删除功能,可以根据学号删除学生的某一门课程成绩。

二、设计思路1. 定义学生信息和成绩信息的结构体,在结构体中定义相应的成员变量。

2. 定义学生信息和成绩信息的数组,用于存储录入的数据。

3. 通过循环菜单的方式,提供用户选择所需功能。

4. 根据用户的选择,调用相应的函数实现相应的功能。

三、实现步骤1. 定义学生信息和成绩信息的结构体,包括学号、姓名、性别、年龄、班级等信息。

2. 定义学生信息和成绩信息的全局变量,用于存储录入的数据。

3. 实现学生信息的录入功能,通过scanf函数接收用户输入,并将数据存储到学生信息数组中。

4. 实现学生成绩的录入功能,通过scanf函数接收用户输入,并将数据存储到成绩信息数组中。

5. 实现学生信息的查询功能,通过for循环遍历学生信息数组,根据关键字查询并输出结果。

6. 实现学生成绩的查询功能,通过for循环遍历成绩信息数组,根据关键字查询并输出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计说明书 (4)第一章:设计任务分析 (5)1.1 课程设计意义: (5)1.2 课程设计目的: (5)1.3 课程设计所培养的能力 (5)1.4 学生成绩管理系统设计要求 (6)1.5 学生成绩管理系统实现的功能 (6)第二章:技术文档 (7)2.1 程序的总体设计 (7)2.2 主要数据 (7)2.2.1 库文件 (7)2.2.2 调用函数及函数文件 (8)2.2.3 结构体数组及宏定义 (8)2.3模块设计及具体的算法分析 (9)2.3.1输入模块 (9)2.3.2 删除多余数据模块 (11)2.3.3 搜索模块 (12)2.3.4 插入成绩 (15)2.3.5显示函数 (16)2.3.6 数据保存函数 (16)2.3.7 成绩排序 (16)2.3.8统计分数 (17)2.3.9 主函数 (17)第三章:用户文档 (18)第四章:源程序代码清单 (19)Main.c文件 (19)Common.c文件 (21)Deleteitem.c文件 (21)Find.c文件 (22)Input.c文件 (26)Insert.c文件 (28)Output.c文件 (29)Paint.c文件 (31)Save.c文件 (32)Sort.c文件 (33)Stat.c文件 (38)Common.h文件 (44)Deleteitem.h文件 (45)Find.h文件 (46)Input.h文件 (46)Inset.h文件 (47)Output.h文件 (47)Paint.h文件 (48)Save.h文件 (48)Sort.h文件 (49)Stat.h文件 (49)第五章:测试数据和测试过程记录。

(50)第六章:遇到的问题及解决方法分析。

(52)C语言课程设计说明书专业:电子科学与技术班级:学生姓名:指导教师:设计题目:学生成绩管理系统设计条件:自主设计设计内容:学生成绩管理下达日期:完成日期:第一章:设计任务分析1.1 课程设计意义:C语言是电子科学与技术专业的重要专业基础课。

在很多后续课程中,都要使用到C语言。

学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。

为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。

1.2 课程设计目的:★掌握和利用C语言进行程序设计的能力。

★用C语言合理地开发简洁有效的程序代码来实现该设计。

★提高用程序设计解决实际问题的能力。

★理解和运用结构化程序设计的思想和方法。

★通过提出算法、指定输入输出来设计一个解决方案。

★掌握开发一个小型实用系统的基本方法。

★学会调试一个较长程序的基本方法。

★测试程序是否工作且满足设计指标并评价其效率。

★掌握书写程序设计开发文档的能力(书写课程设计报告)。

1.3 课程设计所培养的能力A、分析问题。

各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。

B、提出算法执行特定任务。

模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。

C、把一个算法变为用C语言编写的结构化程序。

D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。

E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。

F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。

G、调试程序、测试数据过程成功。

1.4 学生成绩管理系统设计要求●用C语言实现系统。

●利用结构体数组实现学生成绩的数据结构设计。

●系统具有增加、查询、排序等基本功能。

●系统的各个功能模块要求用函数的形式实现。

●将学生成绩信息存在文件中。

●完成设计任务并书写课程设计报告。

1.5 学生成绩管理系统实现的功能(1)每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。

(2)添加功能:可以一次完成若干条记录的输入。

(3)显示功能:完成全部学生记录的显示。

(4)查找功能:完成按姓名、学号查找学生记录,并显示。

(5)排序功能:按学生学号或平均成绩进行排序。

(6)保存功能:将学生记录存在自定义文件名的文件中。

(7)退出功能:退出系统(8)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!第二章:技术文档2.1 程序的总体设计2.2 主要数据2.2.1 库文件#include <stdlib.h> 学生管理系统输入成绩插入成绩删除成绩查询成绩成绩排序统计输出保存文件退出系统#include <stdio.h>#include <string.h>2.2.2 调用函数及函数文件#include "common.h"#include "input.h"#include "output.h"#include "sort.h"#include "find.h"#include "insert.h"#include "deleteitem.h"#include "stat.h"#include "save.h"#include "paint.h"void delete_item(STUDENT *data, int *len) //用以删除错误或多余成绩void find(STUDENT *data, int len) //用于以姓名或学号搜索成绩void input(STUDENT *data, int *len) //输出函数void insert(STUDENT *data, int *len) //插入新的成绩void output(STUDENT *data, int len) //输出成绩void paint() //显示界面函数void save(STUDENT *data, int len) //保存文件函数void sort(STUDENT *data, int len) //成绩排序总函数void sort_number(STUDENT *data, int len) //以下为成绩排序的子函数void sort_chinese(STUDENT *data, int len) //包括各科成绩、平均分及总分void sort_math(STUDENT *data, int len)void sort_english(STUDENT *data, int len)void sort_average(STUDENT *data, int len)void sort_total(STUDENT *data, int len)void stat(STUDENT *data, int len) //统计输出2.2.3 结构体数组及宏定义#define MAXN 35#define MAX_NAME 256typedef struct student //学生信息{int no; //定义学生学号char name[MAX_NAME]; //学生姓名数组double Chinese; //以下分别定义语文、数学、英语、平均分、总分double math;double English;double mark_ave;double mark_tot;} STUDENT; //定义结构体类型名2.3模块设计及具体的算法分析2.3.1输入模块★用于成绩首次输入,需按固定格式输入★但输入各科成绩中有超过100或小于0的的即为错误返回,无需再次输入学号,从课程姓名处开始输入★在储存各科成绩的同时,计算总分于平均分★但输入结束时,输入-1可返回主界面主界面输入1按格式输入成绩判断是否有打渔100或小于0的数有则返回重新输入无则数据输入成功,接着输入【程序代码】int no;putchar('\n');printf("%s\n", "请输入新的记录,成绩输入完成请输入-1.");printf("%s\n", "格式:\n学号\n");printf("%s\n", "姓名语文数学英语");putchar('\n');printf("如:\n");printf("1\n");printf("黄纬宏99 99 99\n");scanf("%d", &no);while(no != -1){data[*len].no = no;scanf("%s %lf %lf %lf", data[*len].name,&data[*len].Chinese, &data[*len].math,&data[*len].English);if(data[*len].Chinese>100||data[*len].math>100||data[*len].English>100||data[*len].Chinese<0||data[*len].math<0||data[*len].English<0) //判断成绩是否有大于100或小于0的,有则说明数据有误,需重新输入{printf("输入错误,按回车重新输入,不用输入学号!");getchar();getchar();continue;}data[*len].mark_ave=(data[*len].Chinese+data[*len].math+da ta[*len].English)/3.0;//计算平均值和总分 data[*len].mark_tot=data[*len].Chinese+data[*len].math+data [*len].English; (*len)++; scanf("%d", &no); }2.3.2 删除多余数据模块★直接输入-1可返回主界面★从头开始顺序查找学号,若未找到则返回输出"未找到需要删除的学生" ★删除数据后将后面的数据依次重新排序是 否否是主界面输入3输入-1?是否有这个学号?输入学号未找到需要删除的学生对学号所对应成绩进行替换否是【程序代码】int no, i, pos; //定义临时学号变量、计数变量lab: pos=0; //lab用来作为goto语句的返回点printf("%s\n", "输入需要删除的学生的学号,退出当前菜单请输入-1.");scanf("%d", &no);if (no == -1) return; //输入为-1是返回主界面while( (data[pos].no != no) && (pos < *len) ) pos = pos +1;//依次对所有成绩的学号和目标学号进行对比,并对每步进行计数if (pos >= *len) //如果计数值大于学生数,则说明未找到需要删除的学生,返回重新输入学号{printf("%s\n", "未找到需要删除的学生");goto lab; //goto语句,跳到之前所做的节点}else {for (i = pos+1;i < *len; i++) //用目标学号后面的数据向前进行替换,以达到删除的效果data[i-1] = data[i];*len = *len -1;if (*len == 0) //如果学生数为0.则说明没有数据可删除了,按回车返回主界面{printf("%s\n", "没有任何记录,请按回车键返回.");getchar();getchar();return;}goto lab;}2.3.3 搜索模块★选择进行姓名或学号的搜索,在此输入-1时返回主界面★找到目标学号时输出学生的各项数据,如各科成绩,平均分,总分★如果查询的信息不存在,输出提示信息;输入4是否是 否否否是是【程序代码】int find_no,result ; //定义临时学号和指针 int i;char str[256]; //用来做输入值临时存放空间 lab: result=0;if(len==0) //学生个数为0时,输出没有可被查找的记录 {printf("没有可被查找的记录\n");return ; }else { printf("请选择查找的方式:1.姓名 2.学号\n"); gets(str); if(str[0]=='2') //如果输入值为2,即是要使用学号搜索 { printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入 -1.");scanf("%d", &find_no); if (find_no == -1 ) return; //输入-1时返回主界面 while( data[result].no != find_no && result < len) //对成绩进行检索,依次递增主界面学生数为0?没有可被查找的记录 按学号的查询方式?检索学号? 检索姓名?未查询到相关信息输出成绩 输出成绩result ++;if (result >= len ) //如果检索次数大于学生数,说明没有这个学生{printf("%s\n", "未查询到相关信息");goto lab;}else{system("cls"); //清屏指令printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++) //输出找到的成绩putchar('*');putchar('\n');printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 79; i++)putchar('*');putchar('\n');goto lab;}}else //如果不是学号搜索,就是要进行姓名检索,步骤与学号类似{printf("%s\n", "请输入需要查找的学生的姓名,退出当前菜单请输入-1.");gets(str);if (str ==" -1") return; /*exit the fine sub program*/for(result=0;result<=len;result++){if(strcmp(str,data[result].name)==0){system("cls");printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++)putchar('*');putchar('\n');printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 79; i++)putchar('*');putchar('\n');goto lab;}else{printf("%s\n", "未查询到相关信息");goto lab;}}}}2.3.4 插入成绩★按格式输入成绩,并按平均分由高到低的顺序插到成绩单里面★输入-1时返回主界面2.3.5显示函数★用以显示软件信息及制作者信息 ★显示主界面,主要用在main 函数中2.3.6 数据保存函数★将输入的成绩保存到TXT 文件中 ★并输出文件已保存到\"成绩统计表.txt\的信息 ★使用fopen 和fprintf 函数2.3.7 成绩排序★将成绩按平均分或各科成绩或总分进行排序,可挑选出各方面的状元郎 ★根据所输入的序号进行选择,用SWITCH 实现功能 ★利用输出函数,把得到的排序后的结果进行输出输入5输入1-6或0进行选择主界面排序界面按学号排序按语文成绩排按数学成绩排按英语成绩排按平均分排序 按总分排序直接输出2.3.8统计分数★假设每个分数段开始都为0,对每个分数段的边界数进行比较,处于那个范围内就计算,超出则进行下个分数段 ★分别对各科成绩及平均分和总分进行统计,方法一样,在开始时进行选择,选择使用哪种统计方式,并且在最后阶段输出结果 ★以其中一个为例进行演示:是否是否是否是否2.3.9 主函数★将各个分文件里面的函数整合到一起 ★实现软件的真正功能 ★进行选择输入,按输入的序号选择功能操作,如果输入错误则重新输入【程序代码】STUDENT data[MAXN]; int len = 0; char ctrl_ch1; paint();scanf("%c", &ctrl_ch1);小于60?小于70?小于80?小于90? 60范围内的数+1 60-70范围内的数+170-80范围内的数+180-90范围内的数+190-100范围内的数+1进行下一个数判断while (ctrl_ch1 != '8'){ switch(ctrl_ch1){case '1':input(data, &len); //输入函数output(data, len);//输出函数break;case '2':insert(data, &len); //插入成绩break;case '3':delete_item(data, &len); //删除无用成绩break;case '4':find(data, len); //搜索成绩break;case '5':sort(data, len); //排序函数output(data, len);break;case '6':stat(data, len); //统计函数break;case '7':save(data, len); //保存文件break;default:if (ctrl_ch1 != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch1 != '\n') paint();scanf("%c", &ctrl_ch1);}第三章:用户文档方式一:直接打开C语言.exe文件,按界面提示进行操作方式二:在电脑中安装VC6.0,用打开工作空间的方式打开C语言.dsw,让程序运行后还是按照界面提示进行操作第四章:源程序代码清单Main.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "input.h"#include "output.h"#include "sort.h"#include "find.h"#include "insert.h"#include "deleteitem.h"#include "stat.h"#include "save.h"#include "paint.h"void main(){STUDENT data[MAXN];int len = 0;char ctrl_ch1;paint();scanf("%c", &ctrl_ch1);while (ctrl_ch1 != '8'){ switch(ctrl_ch1){case '1':input(data, &len); //输入函数output(data, len);//输出函数break;case '2':insert(data, &len); //插入成绩break;case '3':delete_item(data, &len); //删除无用成绩break;case '4':find(data, len); //搜索成绩break;case '5':sort(data, len); //排序函数output(data, len);break;case '6':stat(data, len); //统计函数break;case '7':save(data, len); //保存文件break;default:if (ctrl_ch1 != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch1 != '\n') paint();scanf("%c", &ctrl_ch1);}}Common.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#define MAXN 35#define MAX_NAME 256Deleteitem.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "deleteitem.h"/*-------------删除子程序--------------*/void delete_item(STUDENT *data, int *len){int no, i, pos; //定义临时学号变量、计数变量lab: pos=0; //lab用来作为goto语句的返回点printf("%s\n", "输入需要删除的学生的学号,退出当前菜单请输入-1.");scanf("%d", &no);if (no == -1) return; //输入为-1是返回主界面while( (data[pos].no != no) && (pos < *len) ) pos = pos +1;//依次对所有成绩的学号和目标学号进行对比,并对每步进行计数if (pos >= *len) //如果计数值大于学生数,则说明未找到需要删除的学生,返回重新输入学号{printf("%s\n", "未找到需要删除的学生");goto lab; //goto语句,跳到之前所做的节点}else {for (i = pos+1;i < *len; i++) //用目标学号后面的数据向前进行替换,以达到删除的效果data[i-1] = data[i];*len = *len -1;if (*len == 0) //如果学生数为0.则说明没有数据可删除了,按回车返回主界面{printf("%s\n", "没有任何记录,请按回车键返回.");getchar();getchar();return;}goto lab;}}Find.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "find.h"/*--------------------搜索子程序-----------------------*/void find(STUDENT *data, int len){int find_no,result ; //定义临时学号和指针int i;char str[256]; //用来做输入值临时存放空间lab: result=0;if(len==0) //学生个数为0时,输出没有可被查找的记录{printf("没有可被查找的记录\n");return ;}else{printf("请选择查找的方式:1.姓名 2.学号\n");gets(str);if(str[0]=='2') //如果输入值为2,即是要使用学号搜索{printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入-1.");scanf("%d", &find_no);if (find_no == -1 ) return; //输入-1时返回主界面while( data[result].no != find_no && result < len) //对成绩进行检索,依次递增result ++;if (result >= len ) //如果检索次数大于学生数,说明没有这个学生{printf("%s\n", "未查询到相关信息");goto lab;}else{system("cls"); //清屏指令printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++) //输出找到的成绩putchar('*');putchar('\n');printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 79; i++)putchar('*');putchar('\n');goto lab;}}if(str[0]='1') //如果不是学号搜索,就是要进行姓名检索,步骤与学号类似{printf("%s\n", "请输入需要查找的学生的姓名.");gets(str);// if (str[0] =='0')// return; /*exit the fine sub program*/for(result=0;result<=len;result++){if(strcmp(str,data[result].name)==0){system("cls");printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++)putchar('*');putchar('\n');printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 79; i++)putchar('*');putchar('\n');goto lab;}}}{printf("%s\n", "没有查询到相关信息");goto lab;}}}Input.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "input.h"/*-----------输入信息子程序---------*/void input(STUDENT *data, int *len){int no;putchar('\n');printf("%s\n", "请输入新的记录,成绩输入完成请输入-1.");printf("%s\n", "格式:\n学号\n");printf("%s\n", "姓名语文数学英语");putchar('\n');printf("如:\n");printf("1\n");printf("嘉嘉99 99 99\n");scanf("%d", &no);while(no != -1){data[*len].no = no;scanf("%s %lf %lf %lf", data[*len].name, &data[*len].Chinese, &data[*len].math,&data[*len].English);if(data[*len].Chinese>100||data[*len].math>100||data[*len].English>100||data[*len].Chinese<0||data[*len].math<0||data[*len].English<0) //判断成绩是否有大于100或小于0的,有则说明数据有误,需重新输入{printf("输入错误,按回车重新输入,不用输入学号!");getchar();getchar();continue;}data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*len].English)/3.0;//计算平均值和总分data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*len].English;(*len)++;scanf("%d", &no);}}Insert.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "insert.h"/*-----------------插入子程序-------------*/void insert(STUDENT *data, int *len){int no, pos;double Chinese, math, English, mark_ave, mark_tot;int i;char name[MAX_NAME];lab: printf("%s\n", "输入新的记录,退出当前菜单请输入-1.");printf("%s\n", "格式:学号");printf("%s\n", " 姓名语文数学英语");scanf("%d", &no);if (no == -1) return;data[*len].no = no;scanf("%s %lf %lf %lf", name, &Chinese, &math, &English);mark_ave=(Chinese+math+English)/3.0;mark_tot=Chinese+math+English;pos = 0;while ((data[pos].mark_ave < mark_ave) && (pos < *len) ) pos ++;for (i = *len-1; i >= pos; i--)data[i+1] = data[i];data[pos].no = no;strcpy(data[pos].name, name);data[pos].Chinese = Chinese;data[pos].math = math;data[pos].English = English;data[pos].mark_ave = mark_ave;data[pos].mark_tot = mark_tot;(*len)++;goto lab;}Output.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "output.h"/*---------------输出信息子程序---------------*/void output(STUDENT *data, int len){int i;system("cls");printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');for (i =0; i < 80; i++)putchar('*');putchar('\n');for (i = 0; i< len; i++){printf("%8d", data[i].no);printf("%8s", data[i].name);printf("%8.1lf", data[i].Chinese);printf("%8.1lf", data[i].math);printf("%10.1lf", data[i].English);printf("%12.1lf", data[i].mark_ave);printf("%10.1lf", data[i].mark_tot);putchar('\n');}for (i =0; i < 80; i++)putchar('*');putchar('\n');printf("按回车键继续.");getchar();getchar();}#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "paint.h"/*---------------显示信息子程序------------*/void paint(){int i;system("cls");printf("%50s\n", "XX学生学校成绩管理系统\n");printf(" 制作者: \n");for (i = 0; i < 80; i++)putchar('*');putchar('\n');printf(" 1 输入成绩 2 插入成绩\n"); printf(" 3 删除成绩 4 查询成绩\n"); printf(" 5 成绩排序 6 统计输出\n"); printf(" 7 保存文件8 退出系统\n");for (i = 0; i<= 79; i++)putchar('*');putchar('\n');printf("%s\n", "请输入你所选择的序号:");}#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "save.h"/**********将数据保存到文件********/void save(STUDENT *data, int len){int i;FILE *fp;fp=fopen("成绩统计表.txt","w");fprintf(fp,"%8s", "学号");fprintf(fp,"%8s", "姓名");fprintf(fp,"%8s", "语文");fprintf(fp,"%8s", "数学");fprintf(fp,"%10s", "英语");fprintf(fp,"%12s", "平均分");fprintf(fp,"%10s\n", "总分");fprintf(fp,"===================================================== ===================\n");putchar('\n');for (i = 0; i< len; i++){fprintf(fp,"%8d", data[i].no);fprintf(fp,"%8s", data[i].name);fprintf(fp,"%8.1lf", data[i].Chinese);fprintf(fp,"%8.1lf", data[i].math);fprintf(fp,"%10.1lf", data[i].English);fprintf(fp,"%12.1lf", data[i].mark_ave);fprintf(fp,"%10.1lf\n", data[i].mark_tot);}fprintf(fp,"===================================================== ===================\n");fclose(fp);printf("文件已保存到\"成绩统计表.txt\"");getchar();getchar();}Sort.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "sort.h"/*--------------排序子程序------------*/void sort(STUDENT *data, int len){int i;char ctrl_ch2;system("cls");for (i = 0; i < 80; i++)putchar('*');printf(" 1 按学号排序 2 按语文成绩排序\n");printf(" 3 按数学成绩排序 4 按英语成绩排序\n");printf(" 5 按平均分排序 6 按总分排序\n");printf(" 0 直接输出\n");for (i = 0; i < 80; i++)putchar('*');printf("%s\n", "请输入你所选择的序号:");getchar();scanf("%c", &ctrl_ch2);while (ctrl_ch2 != '0' ){switch(ctrl_ch2){case '1':sort_number(data,len);break;case '2':sort_chinese(data,len);break;case '3':sort_math(data,len);break;case '4':sort_english(data,len);break;case '5':sort_average(data,len);break;case '6':sort_total(data,len);break;default:if (ctrl_ch2 != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch2 != '\n')scanf("%c", &ctrl_ch2);else return;}}void sort_number(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].no > data[j].no) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}return;}void sort_chinese(STUDENT *data, int len) {int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].Chinese > data[j].Chinese) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}}void sort_math(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].math > data[j].math) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}}void sort_english(STUDENT *data, int len) {int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].English > data[j].English) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}}void sort_average(STUDENT *data, int len) {int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].mark_ave > data[j].mark_ave) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}}void sort_total(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++){for (k=i, j=i+1; j<len; j++)if (data[k].mark_tot > data[j].mark_tot) k=j;if (k != i){temp = data[i];data[i] = data[k];data[k] = temp;}}}Stat.c文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include "common.h"#include "stat.h"/*---------------统计子程序------------*/void stat(STUDENT *data, int len){int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; //设定处于哪个分数段的人数int i;for (i = 0;i < len; i++) //平均分统计{if (data[i].mark_ave <=59) no_59++;else if (data[i].mark_ave <=69) no_69++;else if (data[i].mark_ave <=79) no_79++;else if (data[i].mark_ave <= 89) no_89++;else no_100++;}system("cls"); //清屏for (i =0; i < 80; i++) //输出平均分统计结果putchar('*');putchar('\n');printf("%11s", "平均分");printf("%10s", "0--59");printf("%10s", "60--69");printf("%10s", "70--79");printf("%10s", "80--89");printf("%10s", "90--100");putchar('\n');putchar('\n');printf("%10s", "学生");printf("%10d", no_59);printf("%10d", no_69);printf("%10d", no_79);printf("%10d", no_89);printf("%10d", no_100);putchar('\n');for (i =0; i < 80; i++)putchar('*');putchar('\n');no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;for (i = 0;i < len; i++) //语文分数统计{if (data[i].Chinese <=59) no_59++;else if (data[i].Chinese <=69) no_69++;else if (data[i].Chinese <=79) no_79++;else if (data[i].Chinese <= 89) no_89++;else no_100++;}for (i =0; i < 80; i++)putchar('*');putchar('\n');printf("%10s", "语文");printf("%10s", "0--59");printf("%10s", "60--69");printf("%10s", "70--79");printf("%10s", "80--89");printf("%10s", "90--100");putchar('\n');printf("%10s", "学生");printf("%10d", no_59);printf("%10d", no_69);printf("%10d", no_79);printf("%10d", no_89);printf("%10d", no_100);putchar('\n');for (i =0; i < 80; i++)putchar('*');putchar('\n');no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;for (i = 0;i < len; i++) //数学分数统计{if (data[i].math <=59) no_59++;else if (data[i].math <=69) no_69++;else if (data[i].math <=79) no_79++;else if (data[i].math <= 89) no_89++;else no_100++;}for (i =0; i < 80; i++)putchar('*');putchar('\n');printf("%10s", "数学");printf("%10s", "0--59");printf("%10s", "60--69");printf("%10s", "70--79");printf("%10s", "80--89");printf("%10s", "90--100");。

相关文档
最新文档