C语言班级成绩管理系统
C语言课程设计---班级成绩管理系统
课程设计报告课程名称C语言程序设计课题名称班级成绩管理系统专业班级学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日目录一、引言 (1)二、总体设计 (2)三、详细设计 (4)四、问题分析及总结 (13)五、参考文献 (15)六、附件 (15)一、设计内容与设计要求1. 设计内容:班级成绩管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。
2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。
通过提示用户输入一个数字选项,调用相应的功能函数。
(2)学生成绩显示:完成班级全部学生成绩的显示,显示时按表格的形式,且应有表头;(3)学生成绩追加:完成新增一个(或多个)学生的成绩记录,要求在追加过程中有相应的提示信息,完成追加后能重新计算学生平均成绩并显示;(4)学生成绩修改:要求能按学号和按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新计算学生的平均成绩;(5)学生成绩信息的查询;要示系统能按学号、按姓名查询以及能查总分在某一指定范围内的学生信息,且能显示符合条件的所的记录,若所需查询的信息不存在时应有相应的提示信息。
用c语言编写学生成绩管理系统
#i n c l u d e<s t d i o.h> #include<string.h>#include<process.h>#include<conio.h>#define N 30#define M 3typedef struct student{char number[10];char name[20];float score[M];float aver;float total;}STU;STU stu[N];int n;void inputscore(void);void savescore(void);void avergescore(void);void total(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main(){short int flag=0;menu();do{flag=1;switch(getch()){case'1' : inputscore();break; /*输入成绩*/case'2' : lookscore();break; /*查看成绩*/case'3' : searchscore();break; /*查找成绩*/case'4' : statistic();break; /*成绩统计*/case'5' : modify();break; /*修改成绩*/case'6' : add();break; /*添加成绩*/case'7' : delscore();break; /*删除成绩*/case'8' : savescore();break; /*保存成绩*/case'9' :exit(0); break; /*退出程序*/default : printf("输入有误\n");}printf("按任意键继续\n");getch();menu();}while (flag==1);}void menu(void){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(" 保存成绩-------------------------------------8\n");printf(" 退出系统-------------------------------------9\n");printf(" ***********************************************\n");printf(" 请输入您的选择(1~9)\n");}/***************输入各个同学的学生信息******************************/void inputscore(void){int i,j;system("cls");printf(" 已经转到输入成绩菜单\n");printf("请输入学生总数:\n");scanf("%d",&n);printf("提示:输入学号时请输入由1位大写字母和8位数字组成的学号,如P0*******\n");/*因二维表上下需对正故有此要求*/for(i=0;i<n;i++){printf("\n");printf("请输入第%d位学生的学号:\n",i+1);scanf("%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);}printf(" 成功输入(按任意键继续后请输入8进行保存)\n");}/*****************计算各个同学的总分*****************************/void total(void){int i,j;for(i=0;i<n;i++){stu[i].total=0;for(j=0;j<M;j++){stu[i].total+=stu[i].score[j];}}}/*****************计算各个同学的平均分*****************************/void avergescore(void){int i,j;for(i=0;i<n;i++){stu[i].aver=0;for(j=0;j<M;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}/************查看学生成绩及根据平均分对学生进行排序*********************/ void lookscore(void){int i,j,k;STU t;total();avergescore();system("cls");printf(" 已经转到查看成绩及成绩排序菜单\n");for(i=0;i<n-1;i++){for(k=i,j=i+1;j<n;j++)if(stu[j].aver>stu[k].aver)k=j;if(k!=j){t=stu[k];stu[k]=stu[i];stu[i]=t;}}printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");for(i=0;i<n;i++){printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");}}/*****************通过输入学号查找学生成绩***************************/ void searchscore(void){char a[10];int i,j;system("cls");printf(" 已经转到查询学生成绩菜单\n");printf("请输入需查询的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");break; /*找到该学生成绩信息后跳出for循环*/ }elseprintf("未找到该学生信息\n");}}/*******统计学生成绩信息,平均分及格率,优秀率****************/void statistic(void){STU *p=stu;int i;float count=0.0,sum=0.0;system("cls");printf(" 已经转到成绩统计菜单\n");for(i=0;i<n;i++){sum+=(p+i)->aver;}printf("该学生会平均分为%4.2f\n",sum/n); /*平均分计算*/for(i=0;i<n;i++){if((p+i)->aver>=60)count++;}printf("该学生会及格率为%4.2f%%\n",count/n*100); /*及格率计算*/count=0.0;for(i=0;i<n;i++){if((p+i)->aver>=90)count++;}printf("该学生会优秀率为%4.2f%%\n",count/n*100); /*优秀率计算*/printf("平均分低于60的学生会成员名单\n");for(i=0;i<n;i++){if(stu[i].aver<60)printf("%s\n",stu[i].name);}/*统计不及格学生名单*/}/***************修改学生成绩*****************/void modify(void){char a[10];int i,j;system("cls");printf(" 已经转到修改成绩菜单\n");printf("请输入需要修改成绩的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");printf("请重新输入该学生的学号:\n");scanf("%%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请重新输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);/*找到该学生成绩后进行修改,跳出for循环*/ printf("修改成功\n");break;}elseprintf("请确认该学生是否为学生会学生!\n");}}/*****************添加学生成绩********************/void add(void){int a,i,j;system("cls");printf(" 已经转到添加成绩菜单\n");printf("请输入新增加的学生人数:\n");scanf("%d",&a);n=n+a;for(i=n-a;i<n;i++){printf("\n");printf("请输入第%d位学生的学号:\n",i+1);scanf("%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);printf("添加成功\n");}}/*******************删除学生成绩*************************/void delscore(void){int i,j,c;char m,a[10];system("cls");printf(" 已经转到删除成绩菜单\n");printf("请输入学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");c=i;break;}elseprintf("未找到该学生信息\n");}printf("是否删除该学生成绩(y/n)\n");scanf("%s",&m);if(m=='y'){for(i=c;i<n-1;i++)stu[i]=stu[i+1]; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/n=n-1; /*删除该学生信息后学生总数减一*/printf("删除成绩成功\n");}elseprintf("删除成绩失败\n");}/******************保存学生成绩************************/void savescore(void){FILE *fp;int i,flag=1;char m;system("cls");printf(" 已经转到保存成绩菜单\n");puts("是否保存学生成绩(y/n)");scanf("%s",&m);if(m=='y'){if((fp=fopen("score.dat","wb"))==NULL){printf("文件打开失败\n");return;}for(i=0;i<n;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("保存失败\n");flag=0;}if(flag==1)printf("保存成功!\n");fclose(fp);}elsereturn;}。
学生成绩管理系统c语言代码(供参考)
C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。
h"#include"string。
h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。
C语言实现班级成绩管理系统
C语⾔实现班级成绩管理系统C语⾔课程设计——班级成绩管理系统,供⼤家参考,具体内容如下题⽬:对⼀个有N个学⽣的班级,每个学⽣有M门课程。
该系统实现对班级成绩的录⼊、显⽰、修改、排序、保存等操作的管理。
功能要求:(1)本系统采⽤⼀个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
(2)本系统显⽰这样的菜单:请选择系统功能项:a、成绩录⼊b、成绩显⽰c、成绩保存d、成绩排序e、成绩修改(要求先输⼊密码)f、成绩统计1)显⽰每门课程成绩最⾼的学⽣的基本信息2)显⽰每门课程的平均成绩3)显⽰超过某门课程平均成绩的学⽣⼈数g、退出系统1)执⾏⼀个具体的功能之后,程序将重新显⽰菜单。
2)将学⽣成绩保存到⽂件中。
代码:#include<vector>#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<string>using namespace std;typedef struct Student{int ID; /*学⽣学号*/char name[15]; /*学⽣姓名*/vector<double> subject; /*因未知课程数量,所以课程数量采⽤动态数组vector*/double sum; /*学⽣各科成绩总分*/}Student;struct Rule{ /*排序规则*/bool operator()(const Student &stu1,const Student &stu2)const{if(stu1.sum!=stu2.sum) /*总分不相等按照总分从⼤到⼩排序*/return stu1.sum>stu2.sum;return stu1.ID>stu2.ID; /*总分相等按照学号从⼤到⼩排序*/}};int N,M,i,j; /*N为学⽣⼈数,M为课程数量*/double score; /*临时变量*/Student temp; /*临时变量*/vector<Student> Stu; /*本课设采⽤动态数组vector,防⽌浪费内存空间*/bool condition=true; /*系统运⾏状态*/char choice; /*⽤于输⼊来选择功能*//*---------------------------------------------a.成绩录⼊---------------------------------------------*/void InsertScore(){cout<<"请输⼊班级学⽣数量和课程数量:";cin>>N>>M;cout<<endl<<"现在请依次输⼊每个学⽣的学号、姓名和"<<M<<"门课程的成绩:"<<endl<<endl; for(i=0;i<N;++i){cin>>temp.ID>>;for(j=0;j<M;++j){cin>>score;temp.subject.push_back(score);}Stu.push_back(temp);/*------------------------------这⼀⾏很重要------------------------------*//*------------------------------这⼀⾏很重要------------------------------*/vector<double>().swap(temp.subject);/*------------------------------这⼀⾏很重要------------------------------*//*------------------------------这⼀⾏很重要------------------------------*/}cout<<endl<<"成绩录⼊成功!"<<endl;}/*---------------------------------------------b.成绩显⽰---------------------------------------------*/void ShowScore(){cout<<"学号\t\t"<<"姓名\t\t";for(i=0;i<M;++i)cout<<"课程"<<i+1<<"\t";cout<<endl;for(i=0;i<N;++i){cout<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t";for(int j=0;j<M;++j)cout<<Stu[i].subject[j]<<"\t";cout<<endl;}}/*---------------------------------------------c.成绩保存---------------------------------------------*/void SaveScore(){FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL){cout<<"⽂件打开错误";return;}for(i=0;i<N;++i){if(fwrite(&Stu[i],sizeof(Student),1,fp)!=1)cout<<"写⼊错误!"<<endl;}fclose(fp);cout<<"成绩保存成功!"<<endl;}/*---------------------------------------------d.成绩排序---------------------------------------------*/void SortScore(){for(i=0;i<N;++i){ /*计算每个⼈的总成绩*/Stu[i].sum=0;for(j=0;j<M;++j)Stu[i].sum+=Stu[i].subject[j];}sort(Stu.begin(),Stu.end(),Rule()); /*使⽤排序函数排序*/cout<<"成绩排序成功!"<<endl;}/*---------------------------------------------e.成绩修改---------------------------------------------*/void ModifyScore(){string password;int id,no;cout<<"请输⼊密码开启成绩修改权限:";cin>>password;/*------------------------------密码输⼊错误------------------------------*/while(password!="GUXUNMEI"){cout<<endl<<"密码错误,请重新输⼊,若输⼊Q则中⽌进⼊成绩修改功能:";cin>>password;if(password=="Q")return;}/*------------------------------密码输⼊正确------------------------------*/cout<<endl<<"成功进⼊成绩修改功能,若学号输⼊-1则退出成绩修改功能!"<<endl; while(1){cout<<endl<<"请输⼊需要修改成绩的学⽣的学号,第⼏门课程以及修改后的分数:";cin>>id;if(id==-1){cout<<endl<<"已成功退出成绩修改功能!"<<endl;return;}cin>>no>>score;if(no>M){ /*课程不存在*/cout<<endl<<"不存在此课程!"<<endl;continue;}for(i=0;i<N;++i){if(Stu[i].ID==id){Stu[i].subject[no-1]=score;break;}}if(i==N){ /*学⽣不存在*/cout<<endl<<"不存在此学⽣!"<<endl;continue;}cout<<endl<<"修改成功!"<<endl;}}/*---------------------------------------------f.成绩统计---------------------------------------------*/void CountScore(){int maxn[M],count[M];double k,average[M];memset(maxn,0,sizeof(maxn));/*--------------------显⽰每门课程成绩最⾼的学⽣的基本信息--------------------*/for(i=0;i<N;++i){for(j=0;j<M;++j){if(Stu[i].subject[j]>Stu[i].subject[maxn[j]])maxn[j]=i;}}for(i=0;i<M;++i){cout<<"课程"<<i+1<<"成绩最⾼分学⽣信息:"<<Stu[i].ID<<"\t"<<Stu[i].name<<"\t"; for(j=0;j<M;++j)cout<<Stu[i].subject[j]<<"\t";cout<<endl;}cout<<endl;/*---------------------------显⽰每门课程的平均成绩---------------------------*/for(j=0;j<M;++j){k=0;for(i=0;i<N;++i)k+=Stu[i].subject[j];average[j]=k/N;cout<<"课程"<<j+1<<"的平均成绩为:"<<average[j]<<endl;}cout<<endl;/*---------------------显⽰超过某门课程平均成绩的学⽣⼈数---------------------*/for(j=0;j<M;++j){count[j]=0;for(i=0;i<N;++i){if(Stu[i].subject[j]>average[j])++count[j];}cout<<"超过课程"<<j+1<<"平均成绩的学⽣⼈数为:"<<count[j]<<endl;}}/*---------------------------------------------g.退出系统---------------------------------------------*/void ExitSystem(){condition=false; /*全局变量condition控制程序运⾏*/cout<<"已退出班级成绩管理系统"<<endl;}int main(){while(condition){/*-----------------------------------系统菜单-----------------------------------*/cout<<" "<<endl;cout<<"-------------------------系统菜单-------------------------"<<endl;cout<<" "<<endl;cout<<" 请选择系统功能项: "<<endl;cout<<" a.成绩录⼊ "<<endl;cout<<" b.成绩显⽰ "<<endl;cout<<" c.成绩保存 "<<endl;cout<<" d.成绩排序 "<<endl;cout<<" e.成绩修改 "<<endl;cout<<" f.成绩统计 "<<endl;cout<<" g.退出系统 "<<endl;cout<<" "<<endl;cout<<"----------------------------------------------------------"<<endl;cout<<" "<<endl;/*-----------------------------------选择系统功能项-----------------------------------*/cout<<"请输⼊选项:";cin>>choice;cout<<endl;switch(choice){case 'a':InsertScore(); break;case 'b':ShowScore(); break;case 'c':SaveScore(); break;case 'd':SortScore(); break;case 'e':ModifyScore(); break;case 'f':CountScore(); break;case 'g':ExitSystem(); break;default:cout<<"不存在此项功能!"<<endl;}}return 0;}关于管理系统的更多内容请点击进⾏学习以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
班级成绩管理系统C语言
#include <stdio.h>#include<stdlib.h> //清屏函数所在的头文件#include<string.h>float score[10][8]; //定义一个10行8列的全局数组,10为学生总人数,8为每个学生的项数//作用:用来存放从文件中读出的数据,存放数据的文件为:shuju void main(){int n=10,cn; //n为学生人数char s[2];void save(); //主函数在前,子函数在后故void load(); //在主函数中要对使用的子函数先申明;void load1(); //共用到11个子函数,都要申明void fun2(float score[][8],int n);void fun3(float score[][8],int n);void fun4(float score[][8],int n);void fun5(float score[][8],int n);void fun6(float score[][8],int n);void fun7(float score[][8],int n);void fun8(float score[][8],int n);void fun9(float score[][8],int n);for(;;) //死循环{printf("\n");printf("!***********************************************************!\n");printf("! ** 班级成绩管理系统** !\n");printf("! ** ** 指导教师:** ** !\n");printf("! ** 09221班张三!\n");printf("!***********************************************************!\n");printf("! !\n");printf("! 1——从文件(shuju)中读出原始数据!\n");printf("! 2——求每个学生的总分及平均分!\n");printf("! 3——按总分排名次(总分相同名次相同)!\n");printf("! 4——按学号查询学生成绩!\n");printf("! 5——查找并显示有一科以上不及格学生的清单!\n");printf("! 6——统计每科成绩大于80以及大于90分的学生的比例!\n");printf("! 7——计算单科平均分!\n");printf("! 8——显示所有学生成绩清单并写入文件(chengji)中!\n");printf("! 9——显示单科85分以上平均成绩90分以上的成绩清单!\n");printf("! 10——读出chengji中的数据!\n");printf("! 0 ——退出系统!\n");printf("!***********************************************************!\n");printf("! 说明:运行此程序后,应先做1、2步,否则没有数据!!\n");printf("!***********************************************************!\n");printf(" 【请认真阅读主菜单】");printf("\n请输入项目编号[0—10]:");gets(s);cn=atoi(s); //此函数将非数字键都转换为0if (cn==0 && (strcmp(s,"0")==0)) break;//此语句处理键入的非数字键,过滤出数字0switch(cn) //多分支语句{case 0:system("cls");break;case 1:system("cls"); //清屏语句printf("\n从文件shuju中读出的学生原始数据清单为:\n\n");load(score); //从文件“shuju”中读出数据到全局的二维数组中,以便处理break;case 2:system("cls"); //清屏语句fun2(score,n); /*求每个学生的总分及平均分*/break;case 3:system("cls"); //清屏语句fun3(score,n); /*按总分排名次,总分相同,名次相同*/break;case 4:system("cls"); //清屏语句fun4(score,n); /*以学号查询学生成绩,输入0结束查询*/break;case 5:system("cls"); //清屏语句fun5(score,n); /*查找有一门课以上不及格的学生,输出他们的全部成绩,并统计不及格总科次*/break;case 6:system("cls"); //清屏语句fun6(score,n); /*统计各科都不低于80分和各科都不低于90分学生的比例*/break;case 7:system("cls"); //清屏语句fun7(score,n); //求5门单科平均分break;case 8:system("cls"); //清屏语句fun8(score,n); //显示所有学生成绩清单break;case 9:system("cls"); //清屏语句fun9(score,n); //显示单科成绩85分以上,平均成绩90分以上的学生信息break;case 10:system("cls"); //清屏语句printf("\n从文件chengji中读出的学生数据清单为:\n\n");load1(); //从文件“chengji”中读出数据到全局的二维数组中,看是否正确break;default:system("cls"); //清屏语句printf("\n\n");printf("不是合法的输入值!重输\n");}}}void load() //从文件shuju中读出数据函数{FILE *fp;int i;fp=fopen("shuju","rb");printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分\n");for(i=0;i<10;i++){fread(&score,sizeof(score),1,fp);printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f\n",score[i][0],score[i][1],score[i][2],sco re[i][3],score[i][4],score[i][5],score[i][6],score[i][7]);}fclose (fp);}void load1() //从文件chengji中读出数据函数{FILE *fp;int i;fp=fopen("chengji","rb");printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分\n");for(i=0;i<10;i++){fread(&score,sizeof(score),1,fp);printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f\n",score[i][0],score[i][1],score[i][2],sco re[i][3],score[i][4],score[i][5],score[i][6],score[i][7]);}fclose (fp);}void fun2(float score[][8],int n) //求总分、平均分函数{float a,b,c;printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分\n");for(n=0;n<=9;n++){a=score[n][1]+score[n][2]+score[n][3]+score[n][4]+score[n][5];score[n][6]=a;b=score[n][6]/5;score[n][7]=b;printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f\n",score[n][0],score[n][1],score[n][2],s core[n][3],score[n][4],score[n][5],score[n][6],score[n][7]);}}void fun3(float score[][8],int n) //排序函数{int i,j,k;float temp[10][3],x[3]; //定义了一个临时二维数组和一个一维数组for (i=0;i<n;i++){temp[i][0]=score[i][0]; //将学号赋给临时二维数组的0列temp[i][1]=score[i][6]; //将总分赋给临时二维数组的1列}for (i=0;i<n;i++) /*条件也可为:i<n-1*/{k=i;for (j=i+1;j<n;j++)if (temp[j][1]>temp[k][1])k=j;if (i!=k) /*此语句不要也可*/{x[0]=temp[k][0]; //以下就是交换学号和总分x[1]=temp[k][1];x[2]=temp[k][2]; /*些语句不要也可*/temp[k][0]=temp[i][0];temp[k][1]=temp[i][1];temp[k][2]=temp[i][2];temp[i][0]=x[0];temp[i][1]=x[1];temp[i][2]=x[2]; /*些语句不要也可*/}}j=1;temp[0][2]=j;for (i=1;i<n;i++)if (temp[i][1]==temp[i-1][1])temp[i][2]=j;else{j++;temp[i][2]=j;}printf("按总分排列的名次\n");printf("原学号总分名次\n");for (i=0;i<n;i++)printf("%4g%10g%7g\n",temp[i][0],temp[i][1],temp[i][2]);}void fun4(float score[][8],int n) //查询学生成绩函数{int a,b;printf(" 请输入学生学号:\n");printf("【按0退出查询】");scanf("%d",&b);while(1){for(a=0;a<=9;a++)if(b==score[a][0]){printf("你要查询的学生成绩为:\n\n\n");printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分\n");printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f\n",score[a][0],score[a][1],score[a][2],score[ a][3],score[a][4],score[a][5],score[a][6],score[a][7]);continue;system("cls");}if(b!=score[a][0]&&b!=0){printf("请重新输入【学生编号为(1001-1010)】");scanf("%d",&b);system("cls");}if (b==0)break;}}void fun5(float score[][8],int n) //显示不及格学生成绩函数{int a,c,b;printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分不及格科数\n");for(a=0;a<=9;a++)for(c=1,b=0;c<=5;c++)if(score[a][c]<60){b++;if(c==5){printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f %d\n",score[a][0],score[a][1],sc ore[a][2],score[a][3],score[a][4],score[a][5],score[a][6],score[a][7],b);}}}void fun6(float score[][8],int n) //统计比例函数{int a,b,i;float c,d;printf(" 课程1 课程2 课程3 课程4 课程5 \n");printf("单科成绩大于80的学生所占比例:");for(b=1;b<=5;b++){c=0;for(a=0;a<10;a++){if(score[a][b]>=80)c++;if(a==9)printf("%.1f%% ",c*10);}}printf("\n");printf("单科成绩大于90的学生所占比例:");for(b=1;b<=5;b++){d=0;for(a=0;a<10;a++){if(score[a][b]>=90)d++;if(a==9)printf("%.1f%% ",d*10);}}i=0;for(a=0;a<10;a++){for(b=1;b<=5;b++){if(score[a][b]<90)break;if(b==5)i++;}}printf("\n\n\n\n各科都不低于90分学生的比例%d%%",i*10);}void fun7(float score[][8],int n) //求单科平均分函数{int b;float a;printf(" 课程1 课程2 课程3 课程4 课程5 \n");printf("单科平均分:");for(b=1;b<=5;b++){a=score[0][b]+score[1][b]+score[2][b]+score[3][b]+score[4][b]+score[5][b]+score[6][b]+scor e[7][b]+score[8][b]+score[9][b]+score[9][b];printf("%.2f ",a/10.0);}}void fun8(float score[][8],int n) //显示学生成绩清单函数{int a,b;printf(" 学号课程1 课程2 课程3 课程4 课程5 总分平均分\n");for(b=0;b<=5;b++){for(a=0;a<10;a++)if(b==5)printf("%6.0f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f%6.1f\n",score[a][0],score[a][1],score[a][2],sc ore[a][3],score[a][4],score[a][5],score[a][6],score[a][7]);} save();}void fun9(float score[][8],int n) //统计并显示单科大于85分平均分大于90分的学生{int a,b,c;printf(" 查询结果\n\n");printf("单科大于85分平均分大于90分的学生学号为:");for(a=0,c=0;a<10;a++){for(b=1;b<=5;b++)if(score[a][b]>85)if(score[a][7]>90)if(b==5){c++;printf("%.0f ",score[a][0]);}}printf("\n单科大于85分平均分大于90分的学生的学生总数为:%d",c);}void save() //写入文件函数{FILE *fp1;int i;if( (fp1=fopen("chengji","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<8;i++)if(fwrite(&score,sizeof(score),1,fp1)!=1)printf("file write error\n");fclose(fp1);}。
C语言-学生成绩管理系统
在TC环境下吧,界面是一片的黑。
可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。
C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。
c语言学生成绩信息管理系统源代码
C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
C语言课程设计班级成绩管理系统
性能测试:评估系统在不同 负载下的性能表现
功能测试:验证系统功能是 否满足需求
安全性测试:检查系统是否 存在安全漏洞
用户体验测试:评估系统的 易用性和用户满意度
硬件要求:服务 器、网络设备、 存储设备等
软件要求:操作 系统、数据库管 理系统、Web服 务器等
部署步骤:安装 操作系统、安装 数据库管理系统、 安装Web服务器、 部署应用程序等
未来展望:继续 优化和完善班级 成绩管理系统, 提高系统的稳定 性和易用性,为 更多的学生提供 更好的学习平台。
汇报人:
,a click to unlimited possibilities
汇报人:
01
02
ቤተ መጻሕፍቲ ባይዱ
03
04
05
06
目标:实现班级成绩管理系统,提高教学管理效率 功能:学生信息管理、课程信息管理、成绩管理、统计分析、报表打印等
操作简单:用户界面友好,易 于操作
数据安全:数据加密存储,保 证数据安全
功能全面:包括成绩录入、查 询、统计等功能
扩展性强:可以根据需要添加 新的功能模块
适用于C语言课程 设计
适用于班级成绩管 理
适用于教师和学生 使用
适用于学校或培训 机构使用
用户角色:学生、 教师、管理员
用户需求:学生查 看成绩、教师录入 成绩、管理员管理 用户
系统功能:成绩查 询、成绩录入、用 户管理
性能要求:系统稳 定、响应速度快、 数据安全
系统性能:运行稳定,响应速度快,数据安全可靠
系统改进:未来可以增加更多的功能,如成绩分析、成绩预警等,以提高系统的实用性和便捷 性
课程设计目标: 提高学生C语言 编程能力,培养 团队合作精神
班级成绩管理系统c语言程序设计
班级成绩管理系统C语言程序设计引言班级成绩管理系统是一个用于管理学生考试成绩的软件系统。
该系统能够方便地记录学生的个人信息和成绩,并提供各种查询和统计功能,为学校和教师提供全面且便捷的成绩管理工具。
设计目标本文档旨在介绍班级成绩管理系统的设计及功能。
该系统将采用C语言进行开发,以实现高效的数据处理和操作。
设计目标如下: 1. 使教师能够轻松地录入和修改学生的成绩信息; 2. 提供查询功能,教师和学生能够快速查找学生的成绩信息; 3. 支持多种统计功能,如成绩排名、平均分计算等; 4. 数据应该以文件的形式进行存储,以便长期保存和备份。
系统设计1. 数据结构设计班级成绩管理系统将使用以下数据结构来存储学生的成绩信息:struct student {char name[50];int rollNo;float marks[5];float totalMarks;float average;};该结构体包含学生的姓名、学号、每门课程的成绩、总分和平均分等属性。
2. 主要功能设计班级成绩管理系统将提供以下主要功能: 1. 学生信息录入:教师通过输入学生的姓名、学号和每门课程的成绩,将学生的信息录入系统。
2. 学生信息修改:教师可以针对已录入的学生信息进行修改,如修改成绩或个人信息。
3. 学生信息查询:教师和学生可以通过输入学生的姓名或学号,快速查询学生的成绩信息。
4. 成绩统计功能:系统能够根据学生的成绩计算平均分、最高分、最低分以及成绩排名等统计信息。
3. 程序流程设计班级成绩管理系统的程序流程如下: 1. 主菜单显示:程序启动后,显示主菜单,包括学生信息录入、学生信息修改、学生信息查询和成绩统计等选项。
2. 根据用户选择执行相应功能:根据用户在主菜单中选择的功能,执行相应的操作。
3. 数据存储和读取:用户录入的学生信息将保存在文件中,下次程序启动时,可以从文件中读取数据。
4. 异常处理:对于用户输入错误或操作无效的情况,提供相应的异常处理机制,给出错误提示并重新接受用户输入。
班级成绩管理系统C语言编程解决方案
班级成绩管理系统C语言编程解决方案班级成绩管理系统是一种常见的教育领域应用程序,它能够有效地记录和管理学生的成绩信息。
本文将从深度和广度两个方面探讨班级成绩管理系统的C语言编程解决方案。
一、基本概述1.1 系统功能需求班级成绩管理系统需要实现以下基本功能:(1)学生信息管理:包括学生尊称、学号、班级等基本信息。
(2)成绩录入:提供录入学生各科成绩的功能。
(3)成绩查询:能够根据学生尊称或学号快速查询学生的成绩。
(4)成绩统计:能够对学生的成绩进行统计分析,如计算总分、平均分等。
(5)成绩报表打印:生成学生的成绩报表,方便教师进行查看或打印。
1.2 系统设计思路为了实现上述功能,可以采用模块化设计思路,将系统拆分为若干个模块,如学生信息管理模块、成绩录入模块、成绩查询模块等。
每个模块负责完成特定的功能,并与其他模块进行交互。
二、具体实现2.1 学生信息管理模块(1)定义结构体:使用结构体存储学生的基本信息,如尊称、学号、班级等。
(2)添加学生信息:通过输入学生信息,将学生信息添加到系统中。
(3)删除学生信息:根据学号或尊称,删除指定学生的信息。
(4)修改学生信息:根据学号或尊称,修改指定学生的信息。
(5)显示学生信息:将当前系统中的所有学生信息显示出来。
2.2 成绩录入模块(1)录入学生成绩:通过输入学生的学号或尊称,录入该学生各科的成绩。
(2)更新学生成绩:根据学号或尊称,更新指定学生的成绩信息。
2.3 成绩查询模块(1)按学号查询:输入学生的学号,查找该学生的成绩信息。
(2)按尊称查询:输入学生的尊称,查找该学生的成绩信息。
2.4 成绩统计模块(1)计算总分:将指定学生各科的成绩相加,得到总分。
(2)计算平均分:将总分除以科目数量,得到平均分。
2.5 成绩报表打印模块(1)生成报表:将学生的成绩信息按照一定格式生成报表。
(2)打印报表:将生成的报表打印出来,方便教师进行查看或备份。
三、个人观点和理解班级成绩管理系统是一种有效地管理学生成绩的工具,适合用于中小学教育领域。
班级成绩管理系统 C语言
for(i=0;i<N;i++)
if(strcmp(str,stu[i].num)==0)
{
for(j=i;j<N;j++)
stu[j]=stu[j+1];
printf("删除成功!\n");
printf("是否继续输入(Y/N):");
void Sort();
/*void Modi();*/
void main()
{
int n,k;
char str[10];
printf( "\n ");
printf( "*********************************************\n ");
printf(" \n");
printf( "请输入密码继续!");
printf("\n");
/* for(k=0;k<3;k++)
{
printf("请输入密码:");
for(n=0;(str[n]=getch())!='\r';n++)
putchar('*');
if(l=='n'||l=='N')
flag=0;
else if(l=='Y')
Input();
else break;
}
system("cls");
学生成绩管理系统C语言版
1、2、编一程序,能计算每个学生的总分和平均分。
3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。
4、编一程序,能将五个学生的成绩按总分进行降序排序。
5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。
先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。
学生成绩管理系统(c语言课设)
for(j1=0;j1<=imax-1;j1++)
if(strcmp(name,stu[j1].name)==0)
{ printf("学号 姓名 C语言成绩 数学成绩 英语成绩 总分 平均分 名次\n ");
printf("*9 output record 0 quit system *\n");
printf("**********************************************************\n");
do { printf("输入c语言成绩:\t"); scanf("%d",&stu[i].cgrade);}while(stu[i].cgrade>100||stu[i].cgrade<0);
do { printf("输入数学成绩:\t"); scanf("%d",&stu[i].mgrade);}while(stu[i].mgrade>100||stu[i].mgrade<0);
else if(i1==0) { }
else if(i1==1)
{
if(im>0&&im<=30)
{
for (i=0;i<=im-1;i++)
{
do { printf("输入学号:\t");scanf("%s",&num);}while(strlen(num)>=10);
班级成绩管理系统c语言程序设计流程图
班级成绩管理系统C语言程序设计流程图引言本文将介绍一个用C语言编写的班级成绩管理系统的程序设计流程图。
该系统旨在帮助学校或班级轻松管理学生的成绩信息,包括录入学生信息、录入成绩、查询成绩、统计成绩等功能。
流程图概述班级成绩管理系统的流程图包括以下几个主要步骤:1.主菜单:用户可以选择进行学生信息管理、成绩录入、成绩查询、成绩统计或退出系统。
2.学生信息管理:用户可以添加学生信息、修改学生信息、删除学生信息或显示全部学生信息。
3.成绩录入:用户可以选择学生并输入其对应科目的成绩。
4.成绩查询:用户可以选择学生并查询其对应科目的成绩。
5.成绩统计:系统会计算所有学生对应科目的平均分和总分,并输出统计结果。
设计思路主菜单首先,用户将进入主菜单,可以通过输入相应的数字选择不同的功能。
根据用户的选择,程序将进入对应的功能模块。
主菜单功能的设计如下所示:1. 学生信息管理2. 成绩录入3. 成绩查询4. 成绩统计5. 退出系统学生信息管理在学生信息管理模块中,用户可以选择添加、修改、删除或显示全部学生的信息,这些功能将通过以下流程图实现:1. 显示全部学生信息2. 添加学生信息3. 修改学生信息4. 删除学生信息5. 返回主菜单成绩录入成绩录入模块允许用户选择学生并输入其对应科目的成绩。
以下是成绩录入的流程图:1. 选择学生2. 输入科目3. 输入成绩4. 返回主菜单成绩查询成绩查询模块允许用户选择学生并查询其对应科目的成绩。
以下是成绩查询的流程图:1. 选择学生2. 查询科目3. 输出成绩4. 返回主菜单成绩统计成绩统计模块将计算所有学生对应科目的平均分和总分,并输出统计结果。
以下是成绩统计的流程图:1. 计算平均分和总分2. 输出统计结果3. 返回主菜单退出系统当用户选择退出系统时,程序将结束执行。
总结通过以上的程序设计流程图,我们可以清楚地了解班级成绩管理系统的工作流程。
该系统可以方便地录入学生信息、录入成绩、查询成绩和统计成绩,为学校或班级提供了一个简单而实用的成绩管理工具。
学生成绩管理系统C语言(附完整源代码)
学生成绩管理系统C语言(附完整源代码)学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系:专业:班级:完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。
(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。
详细合作是::负责inputx(),print1(),input();:卖力文件的储备和读取,main(),System(),Idea()和各挪用函数之间的连;:卖力find1(),find2(),find3(),find31(),Find();:负责del(),add(),change1(),Change();前期调试由小组配合卖力。
3.结构框图、各模块的功能描述3.1建立成就表3.1.1 input()功用是输退学生的信息,便于当前的查询、欣赏。
3.2增加3.2.1 add( )功用是向inputy()增加新的内容。
3.3.2 chance( )对单科成绩进行修改。
3.3查询3.3.1可根据学号,科目,名次,进行查询。
3.3.2查询内容包孕:该学生的各课成就、、均匀分。
3.4删除3.4.1能够输退学号删除一逻辑学生的一课成就。
3.5浏览成绩单3.5.1通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。
3.6文件()3.6.1保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。
3.6.2随时打开,修改文件。
3.7.退出功用是退出主菜单退出系意见评述功能菜单统输入增加及改查找功用退出功用菜单成就功用查输排查找学学添修某某生生加改XXX某成成就绩科绩绩绩成就按按按名学科次号目查查查找找找四、主体思想:1、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。
原创班级成绩管理系统c语言程序设计流程图
原创班级成绩管理系统C语言程序设计流程图引言班级成绩管理系统是一种在学校和教育机构中常用的程序,它能够方便地存储和管理学生的成绩信息。
本文将介绍一个采用C语言开发的班级成绩管理系统的设计流程图。
设计目标班级成绩管理系统的设计目标是实现以下功能: - 学生信息的录入和管理 - 课程信息的录入和管理 - 成绩信息的录入和管理 - 成绩查询和统计功能设计流程图1. 系统初始化// 初始化学生信息数据结构struct student {int student_id;char name[50];// 其他学生信息字段} students[MAX_STUDENTS];// 初始化课程信息数据结构struct course {int course_id;char name[50];// 其他课程信息字段} courses[MAX_COURSES];// 初始化成绩信息数据结构struct grade {int student_id;int course_id;float score;// 其他成绩信息字段} grades[MAX_GRADES];// 初始化学生、课程和成绩数量int num_students = 0;int num_courses = 0;int num_grades = 0;// 系统初始化完毕2. 学生信息管理// 学生信息录入void addStudent() {// 获取用户输入的学生信息// 创建并初始化新的学生结构体// 将新学生结构体添加到学生信息数据结构中// 更新学生数量}// 学生信息修改void editStudent() {// 获取用户输入的学生ID// 查找对应学生结构体// 根据用户输入修改学生信息}// 学生信息删除void deleteStudent() {// 获取用户输入的学生ID// 查找对应学生结构体// 从学生信息数据结构中删除学生结构体// 更新学生数量}// 学生信息查询void queryStudent() {// 获取用户输入的学生信息查询条件// 根据查询条件在学生信息数据结构中查找学生结构体// 打印查询结果}3. 课程信息管理// 课程信息录入void addCourse() {// 获取用户输入的课程信息// 创建并初始化新的课程结构体// 将新课程结构体添加到课程信息数据结构中// 更新课程数量}// 课程信息修改void editCourse() {// 获取用户输入的课程ID// 查找对应课程结构体// 根据用户输入修改课程信息}// 课程信息删除void deleteCourse() {// 获取用户输入的课程ID// 查找对应课程结构体// 从课程信息数据结构中删除课程结构体// 更新课程数量}// 课程信息查询void queryCourse() {// 获取用户输入的课程信息查询条件// 根据查询条件在课程信息数据结构中查找课程结构体// 打印查询结果}4. 成绩信息管理// 成绩信息录入void addGrade() {// 获取用户输入的成绩信息// 创建并初始化新的成绩结构体// 将新成绩结构体添加到成绩信息数据结构中// 更新成绩数量}// 成绩信息修改void editGrade() {// 获取用户输入的学生ID和课程ID// 查找对应成绩结构体// 根据用户输入修改成绩信息}// 成绩信息删除void deleteGrade() {// 获取用户输入的学生ID和课程ID// 查找对应成绩结构体// 从成绩信息数据结构中删除成绩结构体// 更新成绩数量}// 成绩信息查询void queryGrade() {// 获取用户输入的成绩信息查询条件// 根据查询条件在成绩信息数据结构中查找成绩结构体// 打印查询结果}// 成绩统计void statistics() {// 统计各科目成绩的最高分、最低分和平均分// 统计每个学生的总分和平均分// 打印统计结果}5. 主程序流程int main() {// 系统初始化// 进入主菜单的循环int choice;while (1) {// 显示菜单选项// 获取用户选择// 根据用户选择执行相应的功能}return0;}总结通过以上流程图,我们实现了一个简单的班级成绩管理系统。
C语言实现简单班级成绩管理系统
C语⾔实现简单班级成绩管理系统前⾔:有朋友最近在做c语⾔课设,要求写⼀个班级成绩管理系统,便写份简单的代码来玩。
代码原创,未参考任何其他⼈的代码程序要求说明本程序主要采⽤结构体数组本⽂件采⽤多⽂件编写,由于程序规模⼩,故未采⽤编写头⽂件的⽅式使⽤ #pragma once 来防⽌头⽂件重复包含代码怎么使⽤本程序看看注释应该就知道了。
run main.c 就⾏。
其他各⽂件作⽤:def.c 定义了⼀些常量和全局变量,结构体myIO.c 实现了成绩录⼊和成绩打印输出file.c 实现了将成绩保存为⽂件menu.c 实现了菜单功能function.c 包含其他⼀些要⽤的函数main.c#include "menu.c"int main(){select();return 0;}def.c// 相同头⽂件只包含⼀次,后不赘述#pragma once#include <stdio.h>#include <stdlib.h>#include <string.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define Status int// 课程typedef struct Course{char name[30];int score;} Course, *pCourse;// 学⽣typedef struct Student{char number[30];char name[30];pCourse pC;} Student, *pStudent;// n是学⽣数, m是课程数int n, m;char courseName[30], studentName[30], course[20][30];pStudent pS = NULL;myIO.c#pragma once#include "def.c"pStudent inputStudentInfo(void);void printStudentInfo(pStudent pS);// 录⼊学⽣信息pStudent inputStudentInfo(void){int i, j;printf("Please input the number of students and courses: "); scanf("%d %d", &n, &m);printf("Please input the name of courses: ");for (i = 0; i < m; i++){scanf("%s", course[i]);}pStudent pS = (pStudent)malloc(sizeof(Student) * n);if (!pS)return NULL;printf("Please input the info: \n");for (i = 0; i < n; i++){pS[i].pC = (pCourse)malloc(sizeof(Course) * m);if (!pS[i].pC)return NULL;scanf("%s %s", pS[i].name, pS[i].number);for (j = 0; j < m; j++){strcpy(pS[i].pC[j].name, course[j]);scanf("%d", &pS[i].pC[j].score);}}return pS;}// 打印所有学⽣信息void printStudentInfo(pStudent pS){int i, j;// 打印标题printf("Name\tnumber\t");for (i = 0; i < m - 1; i++)printf("%s\t", course[i]);printf("%s\n", course[i]);// 显⽰信息for (i = 0; i < n; i++){printf("%s\t%s\t", pS[i].name, pS[i].number);for (j = 0; j < m - 1; j++)printf("%d\t", pS[i].pC[j].score);printf("%d\n", pS[i].pC[j].score);}}file.c#pragma once#include "def.c"Status saveStudentInfo(pStudent pS);Status saveStudentInfo(pStudent pS){FILE *fp;int i, j;char filename[30], str[100] = "student number";printf("please input the filename: ");scanf("%s", filename);fp = fopen(filename, "w");if (!fp)return ERROR;for (i = 0; i < m; i++){strcat(str, " ");strcat(str, course[i]);}strcat(str, "\n");for (i = 0; i < n; i++){strcat(str, pS[i].name);strcat(str, " ");strcat(str, pS[i].number);for (j = 0; j < m; j++){char score[30];itoa(pS[i].pC[j].score, score, 10);strcat(str, " ");strcat(str, score);}strcat(str, "\n");}fputs(str, fp);fclose(fp);return OK;}menu.c#pragma once#include "def.c"#include "myIO.c"#include "file.c"#include "function.c"void menu();void select();// 菜单void menu(){printf("------------------------------------\n");printf("| Menu |\n");printf("| 1. input |\n");printf("| 2. show |\n");printf("| 3. save |\n");printf("| 4. sort |\n");printf("| 5. modify |\n");printf("| 6. count |\n");printf("| 0. exit |\n");printf("------------------------------------\n");}void select(){int branch;while (TRUE){system("cls");menu();printf("[Input]: ");scanf("%d", &branch);if (!branch)break;switch (branch){case 1:{pS = inputStudentInfo();if (pS == NULL)printf("input error! please input again\n"); elseprintf("Input success!\n");system("pause");break;}case 2:{printStudentInfo(pS);system("pause");break;}case 3:{if (OK == saveStudentInfo(pS))printf("Save success!\n");elseprintf("Save fail!\n");system("pause");break;}case 4:{sort(pS);printf("sort success\n");system("pause");break;}case 5:{int res = modify(pS);if (res){printf("change success!\n");}else{printf("change fail!\n");}system("pause");break;}case 6:{int choose;// 输⼊1 显⽰每门课程最⾼成绩信息// 输⼊2 显⽰每门课程平均成绩信息printf("choose 1 for the highest score: \n ");printf("choose 2 for the average score: \n");printf("[Input]: ");scanf("%d", &choose);if (choose == 1){showMax(pS);}else if (choose == 2){showAverage(pS);}else{// 输⼊⾮法提⽰信息printf("Input error!\n");}system("pause");break;}}}}function.c#include "def.c"void sort(pStudent pS);void Swap(pStudent s1, pStudent s2);void showAverage(pStudent pS);void showMax(pStudent pS);Status modify(pStudent pS);// 按课程成绩排序void sort(pStudent pS){int courseNumber, i, j, k;char courseName[30];printf("please input the course name which you want to sort: "); scanf("%s", courseName);for (courseNumber = 0; courseNumber < m; courseNumber++) if (strcmp(course[courseNumber], courseName) == 0)break;// 如果找不到课程,则认为是按总分排序if (courseNumber == m){printf("Sort as total score: \n");// 选择排序for (i = 0; i < n - 1; i++){int flag = i;for (j = i + 1; j < n; j++){int totalScore_1 = 0, totalScore_2 = 0;for (k = 0; k < m; k++){totalScore_1 += pS[j].pC[k].score;totalScore_2 += pS[flag].pC[k].score;}if (totalScore_1 > totalScore_2){flag = j;}}Swap(&pS[i], &pS[flag]);}}else{// 选择排序for (i = 0; i < n - 1; i++){int flag = i;for (j = i + 1; j < n; j++){if (pS[j].pC[courseNumber].score > pS[flag].pC[courseNumber].score) {flag = j;}}Swap(&pS[i], &pS[flag]);}}}// 修改学⽣信息Status modify(pStudent pS){// 密码是1314char password[30] = "1314", psd[30];char number[30];int score, i, j;printf("please input password: ");scanf("%s", psd);// 密码正确才继续,否则返回ERRORif (strcmp(password, psd) == 0){printf("please input the student's number: ");scanf("%s", number);for (i = 0; i < n; i++){// 找到学⽣则继续,否则返回ERRORif (strcmp(pS[i].number, number) == 0){printf("please input the course and score one by one: \n");scanf("%s %d", courseName, &score);for (j = 0; j < m; j++){// 找到课程才继续,否则返回ERRORif (strcmp(pS[i].pC[j].name, courseName) == 0){// 修改课程成绩pS[i].pC[j].score = score;return OK;}}return ERROR;}}return ERROR;}elsereturn ERROR;}// 输出各课程最⾼分的学⽣void showMax(pStudent pS){int i, j, max;for (i = 0; i < m; i++){max = 0;for (j = 0; j < n; j++){if (pS[j].pC[i].score > pS[max].pC[i].score)max = j;}printf("%s\t%s\t%s\t%d\n", course[i], pS[max].name, pS[max].number, pS[max].pC[i].score); }}// 显⽰各课程的平均成绩void showAverage(pStudent pS){int i, j;double ave;for (i = 0; i < m; i++){ave = 0;for (j = 0; j < n; j++){ave += pS[j].pC[i].score;}printf("%s\t%.2lf\n", course[i], ave / n);}}void Swap(pStudent s1, pStudent s2){int i;char studentName[30], number[30];// 交换姓名strcpy(studentName, s1->name);strcpy(s1->name, s2->name);strcpy(s2->name, studentName);// 交换学号strcpy(number, s1->number);strcpy(s1->number, s2->number);strcpy(s2->number, number);// 交换成绩for (i = 0; i < m; i++){int temp = s1->pC[i].score;s1->pC[i].score = s2->pC[i].score;s2->pC[i].score = temp;}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院课程设计报告C语言程序设计课程设计专业电气工程及其自动化班级姓名学号指导教师年月新能源与动力工程学院课程设计任务书课程名称:C语言程序设计课程设计指导教师(签名):班级:姓名学号:指导教师评语及成绩评定表指导教师签字:年月日目录一.引言........................................................ - 1 -1.1 设计目的.......................................... - 1 -1.2意义............................................... - 1 -1.3内容............................................... - 1 -1.4主要任务........................................... - 2 - 二.主要功能和功能.............................................. - 3 -2.1主要功能........................................... - 3 -2.2要求............................................... - 3 -三.系统的数据需求及性能分析..................................... - 4 -3.1 数据需求.......................................... - 4 -3.2系统的性能分析..................................... - 4 -四. 输入输出要求................................................ - 5 - 五.整体框架结构................................................ - 6 - 六.学生成绩业务管理图.......................................... - 7 - 七.系统概要设计................................................ - 8 -7.1 程序的模块组成.................................... - 8 -7.2 学生信息结构数组.................................. - 8 -7.3 各个程序的主要功能介绍:.......................... - 9 -八.系统详细设计................................................ - 10 -8.1函数介绍.......................................... - 10 -九. 调试与测试................................................. - 13 -9.1系统调试.......................................... - 13 -9.2系统测试.......................................... - 13 - 十.总结....................................................... - 20 - 参考文献....................................................... - 22 - 附录源代码................................................... - 23 -一.引言1.1 设计目的1.学生成绩的录入2.能统计学生的成绩,求学生的总分及平均分3.能查询单个学生成绩4.能修改单个学生信息1.2意义随着经济的快速发展,科技的日益普及。
目前我国的信息数字化工作也进入一个全新发展时期,特别是高校的信息化建设已进入了全面的发展阶段,诸多高校充分地认识到,信息化建设己经成为了高校提高自身管理水平、提升综合竞争实力的重要手段。
在高校,各种信息管理系统层出不穷。
通过本系统,能够实现对学生成绩的有效管理,减少教务人员、教师的工作量,该系统能够很好的满足学校教学、管理方面的要求。
为教务人员、教师提供学生成绩管理系统,以轻松实现学生成绩管理。
系统化的成绩管理可以减少教务人员及教师因为工作量大而出现错误,为学校减少不必要的人力、物力、财力,便于学生成绩的增加、删除、修改、查询。
1.3内容对一个有N个学生的班级,每个学生有四门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
1.4主要任务1.能按完成对学生成绩的录入、修改。
2.能统计学生的成绩,求学生的总分及平均分。
3.能查询学生各科成绩。
二.主要功能和功能2.1主要功能1.学生查询功能:为了方便学生查找成绩等信息,将所有信息按照需要进行分类。
这样学生就能很方便的找到自己所需要的信息。
2.管理员查询功能:管理员可以通过条件选择查询所有信息,并进行排序。
3.添加功能:管理员可以输入学生成绩等相关信息。
4.修改功能:输入密码后管理员可以对数据库中的信息进行修改,系统能够通过管理员的给出的条件查找出所要修改的信息,对修改后的信息进行保存。
5.统计功能:管理员可以通过此功能对信息进行统计。
2.2要求使用二进制文件方式存储数据,系统以菜单方式工作学生成绩信息包括:学号,班别,姓名,四门课程成绩(语文、数学、英语和政治)等。
要求使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入,修改,统计,排序,查询,输出等功能。
三.系统的数据需求及性能分析3.1 数据需求通过查阅资料以及对程序的理解,总结出用户对数据的需求如下:1.学生信息:包括:学号、学生姓名等信息。
2.课程信息:包括:课程编号、课程名称等。
3.基本数据维护功能:(1)录入学生的成绩信息。
(2)显示学生的成绩信息。
(3)保存学生的成绩信息。
(4)排序学生的成绩信息。
(5)统计学生的成绩信息。
3.2系统的性能分析1.系统的高速性、稳定性、安全性。
2.系统人机界面友好,易学易用。
3.系统维护成本较低。
四. 输入输出要求在菜单选项中1-7,选择功能项,进行对应选项的函数调用。
1.每一条记录包括一个学生的学号、姓名、4门成绩、平均成绩;2.输入功能:输入学生的基本信息存入磁盘文件中;3.显示功能:输出已存盘的学生信息;4.排序功能:输出用户所要选择科目的提问,输入科目后输出该科目一排好的学生成绩,并按学生平均成绩进行排序;5.插入功能:插入新的信息;6.修改功能,输入密码.错误输出是否继续输入密码.正确则逐个输出是否想要修改学生信息;7.保存功能:将学生记录保存在任何自定义的文件中。
五.整体框架结构图1 整体框架结构图六.学生成绩业务管理图图2 学生成绩业务管理图七.系统概要设计7.1 程序的模块组成第一个模块:先定义好一些必要的全局变量以及调用的函数和结构体数组。
第二个模块:设计一个菜单函数menu();实现能供用户选择功能项。
第三个模块:用enter()函数实现成绩的输入。
第四个模块:用save()函数实现成绩的保存。
第五个模块:用print()函数实现成绩输出。
第六个模块:用cort()函数实现成绩排序功能。
第七个模块:用modify()函数实现成绩修改功能。
第八个模块:用count()函数实现成绩统计功能。
main函数实现总的控制台界面,调用void enter(),void cort(),void modify(),void count(),print(),void save(),函数实现各种用户功能要求。
7.2 学生信息结构数组struct stu{char name[20];int num;int score[M];};7.3 各个程序的主要功能介绍:1.为便于用户使用,先定义一个常数N表示人数,学生信息的结构体数组,以及调用功能项的函数。
2.void main():利用swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
3.void Enter():用来执行学生成绩记录的输入。
4.void Print():显示所有学生的信息。
5.void save():这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。
6.void Cort():要排序的科目的序号,用选择排序法实现函数学生成绩的排序。
7.void Modify():需要通过密码验证,进入菜单后可实现对学生资料的修改。
8.void Count():可以显示学生的平均成绩以及科目最高分。
八.系统详细设计8.1函数介绍1.主函数main()利用swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!2. void Enter()函数用scanf依次输入学生信息,在输入多门成绩成绩时,用for循环来实现,结尾调用save()函数保存。
3. void Print()函数为了使界面美观对学生成绩用%5d输出,且用换行实现,学生信息整齐排列。
4.void Cort()函数先定义choice1,输出想要排序的科目的序号,用选择排序法实现函数学生成绩的排序。
5.void Modify()函数先定义好一个密码以及flag=0;如果输入的密码错误则flag=1,用do ..while实现是否重新输入密码,密码准确后调用modi()函数,实现修改功能。
6. void Count()函数用menu1函数实现一个菜单功能。
用switch 实现,用户选择想执行的功能,从而调用Show1()Show2()Show3()。
图3 结构图8.2 统计函数流程九.调试与测试9.1系统调试1.在enter()函数中对学生成绩的输入用scanf(“%d”,s);当输入一门成绩后就会跳回,使接下来的程序无法运行,改为for(j=1;j<=M;j++) scanf(“%d”,&s[i].score[j]);将错误解决。
2.在enter函数中,输入姓名用scanf(“%s”,&s[i].name);错误,在scanf函数中的输入项如果是字符数组名代表该数组的起始地址.则应改为scanf(“%d”,s[i].name)。