C语言学生成绩管理系统
- 格式:doc
- 大小:417.00 KB
- 文档页数:22
学生成绩管理管理系统院系:理学院信息与计算科学班级:111班姓名:张天颖赵宇亭指导教师:孙雪莲2013 年4月16日一概述1、课程设计应完成的工作(1)编写算法(2)算法测试,并有具体的测试结果和结果分析(3)撰写课程报告2、总体设计工作(包含几大功能模块)(1)输入学生信息并保存到文件(2)读取文件并输出学生信息(3)按学号及姓名查询(4)按学号修改信息(5)插入信息(6)按数据结构降序(冒泡)排序(7)按平均分降序(选择)排序(8)统计各科成绩的总分和平均分(9)退出3、课程设计的目的(小标题,宋体,四号,加粗,左对齐顶格)学生成绩管理系统设计,使之能提供以下功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)系统以菜单方式工作4、课程设计的要求用C语言实现系统(1)利用结构体实现学生成绩的数据结构设计(2)用指针链表将所有学生的数据按照学号顺序链接起来(3)系统具有增加、查询、修改、排序等基本功能排序功能:按学生平均成绩进行排序(4)完成设计任务并书写实验报告(5)将学生成绩信息保存文件中5、课程设计的主要设计思想(1) 确定语言算法(2) 确定程序主要功能模块 (3) 系统结构体的设计 (1)(4)各功能模块的设计二 总体方案设计总体功能要求:(1)链表的建立,每个节点包括:学号、姓名、性别、C 语言、数学、英语、总分等。
(2)节点的插入,按学号的顺序插入。
(3)删除链表中的节点,按学号或者姓名。
(4)链表的输出。
按学号排序、按总分排序系统流程图学 生班级学号姓名英语 数学C 语言 平均分总分开始主界面输入学生成绩 输出学生成绩 查询学生信息修改学生信息 插入学生成绩按总分排序按单科排序删除学生信息退出本系统结束模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等): (1).数据录入:数据录入的功能是将需要的数据进行录入,用于后面的各项操作。
实现:用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入。
(2). 数据插入: 数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:分为两个部分,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。
(3).数据查询:数据查询的主要功能是在数据输入之后进行分类再现,实现:分为输出所有数据,按学号查询,按姓名查询,当输入的数据满足条件时即输出所要求的。
(4). 数据删除:数据删除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进行删除,实现:输入学号,满足条件时即把后一个数值赋给前一个数值,达到删除的目的。
(5).平均值计算:平均值计算的主要功能是求平均值,再对其进行排序,实现:用公式进行计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。
三程序的调试与运行结果说明经多次调试,终于完全没有错误了四附录源程序代码#include<iostream.h>#include<stdlib.h>#include<ctype.h>#include<stdio.h>#include<string.h>typedef struct{char class_0[20];int number;char name[20];float electrics;float c_program;float multimedia;float english;float math;float sport;float polity;float summary;float average;}Student;Student stu[100];int menu(){char c;do{system("cls");cout<<"********************************学生成绩管理系统********************************"<<endl;cout<<"【1】输入数据"<<endl;cout<<"【2】显示所有数据"<<endl;cout<<"【3】按平均分降序排列"<<endl;cout<<"【4】查找并显示一组数据"<<endl;cout<<"【5】插入一组数据"<<endl;cout<<"【6】修改一组数据"<<endl;cout<<"【7】删除一组数据"<<endl;cout<<"【8】从文件中读入数据"<<endl;cout<<"【9】将所有记录写入文件"<<endl;cout<<"【0】退出本系统\n"<<endl;cout<<"**********************作者:张天颖赵宇亭************************"<<endl;cout<<"请你选择操作(0-9):"<<endl;c=getchar();}while(c<'0'||c>'9');return(c-'0');}int Input(Student stud[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){cout<<"请输入学生的班级:";cin>>stud[n+i].class_0;cout<<"请输入学生的学号:";cin>>stud[n+i].number;cout<<"请输入学生的姓名:";cin>>stud[n+i].name;cout<<"请输入该学生『中国传统文化』的成绩:";cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n+i].polity;stud[n+i].summary=stud[n+i].electrics+stud[n+i].c_program+stud[n+i].multimedia+stud[n+i].en glish+stud[n+i].math+stud[n+i].sport+stud[n+i].polity;stud[n+i].average=stud[n+i].summary/7;cout<<"该学生的总分为:"<<stud[n+i].summary<<"平均分为:"<<stud[n+i].average<<endl; gets(x);cout<<"=====>提示:继续写入成绩?(Y/N)";cin>>sign;i++;}return(n+i);}void Display(Student stud[],int n){int i;if(!stud)cout<<"没有记录";else{cout<<"--------------------------------------------------------------------------------"<<endl;cout<<"班级学号姓名中国传统C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<" "<<stud[i-1].number<<" "<<stud[i-1].name<<" "<<stud[i-1].electrics<<" "<<stud[i-1].c_program<<" "<<stud[i-1].multimedia<<" "<<stud[i-1].english<<" "<<stud[i-1].math<<" "<<stud[i-1].sport<<" "<<stud[i-1].polity<<" "<<stud[i-1].summary<<" "<<stud[i-1].average<<endl;}cout<<"\t\t\t"<<endl; }system("pause");}void Sort(Student stud[],int n){int i,j,k;float s;char t[20];for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(stud[j].average<stud[j+1].average){strcpy(t,stud[j+1].class_0);strcpy(stud[j+1].class_0,stud[j].class_0);strcpy(stud[j].class_0,t);k=stud[j+1].number;stud[j+1].number=stud[j].number;stud[j].number=k;strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);s=stud[j+1].electrics;stud[j+1].electrics=stud[j].electrics;stud[j].electrics=s;s=stud[j+1].c_program;stud[j+1].c_program=stud[j].c_program; stud[j].c_program=s;s=stud[j+1].multimedia;stud[j+1].multimedia=stud[j].multimedia; stud[j].multimedia=s;s=stud[j+1].english;stud[j+1].english=stud[j].english;stud[j].english=s;s=stud[j+1].math;stud[j+1].math=stud[j].math;stud[j].math=s;s=stud[j+1].sport;stud[j+1].sport=stud[j].sport;stud[j].sport=s;s=stud[j+1].polity;stud[j+1].polity=stud[j].polity;stud[j].polity=s;s=stud[j+1].summary;stud[j+1].summary=stud[j].summary; stud[j].summary=s;stud[j+1].average=stud[j].average;stud[j].average=s;}cout<<"--------------------------------------------------------------------------------"<<endl;cout<<" 班级学号姓名中国传统C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;}}int Insert(Student stud[],int n){char x[10];cout<<"请输入学生的班级:"<<endl;cin>>stud[n].class_0;cout<<"请输入学生的学号:";cin>>stud[n].number;cout<<"请输入学生的姓名:";cin>>stud[n].name;cout<<"请输入该学生『中国传统』的成绩:";cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n].polity;stud[n].summary=stud[n].electrics+stud[n].c_program+stud[n].multimedia+stud[n].english+ stud[n].math+stud[n].sport+stud[n].polity;stud[n].average=stud[n].summary/7;gets(x);n++;Sort(stu,n);cout<<"=====>提示:插入成功!"<<endl;return(n);}int Delete(Student stud[],int n){int s;int i=0,j;cout<<"输入需要删除学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到改学号……"<<endl;return(n);}for(j=i;j<n-1;j++){strcpy(stud[j].class_0,stud[j+1].class_0);stud[j].number=stud[j+1].number;strcpy(stud[j].name,stud[j+1].name);stud[j].electrics=stud[j+1].electrics;stud[j].c_program=stud[j+1].c_program;stud[j].multimedia=stud[j+1].multimedia;stud[j].english=stud[j+1].english;stud[j].math=stud[j+1].math;stud[j].sport=stud[j+1].sport;stud[j].polity=stud[j+1].polity;}cout<<"=====>提示:已成功删除!"<<endl;return(n-1);}void Search(Student stud[],int n){int s;int i=0;cout<<"输入需要查找学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; return;}cout<<"---------------------------"<<endl;cout<<"班级:"<<stud[i].class_0<<endl;cout<<"学号:"<<stud[i].number<<endl;cout<<"姓名:"<<stud[i].name<<endl;cout<<"中国传统:"<<stud[i].electrics<<endl;cout<<"C语言程序设计:"<<stud[i].c_program<<endl;cout<<"多媒体技术:"<<stud[i].multimedia<<endl;cout<<"大学英语:"<<stud[i].english<<endl;cout<<"高等数学:"<<stud[i].math<<endl;cout<<"大学体育:"<<stud[i].sport<<endl;cout<<"马克思主义基本原理:"<<stud[i].polity<<endl;cout<<"总分:"<<stud[i].summary<<endl;cout<<"平均分:"<<stud[i].average<<endl;}void Modify(Student stud[],int n){int s;int i=0;cout<<"输入需要修改成绩学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无该学生的成绩……"<<endl;return;}cout<<"-----------------------------------该学生的信息---------------------------------"<<endl;cout<<" 班级学号姓名中国传统C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+ stud[i].math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;cout<<"请输入学生的班级:"<<endl;cin>>stud[n+i].class_0;cout<<"请输入学生的学号:"<<endl;cin>>stud[n+i].number;cout<<"请输入学生的姓名:"<<endl;cin>>stud[n+i].name;cout<<"请输入该学生『中国传统』的成绩:"<<endl;cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:"<<endl;cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:"<<endl;cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:"<<endl;cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:"<<endl;cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:"<<endl;cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:"<<endl;cin>>stud[n+i].polity;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+stud[i]. math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<"该学生的总分为:"<<stud[i].summary<<"平均分为:"<<stud[i].average;}int Read(Student stud[],int n){int i=0,num;FILE *fp;char filename[20];cout<<"输入文件名:"<<endl;cin>>filename;if((fp=fopen(filename,"rb"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;cout<<"\t\t\t";system("pause");return(n);}fscanf(fp,"%d",&num);while(i<num){fscanf(fp,"%s%d%s%f%f%f%f%f%f%f%f%f",stud[n+i].class_0,&stud[n+i].number,stud[n+i].n ame,&stud[n+i].electrics,&stud[n+i].c_program,&stud[n+i].multimedia,&stud[n+i].english,&stu d[n+i].math,&stud[n+i].sport,&stud[n+i].polity,&stud[n+i].summary,&stud[n+i].average);i++;}n+=num;fclose(fp);cout<<"=====>提示:读入数据成功,可选择【显示所有成绩】查看"<<endl;cout<<"\t\t\t";system("pause");return(n);}void Save(Student stud[],int n){int i=0;FILE *fp;char filename[20];cout<<"输入文件名:";cin>>filename;if((fp=fopen(filename,"w"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;system("pause");return;}fprintf(fp,"%d\n",n);while(i<n){fprintf(fp,"%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2\n",stud[i ].class_0,stud[i].number,stud[i].name,stud[i].electrics,stud[i].c_program,stud[i].multimedia,stud[ i].english,stud[i].math,stud[i].sport,stud[i].polity,stud[i].summary,stud[i].average);i++;}fclose(fp);cout<<"=====>提示:已成功写入数据!"<<endl;}void main(){int n=0;for(;;){switch(menu()){case 1:cout<<endl<<"====>> 输入成绩<<===="<<endl;n=Input(stu,n);break;case 2:cout<<endl<<"====>> 显示所有记录<<===="<<endl; Display(stu,n);break;case 3:cout<<endl<<"====>> 按平均分降序排列<<===="<<endl; Sort(stu,n);cout<<"排序成功!"<<endl;cout<<"\t\t\t";system("pause");break;case 4:cout<<endl<<"====>> 查找并显示一组成绩<<===="<<endl; Search(stu,n);cout<<"\t\t\t";system("pause");break;case 5:cout<<endl<<"====>> 插入一组成绩<<===="<<endl;n=Insert(stu,n);cout<<"\t\t\t";system("pause");break;case 6:cout<<endl<<"====>> 修改一组成绩<<===="<<endl; Modify(stu,n);cout<<"\t\t\t";system("pause");break;case 7:cout<<endl<<"====>> 删除一组成绩<<===="<<endl;n=Delete(stu,n);cout<<"\t\t\t";system("pause");break;case 8:cout<<endl<<"====>> 从文件中读入数据<<===="<<endl;n=Read(stu,n);break;case 9:cout<<endl<<"====>> 将所有记录写入文件<<===="<<endl;Save(stu,n);cout<<"\t\t\t";system("pause");break;case 0:cout<<endl<<"====>> 谢谢您的使用!<<===="<<endl;cout<<"\t\t\t";system("pause");exit(0);}}}界面截图1、程序主菜单运行界面2、成绩录入界面3、成绩修改界面4、成绩数据删除界面5、插入数据界面6、将数据写入文件界面参考文献[1] 谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版社,2006[2] 谭浩强,C程序设计题解与上机指导(第3版)[M]. 北京: 清华大学出版社,2006。