可视化学生成绩管理系统(QT)
- 格式:doc
- 大小:11.75 MB
- 文档页数:31
中国地质大学计算机高级语言课程设计报告(QT设计)——学生成绩管理系统班级:191142班学号:姓名:日期:2015年7月2日一课程设计题目与要求(包括题目与系统功能要求)【实习内容】C++语言,面向对象的分析与设计。
然后改成QT语言。
【基本要求】学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、查找及修改、成绩的统计分析等等。
请设计一个系统实现对学生成绩的管理。
系统要求实现以下功能:(1)增加记录:要求可以连续增加多条记录。
(2)删除一个学生的记录:要求可以先查找,再删除。
删除前,要求用户确认。
(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。
(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。
(5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。
求出一门课程标准差和合格率;(6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;(7)文件操作:可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件。
【较高要求】查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。
再从这个记录中进行二次选择。
二需求分析【问题描述】在编写过程中,主要的困难有:1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。
2.排序,需要自己学习算法。
【系统环境】Qt5.4.1三概要设计【类的设计】:类Student:#ifndef STUDENT_H#define STUDENT_H#include<iostream>#include<vector>#include<fstream>#include<string>#include<iomanip>#include<cmath>using namespace std;class student{private:string m_id,m_name;int m_math,m_eng,m_phy;public:student();student(string,string,int,int,int);//构造函数student(const student&);//复制构造函数~student(){};//析构函数string getId();//自定义接口string getName();int getMath();int getEng();int getPhy();int total();student operator=(const student&);//=号重载};#endif//STUDENT_H#define MANAGEMENT#include"student.h"#include"QString"#include<QFileDialog>#include<QFile>#include<qtextstream.h>class management{private:vector<student>stu;public:vector<student>deletetxt(const string&m);//删除记录vector<student>findtxt(const string&m);//模糊搜索vector<student>findtxt1(int,int,const string&);//分数段搜索vector<student>itxt();//文件写入vector<student>getstu(){return stu;}vector<double>ttxt(vector<double>);//统计分析vector<student>ptxt();//排序void addtxt();//增加记录void changetxt();//成绩修改void otxt();//文件输出void show();//输出};#endif//MANAGEMENT类mainwindow#ifndef MAINWINDOW_H#define MAINWINDOW_H#include<QMainWindow>#include"management.h"namespace Ui{class MainWindow;}class MainWindow:public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget*parent=0);~MainWindow();private slots:void on_pushButton_clicked();void on_ok_clicked();void on_pushButton_2_clicked();void on_ok_2_clicked();void on_ss_clicked();void on_ss_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();private:Ui::MainWindow*ui;};#endif//MAINWINDOW_H【主界面设计】:主机面主要以一个do-while循环使得系统能够多次查询。
基于QT的学生信息管理系统的实现作者:张会来源:《电脑知识与技术》2018年第36期摘要:该文利用 Qt应用框架,应用Qt信号槽机制实现了一个学生信息管理系统。
系统具有添加,修改,分类查询,删除,计算总分及退出等功能。
学生成绩管理系统是一个集继承、图形界面、事件处理等面向对象编程知识的综合应用的实例程序。
关键词:Qt;C++;槽函数;信息管理系统中图分类号:TP311; ; ; ;文献标识码:A; ; ; 文章编号:1009-3044(2018)36-0046-03大部分大学一年级学生初接触到的是C/C++计算机编程语言,而用C/C++语言编写界面程序时多在黑屏白字的application console下采用文字描述模拟菜单选择,学生体验感及成就感较差。
而初学者只有一定的C++面向对象编程基础,可以使用Qt轻松实现图形界面编程。
本文利用Qt图形库,采用 C++语法,在Qt Creator集成开发环境下,实现了一个基于Qt的学生成绩管理系统。
1 Qt的特点Qt被用于高性能的跨平台软件开发,它是一个标准的技术成熟的C++框架,Qt不仅拥有扩展的C++类库,还提供了大量可用来快速编写应用程序的工具[1],Qt是采用C++实现的框架。
Qt Creator是一款新的轻量级集成开发环境(IDE),IDE支持跨平台运行,支持的系统包括 Mac OS X 、Linux( 32 位及 64 位)以及Windows等系统。
Qt Creator的设计目标是方便开发人员利用Qt这个应用程序框架更加快速、轻易地完成相关开发任务[2]。
2 系统功能学生信息管理系统主要功能包括:学生基本信息和成绩的录入,浏览、查询、删除、修改及计算成绩等功能。
功能分析如下:1)添加/输入学生信息:输入的学生信息包括学生姓名,学号,性别,出生日期,英语成绩,语文成绩,数学成绩。
2)查询学生信息:可以按姓名、学号、性别进行分类查询,及全部查询,从而把所有学生记录重新全部显示出来。
C语言可视化程序设计报告行政班级机械0805魏永涛学号 0806080524指导老师夏建芳课题名称学生成绩管理系统C可视化程序设计报告一.设计题目学生成绩管理系统二、课题的任务:1、所有记录保存在一个数据文件中;2、具备记录添加功能;3、查询功能(如按学号查询成绩等);4、计算统计功能(如统计某门课程的平均程序);5、排序功能(如按成绩排序);6、统计并显示信息功能;三.课程设计目的了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用visual c++实现学生成绩管理系统的录入、查询、删除、统计等基本操作,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。
通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境。
四、成员承担的任务:(组长)魏永涛:完成下面子程序的编写:a:主函数的编译b:定位指针的Locate()函数的编译,与调试。
c:主菜单函数的编译,及其它外部函数的编译,与调试。
d: 任务分配,规定变量符号,及变量的初始化。
e:程序的组装及调试。
王栋:完成下面子程序的编写:a:统计数据函数的编译。
b::查找学生记录函数的编译。
c:增加学生记录的函数的编译。
王义:完成下面子程序的编写:a:删除函数的编译b:修改函数的编译c:排序函数的编译巫培宇:完成下面子程序的编写:a:显示函数的编译。
b:欢迎界面的制作。
c:保存函数的编译五、程序流程图1.系统总体结构图2.main()函数流程图3.Add函数流程图6.Modify函数流程图7.Disp函数流程图六.系统实际运行效果1.欢迎界面2.主菜单3.输入学生资料4.删除学生资料4.查询6.显示8.排序9.排序结果10.帮助11.退出七.系统源代码#include "stdio.h"#include "stdlib.h"#include "string.h"int shoudsave=0; //定义一个全局变量struct student{char num[11];//学号char name[20];//char sex[4]; //性别int cgrade; //c语言成绩int mgrade; //数学成绩int egrade; //英语成绩int totle; //总分int ave; //平均分char neartime[10];//最近更新时间};typedef struct node //声明新的结构体类型Node{struct student data;struct node *next;}Node,*Link;void welcome()//欢迎界面{printf(" ***************************\n");printf(" *欢迎使用*\n");printf(" *中南大学学生成绩管理系统 *\n");printf(" ***************************\n");printf(" 本系统由中南大学机械0805班梦幻小组\n\t\t\t倾情奉献\n"); printf("\n");printf(" 愿我们的努力\n");printf(" 能为您的学习工作带来方便\n");printf(" 您的支持将是我们不断创新的动力\n");printf(" 祝您使用愉快!\n\t\t如有任何疑问联系我们\n\t\t QQ:453275642\n\t\tTel:\n");}void menu() //主菜单{printf("\t*************************************************************\n"); printf("\t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *\n"); printf("\t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *\n"); printf("\t* MMM 1<输入学生资料> 2<删除学生资料> MMM *\n"); printf("\t* MMM 3<查询学生资料> 4<修改学生资料> MMM *\n");printf("\t* MMM 5<显示学生资料> 6<统计学生成绩> MMM *\n"); printf("\t* MMM 7<排序学生成绩> 8<保存学生资料> MMM *\n"); printf("\t* MMM 9<菜单导航> 0<退出系统> MMM *\n"); printf("\t* MMM MMM *\n"); printf("\t* MMM MMM *\n"); printf("\t* MMM ********************************* MMM *\n"); printf("\t* MMM i 欢迎使用中南大学学生成绩管理系统i MMM *\n"); printf("\t* MMM ********************************* MMM *\n"); printf("\t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *\n"); printf("\t* MMM 出品人:梦幻小组 | 辅导老师:夏建芳 MMM *\n"); printf("\t* MMM 组长:魏永涛 | 梦幻组合 MMM *\n"); printf("\t* MMM 组员:王栋王义巫培宇| 成就梦幻品质 MMM *\n"); printf("\t* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM *\n"); printf("\t*************************************************************\n"); }void printstart(){printf("-----------------------------------------------------------------------\n");}void Wrong(){printf("\n对不起!你输入的信息有误!请重新输入!\n");}void Nofind(){printf("________________________________________________________________________\n");printf("\n\t提示:没有找到该学生!\n");printf("________________________________________________________________________\n"); printf("\n");}void printc() // 本函数用于输出中文{printf(" 学号\t 性别英语数学 C语言总分平均分\n");}void printe(Node *p)//本函数用于输出英文{printf("%-12s%s\t%s\t%d\t %d\t %d\t %d\t %d\n",p->data.num,p->,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave) ;//输出成绩}Node* Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位链表中符合要求的接点,并返回该指针{Node *r;if(strcmp(nameornum,"num")==0) //按学号查询{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0)//将输入学号与已有学号对比return r; //返回地址r=r->next;}}else if(strcmp(nameornum,"name")==0) //按查询将输入与已有对比{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r; //返回地址r=r->next;}}return 0;}void Add(Link l) //增加学生{Node *p,*r,*s; //定义Node型指针char num[11];r=l;s=l->next;while(r->next!=NULL)r=r->next; //将指针置于最末尾while(1){printf("请您输入学号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s)if(strcmp(s->data.num,num)==0)//将新输入学号与已有学号对比{printf("!!!!!!提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;//指向下一个地址}p=(Node *)malloc(sizeof(Node));//在存中分配长度与node相同的连续空间用于存储新数据strcpy(p->data.num,num);printf("请你输入:");scanf("%s",p->);getchar();printf("请你输入性别:");scanf("%s",p->data.sex);getchar();printf("请你输入c语言成绩:");scanf("%d",&p->data.cgrade);getchar();printf("请你输入数学成绩:");scanf("%d",&p->data.mgrade);getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.egrade);getchar();p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; //求总分p->data.ave=p->data.totle / 3;//信息输入已经完成p->next=NULL;r->next=p;r=p;shoudsave=1;}}void Qur(Link l) //查询学生int sel;char findmess[20];Node *p;if(!l->next)//当l->next=NULL时成立{printf("\n********>提示:没有资料可以查询!\n");return;}printf("\n********>1按学号查找\n********>2按查找\n"); scanf("%d",&sel);if(sel==1)//学号{printf("请你输入要查找的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}else if(sel==2) //{printf("请你输入要查找的:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();}void Del(Link l) //删除函数{int sel;Node *p,*r;char findmess[20];if(!l->next){printf("\n********>提示:没有资料可以删除!\n");return;}printf("\n********>1按学号删除\n********>2按删除\n"); scanf("%d",&sel);if(sel==1){printf("请你输入要删除的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n********>提示:该学生已经成功删除!\n");printf("\t\t\t\t请按任意键返回。
基于Qt的教务管理系统的实现摘要近年来,由于计算机网络与计算机软件的不断快速迅猛发展,人们的生活习惯也由此造成了很大的变化,并且计算机信息管理系统也越来越多的参与到人们的日常生活与工作中来,对于我们学生来说,这种变化尤其巨大。
信息的快速更新变化使得学校在学生信息的管理上投入的资源越来越多。
所以,为了提高学校教务管理工作的效率,节约教务资源与经费,并且减少教务处理工作中的失误,有必要开发一套高效自动化的计算机信息管理系统。
本论文中的系统使用的开发工具是Qt,采用SqLite数据库,是在使用比较广泛的windows下开发,利用其提供的面向对象编程的可视化工具来编制出界面友好,操作简单的程序。
此教务管理系统由后台数据的处理部分与前台应用的交互部分组成,并且该系统可以根据用户不同的权限来提供不同的操作,主要包括学生的成绩管理、学生的学籍管理、学校的班级管理等。
此教务管理系统的开发目的在于最大限度的节省人才资源的同时也可以提高管理效率,能够及时、准确、迅速的满足不同用户的不同需求。
关键词:教务管理系统;Qt;SqLite;效率The implementation of educational administration systembased on QtAbstractIn recent years, due to the computer network and computer software continuously rapid development quick, people's life habit also caused the great changes, and computer information management system is also more and more involved in the People's Daily life and work, for our students, this change is especially large.Update information changes make the school in the management of student information resources more and more.So, in order to improve the efficiency of school educational administration work, saving the educational resources and funds, and reduce the faults in our educational work, it is necessary to develop a set of efficient automatic computer information management system.System development tools used in this paper is the Qt, using SqLite database, is in the use of more extensive development under the Windows, using the object-oriented programming offered by the visual tools to develop the friendly interface, simple operation procedures.The educational administration management system by the background data processing part and the foreground application of the interaction of the parts, and the system can provide different according to different user permissions to operation, mainly includes the student performance management, student status management, school of class management, etc.The development of the educational administration system is aimed at the maximum save resources at the same time also can improve the efficiency of management, able to timely, accurately and quickly to meet the different needs of different users.KeyWords: Educational administration management system; Qt; Sqlite ; efficienc目录摘要 (i)Abstract (ii)1 系统概述 (1)1.1 项目背景 (1)1.2 系统开发的目的和意义 (1)1.3 目前国内外的研究现状 (1)1.3.1 国外研究现状 (1)1.3.2 国内研究现状 (1)2 关键技术 (3)2.1 开发工具简介 (3)2.1.1 Qt Creator集成开发环境 (3)2.1.2 Sqlite 简介 (4)2.2 开发语言简介 (4)2.2.1 C++ (4)2.2.2 SQL (5)3 系统总体设计的实现 (7)3.1 系统模块结构的设计 (7)3.1.1 软件模块结构的设计 (7)3.1.2 软件模块总体处理流程 (7)3.1.3 功能分配 (9)3.2 系统功能总体设计 (10)3.3 系统的总体界面设计介绍 (11)3.4 数据库的设计 (12)3.5 数据库表的实体图 (13)3.6 系统数据出错处理设计 (15)3.6.1 系统的出错信息以及处理方法 (15)3.6.2 补救措施 (15)3.6.3 安全保密设计 (16)4 详细设计 (17)4.1 系统的主程序 (17)4.2 程序初始化界面的实现 (17)4.3 数据库的操作 (20)4.4 管理员模块的实现 (22)4.5 学生模块的实现 (26)4.6 教师模块的实现 (28)4.7 数据库模块的实现 (29)5 系统运行界面展示 (30)5.1 登录界面展示 (30)5.2 管理员操作初始化界面展示 (32)5.3 教师操作界面展示 (33)5.4 学生界面展示 (34)5.5 错误处理界面展示 (35)6 系统测试 (36)6.1 测试概述 (36)6.2 测试过程 (37)6.3 测试结果 (37)总结 (38)参考文献 (39)致谢 (40)外文原文 (41)外文翻译 (53)1 系统概述1.1 项目背景信息系统的目的是让人可以高效的进行工作,包括对信息的一系列操作,如添加信息、修改信息、删除信息、查询信息等;人们将计算机硬件与软件相结合来开发出信息平台,在这个平台中实现信息系统的功能与目的。
数据可视化高校评教成绩分析系统研究1. 引言1.1 背景介绍在当今高校教育领域,评教已成为一项重要的教学管理活动。
传统的评教方式往往需要耗费大量的人力和时间,而且结果可能存在主观性和误差。
随着信息技术的发展,数据可视化技术逐渐被引入到高校评教中,为教师和管理者提供更直观、准确的评估和分析结果。
数据可视化可以将庞大的评教数据转化为图表、地图等直观形式,帮助用户更好地理解和利用数据。
高校评教成绩分析系统的设计与实现,旨在提高评教工作的效率和准确性。
通过收集、存储和处理评教数据,系统可以为教师和管理者提供全面的评教分析报告和可视化结果。
系统功能包括数据收集、数据分析、成绩展示等模块,能够帮助用户更好地了解教学质量和改进教学方法。
本研究旨在探讨数据可视化技术在高校评教中的应用,设计并实现一套成绩分析系统,为高校教学管理提供更准确、高效的支持。
通过本系统的应用,希望能够提升高校评教效率,促进教学质量的提升。
1.2 研究目的本文旨在探究数据可视化在高校评教中的应用以及设计一个成绩分析系统,通过对学生成绩数据的可视化展示和分析,帮助高校教师和管理者更好地了解学生成绩状况,发现问题和优势,从而提升教学质量和管理效率。
具体研究目的包括:1. 研究数据可视化技术在高校评教中的实际应用情况,深入分析现有评教系统存在的问题和不足。
2. 设计并实现一个数据可视化高校评教成绩分析系统,结合实际需求和技术特点,提高评教数据的可视化展示和分析效果。
3. 深入探讨成绩分析系统的功能设计和实现,包括数据处理、图表展示、分析算法等方面,在系统性能和用户体验方面取得平衡和优化。
4. 评估系统的性能表现,测试系统在不同规模数据集下的运行效果和稳定性,验证系统对用户的实际使用需求是否能够满足。
5. 对系统的用户体验进行评价,收集用户反馈意见和建议,通过不断改进和优化提高系统的使用便捷性和用户满意度。
1.3 意义本研究旨在探讨数据可视化技术在高校评教成绩分析系统中的应用,旨在提高高校教学管理的效率和质量。
在Python中,我们可以使用QtDesigner和PyQt库来创建图形用户界面(GUI)。
这对于创建学生成绩可视化设计非常有用,因为它可以帮助我们以直观的方式展示数据。
以下是如何使用Python和QtDesigner进行学生成绩可视化设计的步骤:1. 安装Python和PyQt5:首先,你需要在你的计算机上安装Python。
然后,你可以使用pip 命令来安装PyQt5。
在命令行中输入以下命令:`pip install PyQt5`。
2. 安装QtDesigner:QtDesigner是一个用于设计和创建GUI的工具。
你可以在Python的官方网站上下载并安装它。
3. 创建一个新的项目:打开QtDesigner,然后选择“新建”来创建一个新的项目。
4. 添加控件:在QtDesigner中,你可以选择各种控件,如按钮、文本框、标签等,并将它们添加到你的项目中。
5. 设置控件的属性:你可以设置控件的各种属性,如大小、颜色、字体等。
6. 编写代码:在QtDesigner中,你可以编写代码来控制你的GUI。
例如,你可以编写代码来处理按钮点击事件,或者从文本框中获取用户输入的数据。
7. 运行你的程序:当你完成你的GUI设计后,你可以运行你的程序来查看结果。
对于学生成绩可视化设计,你可能需要创建一个表格来显示学生的姓名和成绩,以及一个图表来显示成绩的分布。
你可以使用QtDesigner中的表格控件和图表控件来实现这一点。
例如,你可以创建一个表格,其中每一行代表一个学生,每一列代表一个科目。
然后,你可以将每个学生的成绩填入相应的单元格中。
你还可以使用图表控件来创建一个饼图或条形图,以显示每个科目的分数占比。
在编写代码时,你可能需要处理一些事件,如点击按钮来刷新数据,或者拖动滚动条来查看更多的数据。
你还需要编写代码来读取和处理数据文件,如CSV文件或Excel文件。
总的来说,使用Python和QtDesigner进行学生成绩可视化设计是一个相对简单的过程。
学⽣成绩管理可视化系统设计⽅案1 引⾔1.1 ⽬的本系统设计报告是为了开发学⽣信息管理系统⽽编写。
通过本系统,管理⽼师可以录⼊、修改、查找学⽣成绩;学⽣可以根据姓名学号查询学年各科成绩。
1.2 背景:项⽬名称:学⽣成绩管理信息系统2 总体设计2.1 系统权限分配根据需求分析,本系统将⾯向三种⽤户对象:系统管理员、各任课⽼师、在校学⽣。
对于不同的⽤户,系统将分配不同的⽤户权限。
管理员拥有的权限如下:1. 对学⽣信息进⾏添加、删除、修改、查询2. 对教师信息进⾏添加、删除、修改、查询3. 对课程信息进⾏添加、删除、修改、查询4. 查看学⽣与⽼师信息并进⾏修改5. 查看学⽣选课信息、学⽣的各科成绩6. 对学⽣的选课信息进⾏添加、删除等操作教师拥有的权限如下:1. 查看个⼈账户信息并修改登录密码2. 对学⽣成绩添加、修改、查询,查看学⽣个⼈信息与成绩排名学⽣拥有的权限如下:1. 修改个⼈登录密码2. 查看⾃⼰的课表3. 进⾏选课4. 查询个⼈成绩2.2 ⼦系统设计本系统可以细分成学⽣信息管理、教师信息管理、管理员信息管理这三个⼦系统。
学⽣信息系统1. 查询:学⽣可以通过系统对课表和各科成绩进⾏查询2. 密码管理:学⽣通过密码验证后可以修改登录密码3. 选课:学⽣可以通过系统进⾏选课并查询选课信息教师信息系统1. 基本信息查询:⽼师可以通过该系统进⾏教师基本信息的查询2. 密码管理:通过密码验证后可以修改登录密码3. 学⽣信息查询:教师可以通过系统查询学⽣个⼈信息和学⽣成绩,并且可以通过系统按学⽣专业或课程进⾏排名查询。
4. 学⽣成绩管理:教师可以通过系统对学⽣的成绩进⾏添加与更改管理员信息系统1. 学⽣信息管理:管理员可以通过系统查询、添加、修改、删除学⽣个⼈信息,查询学⽣个⼈成绩与选课情况2. 教师信息管理:管理员可以通过系统查询、添加、修改、删除教师信息3. 课程管理:管理员可以通过系统查询、添加、修改、删除课程信息,为学⽣进⾏选课2.3 软件结构本系统是基于传统MVC(Model View Controller 模型-视图-控制器)结构设计创建的Web应⽤程序。
中国地质大学计算机高级语言课程设计报告(QT设计)——学生成绩管理系统班级:191142班学号:姓名:日期:2015年7月2日一课程设计题目与要求(包括题目与系统功能要求)【实习内容】C++语言,面向对象的分析与设计。
然后改成QT语言。
【基本要求】学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、查找及修改、成绩的统计分析等等。
请设计一个系统实现对学生成绩的管理。
系统要求实现以下功能:(1)增加记录:要求可以连续增加多条记录。
(2)删除一个学生的记录:要求可以先查找,再删除。
删除前,要求用户确认。
(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。
(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。
(5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。
求出一门课程标准差和合格率;(6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;(7)文件操作:可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件。
【较高要求】查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。
再从这个记录中进行二次选择。
二需求分析【问题描述】在编写过程中,主要的困难有:1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。
2.排序,需要自己学习算法。
【系统环境】Qt5.4.1三概要设计【类的设计】:类Student:#ifndef STUDENT_H#define STUDENT_H#include<iostream>#include<vector>#include<fstream>#include<string>#include<iomanip>#include<cmath>using namespace std;class student{private:string m_id,m_name;int m_math,m_eng,m_phy;public:student();student(string,string,int,int,int);//构造函数student(const student&);//复制构造函数~student(){};//析构函数string getId();//自定义接口string getName();int getMath();int getEng();int getPhy();int total();student operator=(const student&);//=号重载};#endif//STUDENT_H#define MANAGEMENT#include"student.h"#include"QString"#include<Q>#include<QFile>#include<qtextstream.h>class management{private:vector<student>stu;public:vector<student>deletetxt(const string&m);//删除记录vector<student>findtxt(const string&m);//模糊搜索vector<student>findtxt1(int,int,const string&);//分数段搜索vector<student>itxt();//文件写入vector<student>getstu(){return stu;}vector<double>ttxt(vector<double>);//统计分析vector<student>ptxt();//排序void addtxt();//增加记录void changetxt();//成绩修改void otxt();//文件输出void show();//输出};#endif//MANAGEMENT类mainwindow#ifndef MAINWINDOW_H#define MAINWINDOW_H#include<QMainWindow>#include"management.h"namespace Ui{class MainWindow;}class MainWindow:public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget*parent=0);~MainWindow();private slots:void on_pushButton_clicked();void on_ok_clicked();void on_pushButton_2_clicked();void on_ok_2_clicked();void on_ss_clicked();void on_ss_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();private:Ui::MainWindow*ui;};#endif//MAINWINDOW_H【主界面设计】:主机面主要以一个do-while循环使得系统能够多次查询。
循环中大部分是判断语句的嵌套。
能够以用户意愿自由查询和进出系统。
【文件读到屏幕上】【修改记录】【添加纪录】【删除记录】【统计分析】【排序】四详细设计"【增加记录】:所用函数:addtxt()函数、itxt()函数。
增加记录主要是调用void addtxt()函数。
进入void addtxt()函数后,用户经过手动添加信息。
添加信息过后,系统会将用户所输入的信息与数据库中已有信息进行对比,判断数据库中是否已存在该信息。
不存在则添加,添加时会调用student类的构造函数。
用户所添加的信息则会有一个以类型为student的变量push_back到默认以student为类型的容器中。
然后点击确定转为槽函数,再通过mainwindow类中的指针ui指向text edit,使结果输出到text edit 上。
此时在经过while循环,使得系统支持重复添加功能。
otxt()函数将数据输出保存到date.txt 文件中。
【删除记录】:实现该功能先要调用void deletetxt()函数。
进入该函数后系统会提示用户输入所需删除信息的学号或姓名。
然后系统会在数据库中搜索是否真的存在此信息。
不存在系统会提示用户。
若存在则所删信息会在对话框中出现。
此时系统会调用void deletetxt()函数、string getId()函数、string getName()函数、int getMath()函数int getEng()函数、int getPhy()函数、int total()函数。
然后系统会提示用户确定是否删除该信息。
若否则回到主菜单。
若是此时系统会定义一个以student为类型的容器。
然后默认的以student为类型的容器(其中有数据库中的全部信息。
)经过两个for循环将数据库中除了用户要删除的信息全部push_back到定义的容器中。
然后再经过一个for循环。
使得默认的容器当中的信息与定义的容器当中的信息相同。
则完成删除。
删除成功后,通过mainwindow类中指针指向另一个对话框此时对话框会提示用户删除成功。
【成绩修改】:先进入void changetxt()函数,对话框中会提示用户输入所要修改的信息。
输入信息后系统会定义一个以student为类型的变量。
然后系统会调用student &operator=(const student &)函数,使得修改后的信息覆盖掉原有信息。
在用mainwindow类中的指针ui把结果输出到textedit 上,在调用文本输入的函数使得用户能够确定信息确实修改成功了。
【查找】:进入查找后对话框中会提示用户是分数段查找还是个人成绩查询。
若是前者则系统调用void findtxt1()函数。
此时对话框会提示用户选择哪一门成绩以及分数的上下限。
然后系统再调用此时系统会调用void deletetxt()函数、string getId()函数、string getName()函数、int getMath()函数int getEng()函数、int getPhy()函数、int total()函数。
对话框中会出现在此分数段中的所有信息。
并回到菜单。
若是后者则系统调用void findtxt()函数(支持模糊搜索)。
此时对话框中会提示用户输入所要寻找的信息的学号或姓名。
系统会将数据库中满足条件的信息反馈到对话框中,然后mainwindow类中指针ui将返回的容器的成员转化为QString类型然后将结果反馈到text edit上。
【统计分析】:现根据对话框的提示选择系统分析栏。
对话框会提示用户是单科情况或是全科情况。
若是前者系统会调用void ttxt()函数,把结果反馈到对话框中并回到主菜单中。
若是后者系统调用void ttxt(int i)函数。
然后把结果(平均分、总平局分、及格率、标准差)用mainwindow类中指针ui转到另一个对话框中,在调用该对话框中的指针ui将结果反馈到text edit上。
【排序】:现根据对话框的提示选择排序。
系统会调用void ptxt()函数。
进入void ptxt()函数系统会调用string getId()函数、string getName()函数、int getMath()函数int getEng()函数、int getPhy()函数、int total()函数。
根据总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;排序完成后,mainwindow类中指针ui将容器中的信息全部转化为QString类型。
然后调用输出文本将结果反馈到text edit上。
【退出系统】:在主菜单中选择退出系统,系统会跳出主菜单中的do-while循环,结束程序。