学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc

上传人:laozhun 文档编号:2385295 上传时间:2023-02-17 格式:DOC 页数:41 大小:1.10MB
返回 下载 相关 举报
学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc_第1页
第1页 / 共41页
学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc_第2页
第2页 / 共41页
学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc_第3页
第3页 / 共41页
学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc_第4页
第4页 / 共41页
学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++设计c++课程程序设计论文 软件工程信息工程学位毕业论文设计.doc(41页珍藏版)》请在三一办公上搜索。

1、华东交通大学C+程序设计课程设计报告选题名称: 学生成绩管理系统 系(院): 软件学院 专 业: 软件工程+信息工程 班 级: X班 姓 名: X同学 学 号: 2009XXXXXXXXXX指导教师: X老师 学年学期: 2009 2010 学年 第 二 学期2010 年 6 月 24 日摘要:随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在商业、企业、银行等起着重要作用,而且在日常生活中也越来越离不开计算机。就像在大学,有很多学生的信息需要处理、保存,以及提供优质的服务,此时计算机显得尤为重要。随着科学技术的不断提高,计算机科学日

2、渐成熟,其强大的功能已为人们深刻认识。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点。所以,现今绝大部分大学都使用了计算机来规划整个学生的信息、提供选课、网络教学等。学生成绩管理系统能方便用户迅速、准确处理学生的成绩,得到想要的数据并能将学生的信息以文档保存,以供使用时调出。本文介绍了简易学生成绩管理系统在Microsoft Visual C+ 6.0环境下的实现过程:系统的分析、功能模块的设计、系统的调试和测试。此系统的主要管理信息有:学生的班级、学生的学号、学生的姓名、离散数学成绩、c+程序设计成绩、大学物理成绩、大学英语成绩、高等数学成绩、大学体育

3、成绩、马克思主义基本原理成绩。本系统的主要功能有:输入数据(即学生成绩等相关信息)、显示所有数据、按平均分降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数据、从文件中读入数据、将所有记录写入文件、退出本系统。关键字:学生成绩管理目录1 需求分析61.1 功能需求分析61.2 环境需求分析61.3 方法需求分析62 概要设计72.1 系统功能模块图73 详细设计83.1 设计原理83.2 程序详细代码83.3 系统界面314 调试与操作说明314.1 调试过程314.2 操作说明39总结40致谢41参考文献421 需求分析1.1 功能需求分析简易学生成绩管理系统主要有四个大的

4、模块:学生信息(如班级、学号、姓名、各科成绩等)的录入文件中;查找并显示、删除、插入、修改一组数据;从文件中输出所有数据并进行按平均分排序;退出此系统。(1) 学生信息的录入模块主要功能是录入学生的信息,具体操作是:先打开程序的主界面,然后选择数字1,即可录入数据,程序依次输出:学生的班级、学生的学号、学生的姓名、信息专业的各科成绩等,最后会询问是否继续录入。结束后可以选择数字9,进行数据的保存,实际生活中学生成绩的文件主要以word或excel等储存,为了方便操作我在调试本系统中成绩文件采用了txt的文档格式保存,当然也可以使用word文档形式。(2)查找、显示、修改、插入、删除模块 主要功

5、能是查找用户所需要的学生信息,直接选择数字4,便可根据学生的班级、学号、姓名可以查询到相关成绩,包括各科成绩还有平均分和总分等,提供了极大的便利。为了更加具有人性化,本系统还增设了修改、插入、删除等功能,以便极大的服务广大师生。(2) 输出所有数据并进行按平均分排列模块主要功能是方便用户进行一个全面的观察,统计所有的学生成绩,即按总分的排名。另外,每个文件中的学生成绩管理,也会进行相应的对比,方便比较。(3) 退出系统模块简单的利用了c+面向对象程序设计思想,设计出了可选择的退出装置。1.2 环境需求分析 操作系统:Windows XP调试软件:Visual C+ 6.01.3 方法需求分析由

6、于数组存放数据的时候要先确定数组的规模,不能动态的分配内存空间,而单链表是非连续存放的,可以对内存空间进行动态分配,此系统是用单链表完成的。然后定义链表的结点类型为结构就可以实现对学生学号、姓名、成绩、班级等学保存。每次只要返回头指针,就可以对整个链表进行操作,因此选链表来存放学生信息。2 概要设计2.1 系统功能模块图学 生 成 绩 管 理 系 统 输入学生信息 插入学生信息删除学生信息显示学生信息按姓名找学生保存学生信息读取学生信息计算总分均分学生成绩排序按学号查成绩分类合计2.2 设计思想:学生成绩管理系统是用面向对象的方法设计,由于数组的存放是连续的,而单链表是非连续存放的,是动态分配

7、内存空间,因此此系统采用单链表来完成。各个功能模块的实现主要转变到对单链表的遍历,添加和删除结点。3 详细设计3.1 设计原理学生成绩管理系统以菜单选择,通过调用各个函数,对单链表的遍历,实现不同的功能,不同函数处理后返回的只是一个头结点,但是通过头结点可以找到所有链表中的信息,只要有函数,找到头指针就能进行相应的操作,所以模块化的程序方便以后添加或者删除某些功能,程序中通过system(“cls”)清屏函数实现界面的转换,主函数中的循环保证程序不会退出,一个循环和一个清屏函数实现了主菜单和各子画面的切换(子函数)。这样的话各个子函数都可以调用一开始输入的数据,这样就实现了各个不同函数调用时都

8、能使用整个系统连续起来了。作为一个学生成绩管理系统,增加了文件的读入和写出功能,增加了程序的实用性。3.2 程序详细代码#include /*引用库函数*/ #include #include #include#include typedef structchar class_020; /*班级*/int number; /*学号*/char name20; /*姓名*/float electrics; /*离散数学成绩*/float c_program; /*C+语言成绩*/float multimedia; /*大学物理成绩*/float english; /*大学英语成绩*/float

9、math; /*高等数学成绩*/float sport; /*体育成绩*/float polity; /*马克思主义基本原理成绩*/float summary; /*总分*/float average; /*平均分*/Student; Student stu100; /*结构体数组变量*/int menu() /*菜单函数*/ char c; do system(cls); /*运行前清屏*/ cout*学生成绩管理系统*endl;/*菜单选择*/ cout-囊括信息专业主要课程-endl;cout【1】输入数据endl;cout【2】显示所有数据endl; cout【3】按平均分降序排列en

10、dl; cout【4】查找并显示一组数据endl;cout【5】插入一组数据endl; cout【6】修改一组数据endl; cout【7】删除一组数据endl;cout【8】从文件中读入数据endl;cout【9】将所有记录写入文件endl;cout【0】退出本系统nendl; cout*作者:09 软件工程+信息工程3班 吴乐斌*endl;cout请你选择操作(0-9):endl; c=getchar(); /*读入选择*/ while(c9); return(c-0); /*返回选择*/ int Input(Student stud,int n) /*输入若干条记录*/ int i=0;

11、char sign,x10; /*x10为清除多余的数据所用*/ while(sign!=n&sign!=N) /*判断*/ coutstudn+i.class_0;coutstudn+i.number;coutstudn+i.name;coutstudn+i.electrics;coutstudn+i.c_program;coutstudn+i.multimedia;coutstudn+i.english;coutstudn+i.math;coutstudn+i.sport;coutstudn+i.polity;studn+i.summary=studn+i.electrics+studn+

12、i.c_program+studn+i.multimedia+studn+i.english+studn+i.math+studn+i.sport+studn+i.polity;studn+i.average=studn+i.summary/7;cout该学生的总分为:studn+i.summary平均分为:studn+i.averageendl;gets(x); /*清除多余的输入*/ cout提示:继续写入成绩?(Y/N); cinsign; /*输入判断*/ i+; return(n+i); void Display(Student stud,int n) /*显示所有记录*/ int

13、i; if(!stud)cout没有记录;elsecout-endl; /*格式头*/ cout 班别 学号 姓名 离散 C+ 物理 英语 数学 体育 马克思 总分 平均分endl; cout-endl; for(i=1;in+1;i+) /*循环输入*/ studi-1.summary=studi-1.electrics+studi-1.c_program+studi-1.multimedia+studi-1.english+ studi-1.math+studi-1.sport+studi-1.polity;studi-1.average=studi-1.summary/7;coutstu

14、di-1.class_0 studi-1.number studi-1.name studi-1.electrics studi-1.c_program studi-1.multimedia studi-1.english studi-1.math studi-1.sport studi-1.polity studi-1.summary studi-1.averageendl; couttttendl; system(pause); void Sort(Student stud,int n) /*按平均分排序*/ int i,j,k; float s;char t20; for(i=0;in-

15、1;i+) /*冒泡法排序*/ for(j=0;jn-1-i;j+) if(studj.averagestudj+1.average) strcpy(t,studj+1.class_0); strcpy(studj+1.class_0,studj.class_0); strcpy(studj.class_0,t);k=studj+1.number; studj+1.number=studj.number;studj.number=k;strcpy(t,studj+1.name); strcpy(studj+1.name,studj.name); strcpy(studj.name,t);s=s

16、tudj+1.electrics; studj+1.electrics=studj.electrics; studj.electrics=s;s=studj+1.c_program; studj+1.c_program=studj.c_program; studj.c_program=s; s=studj+1.multimedia; studj+1.multimedia=studj.multimedia; studj.multimedia=s;s=studj+1.english; studj+1.english=studj.english; studj.english=s;s=studj+1.

17、math; studj+1.math=studj.math; studj.math=s;s=studj+1.sport; studj+1.sport=studj.sport; studj.sport=s;s=studj+1.polity; studj+1.polity=studj.polity; studj.polity=s;s=studj+1.summary; studj+1.summary=studj.summary; studj.summary=s;s=studj+1.average; studj+1.average=studj.average; studj.average=s; cou

18、t-endl; /*格式头*/ cout 班别 学号 姓名 离散 C+ 物理 英语 数学 体育 马克思 总分 平均分endl; cout-endl; for(i=1;in+1;i+) /*循环输入*/ studi-1.summary=studi-1.electrics+studi-1.c_program+studi-1.multimedia+studi-1.english+ studi-1.math+studi-1.sport+studi-1.polity;studi-1.average=studi-1.summary/7;coutstudi-1.class_0studi-1.numberst

19、udi-1.namestudi-1.electricsstudi-1.c_programstudi-1.multimediastudi-1.english studi-1.mathstudi-1.sportstudi-1.politystudi-1.summarystudi-1.averageendl; int Insert(Student stud,int n) /*插入一条记录*/ char x10; /*清除多余输入所用*/ cout请输入学生的班别:studn.class_0;coutstudn.number;coutstudn.name;coutstudn.electrics;cou

20、tstudn.c_program;coutstudn.multimedia;coutstudn.english;coutstudn.math;coutstudn.sport;coutstudn.polity;studn.summary=studn.electrics+studn.c_program+studn.multimedia+studn.english+ studn.math+studn.sport+studn.polity;studn.average=studn.summary/7;gets(x); n+; Sort(stu,n); /*调用排序函数*/ cout提示:插入成功!end

21、l; /*返回成功信息*/ return(n); int Delete(Student stud,int n) /*按学号查找,删除一条记录*/ int s; int i=0,j; cout输入需要删除学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout提示:对不起,无法找到改学号endl; /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(studj.class_0,studj+1.class_0);studj.number=studj+1.number;st

22、rcpy(studj.name,studj+1.name); studj.electrics=studj+1.electrics;studj.c_program=studj+1.c_program;studj.multimedia=studj+1.multimedia;studj.english=studj+1.english;studj.math=studj+1.math;studj.sport=studj+1.sport;studj.polity=studj+1.polity; cout提示:已成功删除!endl; /*返回成功信息*/ return(n-1); void Search(S

23、tudent stud,int n) /*查找并显示一个记录*/ int s; int i=0; cout输入需要查找学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout提示:对不起,无法找到该学生的信息!endl; /*输入失败信息*/ return; cout-endl; cout班别:studi.class_0endl; /*输出该学生信息*/ cout学号:studi.numberendl; cout姓名:studi.nameendl;cout离散数学:studi.electricsendl;coutC+程序设计

24、:studi.c_programendl;cout大学物理:studi.multimediaendl;cout大学英语:studi.englishendl;cout高等数学:studi.mathendl;cout大学体育:studi.sportendl;cout马克思主义基本原理:studi.polityendl;cout总分:studi.summaryendl;cout平均分:studi.averageendl;void Modify(Student stud,int n)int s;int i=0;cout输入需要修改成绩学生的学号:s;while(studi.number-s)!=0&i

25、n) i+; /*查找判断*/ if(i=n) cout提示:对不起,无该学生的成绩endl; /*输入失败信息*/ return;cout-该学生的信息-endl; /*格式头*/ cout 班别 学号 姓名 离散 C+ 物理 英语 数学 体育 马克思 总分 平均分endl; cout-endl; studi.summary=studi.electrics+studi.c_program+studi.multimedia+studi.english+ studi.math+studi.sport+studi.polity;studi.average=studi.summary/7;couts

26、tudi-1.class_0studi-1.numberstudi-1.namestudi-1.electricsstudi-1.c_programstudi-1.multimediastudi-1.english studi-1.mathstudi-1.sportstudi-1.politystudi-1.summarystudi-1.averageendl; cout请输入学生的班别:studn+i.class_0;cout请输入学生的学号:studn+i.number;cout请输入学生的姓名:studn+i.name;cout请输入该学生离散数学的成绩:studn+i.electric

27、s;cout请输入该学生C+程序设计的成绩:studn+i.c_program;cout请输入该学生大学物理的成绩:studn+i.multimedia;cout请输入该学生大学英语的成绩:studn+i.english;cout请输入该学生高等数学的成绩:studn+i.math;cout请输入该学生大学体育的成绩:studn+i.sport;cout请输入该学生马克思主义基本原理的成绩:studn+i.polity;studi.summary=studi.electrics+studi.c_program+studi.multimedia+studi.english+studi.math+

28、studi.sport+studi.polity;studi.average=studi.summary/7;cout该学生的总分为:studi.summary平均分为:studi.average;int Read(Student stud,int n) /*从文件中读入数据*/ int i=0,num; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ cout输入文件名:filename; /*输入文件名*/ if(fp=fopen(filename,rb)=NULL) /*打开文件*/ cout提示:无法打开这个文件!endl; /*打开失败

29、信息*/ coutttt; system(pause); return(n); fscanf(fp,%d,&num); /*读入总记录量*/ while(inum) /*循环读入数据*/ fscanf(fp,%s%d%s%f%f%f%f%f%f%f%f%f,studn+i.class_0,&studn+i.number,studn+i.name,&studn+i.electrics,&studn+i.c_program,&studn+i.multimedia,&studn+i.english,&studn+i.math,&studn+i.sport,&studn+i.polity,&studn

30、+i.summary,&studn+i.average); i+; n+=num;fclose(fp); /*关闭文件*/ cout提示:读入数据成功,可选择【显示所有成绩】查看endl; coutttt; system(pause); return(n); void Save(Student stud,int n) /*将所有记录写入文件*/ int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ coutfilename; if(fp=fopen(filename,w)=NULL) /*打开文件*/ cout提示:无法打开这个文件!

31、endl; system(pause); return; fprintf(fp,%dn,n); /*循环写入数据*/ while(in) fprintf(fp,%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2n,studi.class_0,studi.number,studi.name,studi.electrics,studi.c_program,studi.multimedia,studi.english, studi.math,studi.sport,studi.polity,studi.summary,s

32、tudi.average); i+; fclose(fp); /*关闭文件*/ cout提示:已成功写入数据!endl; /*返回成功信息*/ void main() /*主函数*/ int n=0; for(;) switch(menu() /*选择判断*/ case 1: coutendl 输入成绩 =endl; /*输入若干条记录*/ n=Input(stu,n); break; case 2: coutendl 显示所有记录 =endl; /*显示所有记录*/ Display(stu,n); break; case 3: coutendl 按平均分降序排列 =endl; Sort(st

33、u,n); /*按学号排序*/ cout排序成功!endl; coutttt; system(pause); break; case 4: coutendl 查找并显示一组成绩 =endl; Search(stu,n); /*插入一条记录*/ coutttt; system(pause); break; case 5: coutendl 插入一组成绩 =endl; n=Insert(stu,n); /*按姓名查找,删除一条记录*/ coutttt; system(pause); break; case 6: coutendl 修改一组成绩 =endl; Modify(stu,n); /*查找并

34、显示一个记录*/ coutttt; system(pause); break; case 7: coutendl 删除一组成绩 =endl; n=Delete(stu,n); /*查找并显示一个记录*/ coutttt; system(pause); break; case 8: coutendl 从文件中读入数据 =endl; n=Read(stu,n); /*循环读出数据*/ break; case 9: coutendl 将所有记录写入文件 =endl; Save(stu,n); /*循环写入数据*/ coutttt; system(pause); break; case 0: coutendl 谢谢您的使用! =endl; /*结束程序*/ coutttt; system(pause); exit(0); 3.3 系统界面系统主菜单中列出了该程序的所有功能:输入数据、显示所有数据、按平均分降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数据、从文件中读入数据、将所有记录写入文件中、退出本系统。如图3.3 图3.34 调试与操作说明4.1 调试过程(1)输入数据:选择数字1即可,然后输入想要输入的数据。如图a 图a此时,如果想继续输入,则输入字母Y。如图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备2025010119号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000987号