课程设计-学生成绩管理系统
- 格式:docx
- 大小:222.87 KB
- 文档页数:16
1
数据结构课程设计报告
题目: 学生成绩管理系统
学生姓名:
学 号:
班 级:
指导教师:
2 课程设计评分表
学生姓名: 班级: 学号:
课程设计题目:学生成绩管理
项目内容 满分 实 评
选
题 能结合所学课程知识、有一定的能力训练。符合选题要求
(5人一题) 10
工作量适中,难易度合理 10
能
力
水
平 能熟练应用所学知识,有一定查阅文献及运用文献资料能力 10
理论依据充分,数据准确,公式推导正确 10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等 10
能体现创造性思维,或有独特见解 10
成
果
质
量 总体设计正确、合理,各项技术指标符合要求。 10
说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰 10
设计说明书栏目齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范准确,符合国家标准 10
有一定篇幅,字符数不少于5000 10
总 分 100
指导教师评语:
指导教师签名:
年 月 日
3 任务:本题对学生的某门课程成绩管理做一个简单的模拟,设计一个学生成绩管理系统。假设学生信息包括:学号、姓名、性别,课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=平时成绩*0.4+实验成绩*0.3+期未成绩*0.3,用菜单选择方式完成下列功能:
(1) 登记学生成绩;(2)插入学生成绩;(3)修改学生成绩;(4)删除学生成绩;(5)查询学生成绩;(5)对学生成绩进行排序;(6)输出学生成绩。在完成上术基本要求的操作后,要应用功能(6)进行测试。
一、设计思路
二、设计说明与调试分析
三、源程序代码
四、测试结果
五、设计心得
六、参考文献
一、设计思路
本系统是一个学生成绩管理系统,输入数据类型主要是string等数据类型,输入内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩等数据。用户在输入学生数据时要
保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。输出形式与输入形式
类似,根据需要可以选择显示输入的各项内容,显示内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩,总评成绩。
用户运行程序后进入系统主界面在主界面用户可以输入所有学生的数据并保存到文件中,也可以读取文件中已有的学生数据。本系统同时只能对一个数据文件进行相关操作。当用户读取学生数据后可对其进行显示、文件尾增加、删除、查询、排序、修改等相关操作。用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据丢失。
4
二、设计说明与调试分析
主要编写部分学生成绩管理系统
学生成绩管理系统内,共有两个类,分别为学生类和管理类。
学生对象用vector容器来存放。
管理类共包含了7个不同的函数,而每一个函数是一个模块,并对它们具体编写,使之具有
不同的功能,能实行相应的操作。
2.1 本程序中定义的类及其函数:
1.Student 类
class Student //定义一个Student类//
{
public:
Student(string nu = "0", string na = "0", int ping = 0, int shi = 0, int qi = 0);
void set_student(const string &Nu, const string &Na, int Ping, int Shi,
int Qi);
void set_pingshi(int ping) { pingshi = ping; }//类成员函数set_pingshi,设置平时成绩//
void set_shiyan(int shi) {shiyan = shi; }//类成员函数set_shiyan,设置实验成绩//
void set_qimo(int qi) { qimo = qi; } //类成员函数set_qimo,设置期末成绩//
bool search(const string &num) { return number == num; } 5
void display();//声明display显示函数//
bool operator<(const
Student&);//运算符重载//
Student& swap(Student&);
public:
string number; //定义学生的学号//
string name; //定义学生的姓名//
int pingshi/*平时成绩*/,shiyan/*实验成绩*/, qimo/*期末成绩*/;
};
2. Manage 主要功能类
class Manage//主要功能类// {
private:
vector stu; public:
Manage() {}
void Add(Student&s);//声明添加学生信息的函数//
void Add2(Student&s);//声明登记学生信息的函数//
void Chaxun(); //声明查询学生信息的函数//
void Paixu();//声明将学生的成绩的平均数进行排序的函数//
void Revise(); //声明修改学生信息的函数//
void Delete(); //声明删除学生信息的函数//
void Save(); //声明存储学生信息的函数//
void Load(); //声明读取学生信息的函数//
void Play(); //声明显示学生信息的函数//
};
2.2 管理类中各模块功能分析
1、登记学生信息,登记大量学生信息包括增添学生的姓名、学号、平时成绩、实验成绩、期末成绩等用void Add2(Student&s)函数去实现。
2.添加学生信息,增添学生信息包括增添学生的姓名、学号、平时成绩、实验成绩、期末成绩等用void Add(Student&s)函数去实现
3、删除学生信息具体定义void Delete();函数使之实现其功能。
4、查找学生信息定义void search()函数去具体实现其操作可以输入学号找到相应学生
的信息。
5、修改已有学生的成绩定义void Revise()函数来实现其操作。
6、保存学生信息定义void Save()函数
7、读取学生信息 定义void Load()函数具体解法可从源程序中得出。
8、处理学生信息模块菜单具体功能将在main()函数实现
2.3 调试分析
调试是整个程序编写过程中十分重要也是很困难的一部分在这个过程中用了不少的时 6 间进行程序的调试在调试过程中遇到的相关问题如下
一、语法错误
1、语句的最后忘记了加上“;”使程序发生错误。
2、把“<<”与“>>”写反,以及字符与字符串的操作问题,前后的单词拼写不一致,这些是比较简单的错误,很容易分辨出来,并改正之。
3、函数的返回值问题也是比较容易找出并解决的问题。
二、逻辑错误
1、文件的写入与读出,刚开始对文件的操作不太明白,不能很好的操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示学生信息”将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码。
2、关于删除学生信息,刚开始用数组实现数据的输入和输出,但是在实现删除功能的时候,用数组很难实现这个功能,通过查阅各类书籍和网络搜索,发现可以使用vector的头文件以及头文件下的erase(删除)函数来实现删除功能,使用这个函数和循环,搜索函数可以实现通过学号对学生信息的定点删除。
3、略微修饰了主界面,使其更加美观。
4、在实现利用学生成绩排序的功能时,最后决定使用冒泡排序法来实现这个功能。
三、源程序代码
#include
#include //Vector 类似容器,包含了一系列连续存储的元素,其行为和数组类似//
#include //输入输出文件流类//
#include //声明“流操作符”的//
#include //重新包装头文件//
#include //字符串头文件//
#include //在微软系统操作所需的头文件//
using namespace std;
class Student //定义一个Student类//
{
public:
Student(string nu = "0", string na = "0", int ping = 0, int shi = 0, int qi = 0);
void set_student(const string &Nu, const string &Na, int Ping, int Shi, int Qi);
void set_pingshi(int ping) { pingshi =
ping; }//类成员函数set_pingshi,设置平时成绩//
void set_shiyan(int shi) {shiyan = shi; }//类成员函数set_shiyan,设置实验成绩//
void set_qimo(int qi) { qimo = qi; } //类成员函数set_qimo,设置期末成绩//
bool search(const string &num) {
return number == num; }
void display();//声明display显示函数//
bool operator<(const Student&);//运算符重载//
Student& swap(Student&);