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

上传人:土8路 文档编号:10145501 上传时间:2021-04-24 格式: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 环境下的实现过程:系统的分析、功能模 块的设计、系统的调试和测试。此系统的主

3、要管理信息有:学生的班级、学生 的学号、学生的姓名、离散数学成绩、c+程序设计成绩、大学物理成绩、大学 英语成绩、高等数学成绩、大学体育成绩、马克思主义基本原理成绩。本系统 的主要功能有:输入数据(即学生成绩等相关信息) 、显示所有数据、按平均分 降序排列、查找并显示一组数据、插入一组数据、修改一组数据、删除一组数 据、从文件中读入数据、将所有记录写入文件、退出本系统。 关键字关键字:学生成绩管理 目目录录 1 需求分析.6 1.1 功能需求分析.6 1.2 环境需求分析.6 1.3 方法需求分析.6 2 概要设计.7 2.1 系统功能模块图.7 3 详细设计.8 3.1 设计原理.8 3.2

4、 程序详细代码.8 3.3 系统界面.31 4 调试与操作说明.31 4.1 调试过程.31 4.2 操作说明.39 总结.40 致谢.41 参考文献.42 1 需求分析需求分析 1.1 功能需求分析功能需求分析 简易学生成绩管理系统主要有四个大的模块:学生信息(如班级、学号、 姓名、各科成绩等)的录入文件中;查找并显示、删除、插入、修改一组数据; 从文件中输出所有数据并进行按平均分排序;退出此系统。 (1) 学生信息的录入模块 主要功能是录入学生的信息,具体操作是:先打开程序的主界面,然后 选择数字 1,即可录入数据,程序依次输出:学生的班级、学生的学号、 学生的姓名、信息专业的各科成绩等,

5、最后会询问是否继续录入。结束 后可以选择数字 9,进行数据的保存,实际生活中学生成绩的文件主要 以 word 或 excel 等储存,为了方便操作我在调试本系统中成绩文件采用 了 txt 的文档格式保存,当然也可以使用 word 文档形式。 (2)查找、显示、修改、插入、删除模块 主要功能是查找用户所需要的学生信息,直接选择数字 4,便可根据学 生的班级、学号、姓名可以查询到相关成绩,包括各科成绩还有平均分和总分 等,提供了极大的便利。为了更加具有人性化,本系统还增设了修改、插入、 删除等功能,以便极大的服务广大师生。 (2) 输出所有数据并进行按平均分排列模块 主要功能是方便用户进行一个全面

6、的观察,统计所有的学生成绩,即按 总分的排名。另外,每个文件中的学生成绩管理,也会进行相应的对比, 方便比较。 (3) 退出系统模块 简单的利用了 c+面向对象程序设计思想,设计出了可选择的退出装置。 1.2 环境需求分析环境需求分析 操作系统:Windows XP 调试软件:Visual C+ 6.0 1.3 方法需求分析方法需求分析 由于数组存放数据的时候要先确定数组的规模,不能动态的分配内存空间, 而单链表是非连续存放的,可以对内存空间进行动态分配,此系统是用单链表 完成的。然后定义链表的结点类型为结构就可以实现对学生学号、姓名、成绩、 班级等学保存。 每次只要返回头指针,就可以对整个链

7、表进行操作,因此选链表来存放学生信 息。 2 概要设计概要设计 2.1 系统功能模块图系统功能模块图 学学 生生 成成 绩绩 管管 理理 系系 统统 输 入 学 生 信 息 插 入 学 生 信 息 删 除 学 生 信 息 显 示 学 生 信 息 按 姓 名 找 学 生 保 存 学 生 信 息 读 取 学 生 信 息 计 算 总 分 均 分 学 生 成 绩 排 序 按 学 号 查 成 绩 分 类 合 计 2.2 设计思想设计思想: 学生成绩管理系统是用面向对象的方法设计,由于数组的存放是连续的, 而单链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表来完 成。各个功能模块的实现主要转变

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

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

10、 float english; /*大学英语成绩大学英语成绩*/ float math; /*高等数学成绩高等数学成绩*/ float sport; /*体育成绩体育成绩*/ float polity; /*马克思主义基本原理成绩马克思主义基本原理成绩*/ float summary; /*总分总分*/ float average; /*平均分平均分*/ Student; Student stu100; /*结构体数组变量结构体数组变量*/ int menu() /*菜单函数菜单函数*/ char c; do system(cls); /*运行前清屏运行前清屏*/ cout*学生成绩管理学生成

11、绩管理 系统系统*endl;/*菜单选菜单选 择择*/ 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;

12、 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; char sign,x10; /*x10为清除多余的数据所用为清除多余的数据所用*/ while(sign!=n coutstudn+i.number

13、; 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+i.c_program +studn+i.multimedia+studn+i.english+studn+i.math+st udn+i.sport+studn+i.polity;

14、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 i; if(!stud)cout没有记录没有记录; else cout- -endl; /*格

15、式头格式头*/ 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

16、-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

17、=0;in-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(stu

18、dj.name,t); s=studj+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.eng

19、lish=s; s=studj+1.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

20、; studj.average=s; cout- -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.a

21、verage=studi-1.summary/7; coutstudi-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; int Insert(Student stud,int n) /*插入一条记录插入一条记录*/ char x10; /*清除多余输入所用清除多余输入所用*/ cout

22、请输入学生的班别请输入学生的班别:studn.class_0; coutstudn.number; coutstudn.name; coutstudn.electrics; coutstudn.c_program; coutstudn.multimedia; coutstudn.english; coutstudn.math; coutstudn.sport; coutstudn.polity; studn.summary=studn.electrics+studn.c_program+stud n.multimedia+studn.english+ studn.math+studn.spor

23、t+studn.polity; studn.average=studn.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输入需要删除学生的学号输入需要删除学生的学号:s; while(studi.number-s)!=0 /*查找判断查找判断*/ if(i=n)

24、cout提示:对不起,无法找到改学提示:对不起,无法找到改学 号号endl; /*返回失败信息返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作删除操作*/ strcpy(studj.class_0,studj+1.class_0); studj.number=studj+1.number; strcpy(studj.name,studj+1.name); studj.electrics=studj+1.electrics; studj.c_program=studj+1.c_program; studj.multimedia=studj+1.multime

25、dia; 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(Student stud,int n) /*查找并显示一个记录查找并显示一个记录*/ int s; int i=0; cout输入需要查找学生的学号输入需要查找学生的学号:s; while(studi.number-s)!=

26、0 /*查找判断查找判断*/ if(i=n) cout提示:对不起,无法找到该学生的信息!提示:对不起,无法找到该学生的信息! endl; /*输入失败信息输入失败信息*/ return; cout-endl; cout班别班别:studi.class_0endl; /*输出该学生信息输出该学生信息*/ cout学号学号:studi.numberendl; cout姓名姓名:studi.nameendl; cout离散数学离散数学:studi.electricsendl; coutC+程序设计程序设计:studi.c_programendl; cout大学物理大学物理:studi.multim

27、ediaendl; 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

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

29、math+studi.sport+studi.polity; studi.average=studi.summary/7; coutstudi-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请输入学生

30、的学号请输入学生的学号:studn+i.number; cout请输入学生的姓名请输入学生的姓名:studn+i.name; cout请输入该学生请输入该学生离散数学离散数学的成绩的成绩:studn+i.electrics; cout请输入该学生请输入该学生C+程序设计程序设计的成绩的成绩:studn+i.c_program; cout请输入该学生请输入该学生大学物理大学物理的成绩的成绩:studn+i.multimedia; cout请输入该学生请输入该学生大学英语大学英语的成绩的成绩:studn+i.english; cout请输入该学生请输入该学生高等数学高等数学的成绩的成绩:studn

31、+i.math; cout请输入该学生请输入该学生大学体育大学体育的成绩的成绩:studn+i.sport; cout请输入该学生请输入该学生马克思主义基本原理马克思主义基本原理的成绩的成绩: studn+i.polity; studi.summary=studi.electrics+studi.c_program+studi.m ultimedia+studi.english+studi.math+studi.sport+studi. polity; studi.average=studi.summary/7; cout该学生的总分为该学生的总分为:studi.summary平均分为:平均分

32、为: 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; /*打开打开 失败信息失败信息*/ coutttt; system(pause);

33、return(n); fscanf(fp,%d, /*读入总记录量读入总记录量*/ while(inum) /*循环读入数据循环读入数据*/ fscanf(fp,%s%d%s%f%f%f%f%f%f%f%f%f,studn+i. class_0, i+; n+=num; fclose(fp); /*关闭文件关闭文件*/ cout提示:读入数据成功,可选择提示:读入数据成功,可选择【显示所有成显示所有成 绩绩】查看查看endl; coutttt; system(pause); return(n); void Save(Student stud,int n) /*将所有记录写入文件将所有记录写入文

34、件*/ int i=0; FILE *fp; /*定义文件指针定义文件指针*/ char filename20; /*定义文件名定义文件名*/ coutfilename; if(fp=fopen(filename,w)=NULL) /*打开文件打开文件*/ cout提示:无法打开这个文件!提示:无法打开这个文件!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%-

35、8.1f%- 6.2n,studi.class_0,studi.number,studi.name,studi.ele ctrics,studi.c_program,studi.multimedia,studi.english, studi.math,studi.sport,studi.polity,studi.summary,stud i.average); i+; fclose(fp); /*关闭文件关闭文件*/ cout提示:已成功写入数据!提示:已成功写入数据!endl; /*返回成返回成 功信息功信息*/ void main() /*主函数主函数*/ int n=0; for(;)

36、switch(menu() /*选择判断选择判断*/ case 1: coutendl 输入成绩输入成绩 =endl; /*输输 入若干条记录入若干条记录*/ n=Input(stu,n); break; case 2: coutendl 显示所有记录显示所有记录 =endl; /*显示所有记录显示所有记录*/ Display(stu,n); break; case 3: coutendl 按平均分降序排列按平均分降序排列 =endl; Sort(stu,n); /*按学号排序按学号排序*/ cout排序成功!排序成功!endl; coutttt; system(pause); break;

37、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); /*查找并显示一个记录查找并显示一个记录*/ coutt

38、tt; 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 谢谢您的使用!谢谢您的使用! =

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1