可视化学生成绩管理系统QT.docx
《可视化学生成绩管理系统QT.docx》由会员分享,可在线阅读,更多相关《可视化学生成绩管理系统QT.docx(36页珍藏版)》请在冰豆网上搜索。
![可视化学生成绩管理系统QT.docx](https://file1.bdocx.com/fileroot1/2022-10/12/754d0a9b-267a-4625-8b39-b842233fbc17/754d0a9b-267a-4625-8b39-b842233fbc171.gif)
可视化学生成绩管理系统QT
中国地质大学
计算机高级语言课程设计报告
(QT设计)
——学生成绩管理系统
班级:
191142班
学号:
姓名:
日期:
2015年7月2日
一课程设计题目与要求
(包括题目与系统功能要求)
【实习容】
C++语言,面向对象的分析与设计。
然后改成QT语言。
【基本要求】
学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、
查找及修改、成绩的统计分析等等。
请设计一个系统实现对学生成绩的管理。
系统要现以下功能:
(1)增加记录:
要求可以连续增加多条记录。
(2)删除一个学生的记录:
要求可以先查找,再删除。
删除前,要求用户确认。
(3)成绩修改:
若输入错误可进行修改;要求可以先查找,再修改。
(4)查找:
可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处
于指定分数段的学生等等。
(5)统计分析:
对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要
现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。
求出
一门课程标准差和合格率;
(6)排序功能:
要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总
分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;
(7)文件操作:
可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成
绩重新写入文件;可以将排序好的信息写入新的文件。
【较高要求】
查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。
再从这
个记录中进行二次选择。
二需求分析
【问题描述】
在编写过程中,主要的困难有:
1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。
2.排序,需要自己学习算法。
【系统环境】
Qt5.4.1
三概要设计
【类的设计】:
类Student:
#ifndefSTUDENT_H
#defineSTUDENT_H
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classstudent{
private:
stringm_id,m_name;
intm_math,m_eng,m_phy;
public:
student();
student(string,string,int,int,int);//构造函数
student(conststudent&);//复制构造函数
~student(){};//析构函数
stringgetId();//自定义接口
stringgetName();
intgetMath();
intgetEng();
intgetPhy();
inttotal();
studentoperator=(conststudent&);//=号重载
};
#endif//STUDENT_H
#defineMANAGEMENT
#include"student.h"
#include"QString"
#include
#include
#include
classmanagement{
private:
vectorstu;
public:
vectordeletetxt(conststring&m);//删除记录
vectorfindtxt(conststring&m);//模糊搜索
vectorfindtxt1(int,int,conststring&);//分数段搜索
vectoritxt();//文件写入
vectorgetstu(){returnstu;}
vectorttxt(vector);//统计分析
vectorptxt();//排序
voidaddtxt();//增加记录
voidchangetxt();//成绩修改
voidotxt();//文件输出
voidshow();//输出
};
#endif//MANAGEMENT
类mainwindow
#ifndefMAINWINDOW_H
#defineMAINWINDOW_H
#include
#include"management.h"
namespaceUi{
classMainWindow;
}
classMainWindow:
publicQMainWindow
{
Q_OBJECT
public:
explicitMainWindow(QWidget*parent=0);
~MainWindow();
privateslots:
voidon_pushButton_clicked();
voidon_ok_clicked();
voidon_pushButton_2_clicked();
voidon_ok_2_clicked();
voidon_ss_clicked();
voidon_ss_2_clicked();
voidon_pushButton_3_clicked();
voidon_pushButton_4_clicked();
private:
Ui:
:
MainWindow*ui;
};
#endif//MAINWINDOW_H
【主界面设计】:
主机面主要以一个do-while循环使得系统能够多次查询。
循环部分是判断语句的嵌套。
能够以用户意愿自由查询和进出系统。
【文件读到屏幕上】
【修改记录】
【添加纪录】
【删除记录】
【模糊搜索】
【分段搜索】
【统计分析】
【排序】
四详细设计"
【增加记录】:
所用函数:
addtxt()函数、itxt()函数。
增加记录主要是调用voidaddtxt()函数。
进入voidaddtxt()函数后,用户经过手动添加信息。
添加信息过后,系统会将用户所输入的信息与数据库中已有信息进行对比,判断数据库中是否已存在该信息。
不存在则添加,添加时会调用student类的构造函数。
用户所添加的信息则会有一个以类型为student的变量push_back到默认以student为类型的容器中。
然后点击确定转为槽函数,再通过mainwindow类中的指针ui指向textedit,使结果输出到textedit上。
此时在经过while循环,使得系统支持重复添加功能。
otxt()函数将数据输出保存到date.txt文件中。
【删除记录】:
实现该功能先要调用voiddeletetxt()函数。
进入该函数后系统会提示用户输入所需删除信息的学号或姓名。
然后系统会在数据库中搜索是否真的存在此信息。
不存在系统会提示用户。
若存在则所删信息会在对话框中出现。
此时系统会调用voiddeletetxt()函数、stringgetId()函数、stringgetName()函数、intgetMath()函数intgetEng()函数、intgetPhy()函数、inttotal()函数。
然后系统会提示用户确定是否删除该信息。
若否则回到主菜单。
若是此时系统会定义一个以student为类型的容器。
然后默认的以student为类型的容器(其中有数据库中的全部信息。
)经过两个for循环将数据库中除了用户要删除的信息全部push_back到定义的容器中。
然后再经过一个for循环。
使得默认的容器当中的信息与定义的容器当中的信息相同。
则完成删除。
删除成功后,通过mainwindow类中指针指向另一个对话框此时对话框会提示用户删除成功。
【成绩修改】:
先进入voidchangetxt()函数,对话框中会提示用户输入所要修改的信息。
输入信息后系统会定义一个以student为类型的变量。
然后系统会调用student&operator=(conststudent&)函数,使得修改后的信息覆盖掉原有信息。
在用mainwindow类中的指针ui把结果输出到textedit上,在调用文本输入的函数使得用户能够确定信息确实修改成功了。
【查找】:
进入查找后对话框中会提示用户是分数段查找还是个人成绩查询。
若是前者则系统调用voidfindtxt1()函数。
此时对话框会提示用户选择哪一门成绩以及分数的上下限。
然后系统再调用此时系统会调用voiddeletetxt()函数、stringgetId()函数、stringgetName()函数、intgetMath()函数intgetEng()函数、intgetPhy()函数、inttotal()函数。
对话框中会出现在此分数段中的所有信息。
并回到菜单。
若是后者则系统调用voidfindtxt()函数(支持模糊搜索)。
此时对话框中会提示用户输入所要寻找的信息的学号或姓名。
系统会将数据库中满足条件的信息反馈到对话框中,然后mainwindow类中指针ui将返回的容器的成员转化为QString类型然后将结果反馈到textedit上。
【统计分析】:
现根据对话框的提示选择系统分析栏。
对话框会提示用户是单科情况或是全科情况。
若是前者系统会调用voidttxt()函数,把结果反馈到对话框中并回到主菜单中。
若是后者系统调用voidttxt(inti)函数。
然后把结果(平均分、总平局分、及格率、标准差)用mainwindow类中指针ui转到另一个对话框中,在调用该对话框中的指针ui将结果反馈到textedit上。
【排序】:
现根据对话框的提示选择排序。
系统会调用voidptxt()函数。
进入voidptxt()函数
系统会调用stringgetId()函数、stringgetName()函数、intgetMath()函数intgetEng()函数、intgetPhy()函数、inttotal()函数。
根据总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;排序完成后,mainwindow类中指针ui将容器中的信息全部转化为QString类型。
然后调用输出文本将结果反馈到textedit上。
【退出系统】:
在主菜单中选择退出系统,系统会跳出主菜单中的do-while循环,结束程序。
五测试
【原有数据】
20121000290边达宇756065
20121000424晨859596
20121000553高佳维869390
20121000570初国利858785
20121000584利振彬708888
20121000818孟珂908696
20121000921罗云迪869075
20121001121田甜958587
20121001248如男908994
20121001316邵叶飞808486
2012