面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书

《面向对象技术(C++)》课程设计任务书

一、课程设计题目

学生成绩管理系统

二、课程设计目的

课程设计目的是增强学生对面向对象C++语言的基本知识的理解,牢固掌握C++的基本语法和面向对象程序设计方法,掌握C++语言调试的基本技能,灵活准确的运用C++类的思想来完成程序的设计,并能综合利用面向对象C++语言进行程序设计,将课本上的理论知识和实际有机的结合起来,从而分析解决实际问题。

三、课程设计任务与要求

1.任务与要求

要求学生利用面向对象语言C++编程实现学生成绩管理,菜单实现下面的功能:
输入功能:输入学生信息,并保存到文件中;
计算每个学生的总分与平均;
能根据学号修改学生信息;
能根据学号删除学生信息;
查询功能:

	1)能够根据学号查询学生信息;
	2)能够根据姓名、班级查询学生信息;
	3)统计学生成绩,按照班级和科目计算平均分。要求程序中要定义类
	(例如:学生Student类,其中至少包括姓名学号和四门功课的成绩),类中要有多个属性和方法。报告要求有封面、目录、摘要;语言简练,条理清楚,图表规范;要求给出相关数据结构及说明;要求给出程序的设计组成框图、流程图等;在基本要求达到后,可进行创新设计,完善与增加学生成绩管理系统的功能,例如可以对分数排序等。 最后编写课程设计报告。

2.排版要求

(1)所有一级标题为宋体三号加粗(即上面写的2~12部分,单独一行,居中)
(2)所有二级标题为宋体四号加粗(左对齐)
(3)所有三级标题为宋体小四加粗(左对齐)
(4)除标题外所有正文为宋体小四,行间距为固定值22磅,每个段落首行缩进2字符
(5)目录只显示3级标题

3.其他要求

(1)以班级为单位刻录光盘一张,光盘以班级命名——“10级计算机科学与技术1班”
(2)光盘内两个文件夹——“按分组”、“按个人”“按个人”文件夹内,每人一个文件夹,以学号姓名命名——如“10730101杜长斌”,内容包括任务书、设计文档、源程序(单独建一个文件夹)“按分组”文件夹内,共8个子文件夹——“第01组-题目”、“第02组-题目”等,每个小组的文件夹内包括1个源程序文件夹、任务书(把3个人的姓名、学号都写上)、以每个小组成员的学号姓名命名——如“10700201张霞”的设计文档。

三、课程设计进度安排

根据教学计划安排,于2020年12月21日~ 2020年12月25日安排为期一周的课程设计。

序号 工作内容 时间
1 发题目、阅读任务书、搜索资料 星期一
2 分析、设计及代码实现 星期二到星期三上午
3 调试程序 星期三下午
4 整理程序设计说明文档 星期四

5 答辩 星期五下午
四、程序设计和调试:
要求实时记录程序设计和调试过程中出现的问题和解决方法。
五、答辩:
答辩时,学生首先简要地(5分钟左右)报告自己系统设计的思路,运行最终程序的结果:其次打开程序说明文档,简要介绍解决问题的方法,运用的基本知识和基本技能,是否进行了创新设计存在哪些问题等。报告完毕后,由指导教师提问,学生回答。

一下为本人实例

摘要

目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。本次用C++语言编写的学生成绩管理系统主要功能有:输入 “1” 为添加学生成绩信息 , 输入 “2” 为输出学生成绩 , 输入 “3” 为查找学生成绩 ,输入 “4” 为修改学生成绩 ,输入 “5” 为删除学生成绩 ,输入 “6” 为学生成绩排序 ,输入 “7” 为保存数据到文件 ,输入 “8” 为读取文件中学生成绩 ,输入 “9” 为退出学生成绩管理系统 。通过学生成绩管理系统给学校管理者减轻工作的负担,将工作的失误几率降到最低,为广大老师同学带来便利,使信息共享性大大增强。同时这个系统还可以减少人力与管理费用,提供信息准确度更高,更简便的学生信息管理系统。
关键词:c++;学生成绩;类

目录(实例)

	1绪论..............................................1
		1.1基本内容	...................................1
		1.2用途及特点	...............................1
		1.3小组分工	...................................2
	2需求分析...........................................3
		2.1问题的提出...................................3
		2.2 问题的具体分析..............................3
	3概要设计...........................................4
		3.1概要设计思路.................................4
		3.2总体模块结构图...............................5
	4详细设计...........................................6
		4.1具体模块算法说明..............................6
			4.1.1 Class Student()函数.................6
			4.1.2 Student()构造函数....................7
			4.1.3 Add()函数............................7
			4.1.4 Output()函数.........................9
			4.1.5 Find()函数...........................9
			4.1.6 modify()函数..........................11
			4.1.7 delete()函数..........................12
			4.1.8 sort()函数............................13
			4.1.9 save ()函数和load()函数	............14
	4.2函数的设计	....................................14
		4.3设计过程	....................................14
			4.3.1使用类和对象设计程序.....................14
			4.3.2使用菜单................................15
			4.3.3通过组合和派生构成新的类	................15
	5调试分析............................................16
		5.1主菜单的显示..................................16
		5.2添加学生信息..................................17
		5.3显示学生信息..................................18
	总结................................................19
	致谢................................................20
	附录................................................21

1绪论

随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,人们的生活与工作方式已发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。学生成绩管理系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,为老师节省很多时间跟精力,提高老师的工作效率。

1.1基本内容

通过学生成绩管理系统给学校管理者减轻工作的负担,将工作的失误几率降到最低,为广大老师同学带来便利,使信息共享性大大增强。同时这个系统还可以减少人力与管理费用,提供信息准确度更高,更简便的学生信息管理系统。对人力资源进行大量的浪费,而且安全性不是很高。处理时间赶不上需要,响应时间较长,数据存储能力不足,处理功能不够,该系统在最初的开发研究中就出现了很多不足,引发的以上的局限性已并非可以用简单维护来解决,这样只会增加经济负担和人员浪费,所以需建立一个比较完善的学生成绩管理系统。
1.2用途及特点
学生成绩管理系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,为老师节省很多时间跟精力,提高老师的工作效率,这个系统可以减少人力与管理费用,提供信息准确度更高,更简便的学生信息管理系统。

##1.3小组分工
XXX:程序的编写、程序的调试、说明书的书写、说明书的排版
XXX:程序的调试、说明书的排版、说明书的书写
XXX:程序的调试、说明书的书写、说明书的排版

2需求分析

输入功能:输入学生信息,并保存到文件中;计算每个学生的总分与平均分;能根据学号修改学生信息;能根据学号删除学生信息;查询功能:能够根据学号查询学生信息;能够根据姓名、班级查询学生信息;统计学生成绩,按照班级和科目计算平均分。

2.1问题的提出

设计过程中我们首先分析了该程序的所有功能,功能在屏幕上的表现方法,各部分功能的使用方法,结果的输入与输出,总体功能的表现结果,我们商量了应该如何实现这些功能。

2.2 问题的具体分析

首先构造框架:基于系统流程图和系统功能结构图如图2.2,设计构建系统的整个框架。我们进行了框架的构造;同时也定义了Student类以及其成员函数和参数。

面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第1张图片

3概要设计

学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。

3.1概要设计思路

首先定义一个学生类Class Student;并定义其各个私有变量和公有函数,利用Student();构造函数,用于初始化学生类中的各个变量并记录,使用Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容,调用Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩,其次利用shiFind();函数:用于查找学生各项信息。使用modify();函数:用于修改学生各项信息。调用delete();函数:用于删除学生信息。最后利用sort();函数:对学生各项信息进行排序操作。使用save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来。

3.2总体模块结构图

面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第2张图片

4详细设计

当打开程序,在主菜单页面时,输入 “1” 为添加学生成绩信息 , 输入 “2” 为输出学生成绩 , 输入 “3” 为查找学生成绩 ,输入 “4” 为修改学生成绩 ,输入 “5” 为删除学生成绩 ,输入 “6” 为学生成绩排序 ,输入 “7” 为保存数据到文件 ,输入 “8” 为读取文件中学生成绩 ,输入 “9” 为退出学生成绩管理系统 。

4.1具体模块算法说明

4.1.1 Class Student()函数

首先定义一个学生类Class Student;并定义其各个私有变量和公有函数

class student //定义学生类 
{
	private://定义学生类的私有成员
 	char name[20]; //名字
	char sex[5]; //性别
	int number; //学号
	int score[3]; //分数
	int total; //总分
	int average; //平均分
 	public: //公有成员
	student(); //学生构造函数,用于学生数据的初始化及保存学生数据
	void add(); //添加学生信息函数
	void output(); //输出学生信息函数
	void find(); //查找学生数据函数
	void modify(); //修改学生信息函数
	void deleted(); //删除学生信息函数
	void sort(); //排序函数
	void save(); //保存学生信息并写入文件函数
	void load(); //打开写有学生信息的文件的函数
}

4.1.2 Student()构造函数

用于初始化学生类中的各个变量并记录

4.1.3 Add()函数

用于添加学生信息的函数包括学号姓名成绩等的内容
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第3张图片

void student::add() //添加函数 
{ 
	char flag='Y'; 
	while(toupper(flag)=='Y') 
	{ 
		cin>>stu[n]; 
		n++; 
		cout<<" 要继续添加吗(y/n)"; 
		cin>>flag; 
		if(toupper(flag)!='Y') 
		{ 
			if(toupper(flag)=='N') 
			{ 
				break; 
			} 
			else 
			{ 
				cout<<"错误,请重输:"; 
				cin>>flag; 
			} 
		} 
	} 
}

4.1.4 Output()函数

函数:用于输出学生信息,包括学号姓名各科及总分平均成绩。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第4张图片

4.1.5 Find()函数

用于查找学生各项信息。

void student::find() //查找函数 
{ 
	int f3=0; 
	char n1[20]; 
	student temp; 
	cout<<" 输入你要查找的人的姓名: "; 
	cin>>n1; 
	for(int j=0;j<n;j++) 
	{ 
		if(strcmp(stu[j].name,n1)==0) 
		{ 
			temp=stu[j]; 
			f3=1; 
		} 
	} 
	if(f3==0) 
		cout<<"对不起,没有你要查找的学生成绩"<<endl; 

	else 
	{ 
		cout<<" ---------------------------------------------------------------------------\n"; 
		cout<<" number name sex math C++ English total average\n"; 
		cout<<" --------------------------------------------------------------------------- \n"; 
		cout<<" "<<temp.number<<" "<<temp.name<<" "<<temp.sex<<" "<<temp.score[0] 
			<<" "<<temp.score[1]<<" "<<temp.score[2]<<" "<<temp.total<<" "<<temp.average<<endl; 
	} 
	getch(); 
} 

4.1.6 modify()函数

用于修改学生各项信息。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第5张图片

4.1.7 delete()函数

用于删除学生信息。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第6张图片

4.1.8 sort()函数

对学生各项信息进行排序操作。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第7张图片

4.1.9 save ()函数和load()函数

将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第8张图片

4.2函数的设计

函数类主要包括定义的class student以及类中的成员函数为主,其次加入了*this、=、<<、>>、符号的重载并在各个函数处理数据过程中对这些的调用处理和重载运算符等。

4.3设计过程

4.3.1使用类和对象设计程序

设计类就是根据数据封装的要求,抽象出合适的类。换言之,就是如何选择数据成员和成员函数。这部分的任务就是根据测试程序及其输出结果,设计一个满足要求的类。这各类涉及到类的构造函数和析构函数,并要求使用多种方法实现本课程设计。

4.3.2使用菜单

菜单是应用程序的界面。这部分的任务是设计一个含有多个菜单项,通过菜单选择不同的功能。例如: 输入功能:输入学生成绩信息,并保存到文件中;添加学生信息,添加新学生时输入新学生的基本信息;根据学号修改学号信息;根据学号删除学生信息。
文件操作是非常有用而重要的技术,编制实用程序都离不开文件存取。要求熟悉多文件菜单编程和面向对象技术的思想。

4.3.3通过组合和派生构成新的类

这部分的设计任务是使用组合和派生构成新的类。可以通过包含及派生两种方法实现。目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和复制构造函数,进一步理解程序如何调用它们及析构函数的执行顺序。
公有继承的赋值兼容性规则是一个重要规则。通过这部分的设计,可以进一步理解这个概念,为理解虚函数的多态性打下基础。

5调试分析

5.1主菜单的显示

打开.exe文件,显示菜单图5.1:

面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第9张图片
菜单图截5.1

5.2添加学生信息

输入1,添加学生成绩信息如图5.2。
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第10张图片
添加学生信息截图5.2

5.3显示学生信息

输入6,显示学生信息排序,如图5.3:
面向对象技术(C++)学生成绩管理系统课程设计任务书及说明书_第11张图片
学生信息排序截图5.3

总结

通过这次C++的课程设计,我明白了很多也知道了很多,也收获了很多。在课程设计的过程中出现过困难,但我都一一去克服,去解决。最终,终于完成了一份满意的程序。 转眼几天的课程设计已经结束了。回想学习C++的过程中,既有快乐又有烦恼,回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论。在设计中难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说运用多文件来编程和设计。这次课设终于顺利完成了,在设计中遇到了很多编程问题,做完这个课程设计,我们的自信心提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对于我们C++初学者来说,已经很不容易了。这次体验为以后的学习编程语言的我们增强了信心。人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的道路上,总遇到重重困难,但正是因为困难我们才变得更坚强。

致谢

在本次课设的撰写过程中,我得到了许多人的帮助,首先我要感谢老师在课程设计上给予我的指导、支持和帮助。虽然在检查运行程序的过程中老师提出了问题,但是我能理解老师的用意,老师的目的并不是难为我们,或许可以说老师要的并不是让我们完成这次课程设计的设计题目,而是让我们能够掌握好这门语言。
这个设计是将自己对C++程序设计所学的知识的一个检验过程,在这个过程中可以体验到自己去尝试的快乐,也有功能实现不了的困惑,老师,同学的宝贵意见都给了我很多帮助,在此十分感谢他们。通过课程设计自己动手可以增强实践能力,而且对系统开发有了一个比较清楚的了解,知道了应该怎么样去分析问题、解决问题,收获很多。在老师悉心的关怀和大力支持下我的课程设计才能得以顺利完成,在这里我衷心的感谢老师对我的关怀和支持。老师认真负责的工作态度、严谨的治学风格,使我深有感触;是在老师的帮助下,我才能顺利的完成这个系统。
另外,在此期间,我不仅学到了许多新知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计过程中的难题,同时也非常感谢学院为我提供了良好的课程设计的环境,最后在一次感谢所有在此次C++课程设计中曾经帮助过我的老师和同学们!

你可能感兴趣的:(课设,c++,后端)