该项目使用

测试账号

教师端

用户名 密码
admin 555
老师A 123

SQLite数据库

学生端

用户名 密码
学生1 111
学生2 222
学生3 333
学生4 444
学生5 555
学生6 666
学生7 777
学生8 888
学生9 999

程序功能

登录端

  • 用户密码输入为空检测
  • enter快捷键登录
  • 右下角关于文档 获取帮助

学生端

  • 所有课程成绩查询
  • 成绩降序/升序排列
  • 窗口自适应大小

教师端

主面板

  • 窗口自适应大小
  • 支持新增多班级的同名课程
  • 双击列表默认打开课程管理面板,新增课程名为空检测,课程选择检测
  • 删除课程

管理面板

  • 班级成绩排名升序/降序排列
  • 窗口自适应大小
  • 班级成绩分析:及格/优秀 人数、比率;最高分、最低分 的分值、学生名单;平均分
  • 成绩分布图
  • 修改学生成绩,成绩区间0-100,可使用方向键快捷更改
  • 删除学生

新增学生面板

  • 窗口大小自适应
  • 批量增加学生
  • enter快捷键增加
  • 学生姓名、成绩输入为空检测

项目框架

程序界面关系

工程管理文件 <配置项>

StuInfo_Manage_System.pro

项目所用模块:

QT += core gui sql charts

项目所用头文件:

HEADERS += \addstudent_window.h \global.h \mainwindow.h \manage_window.h \student_window.h \teacher_window.h

项目所用源文件:

SOURCES += \addstudent_window.cpp \global.cpp \main.cpp \mainwindow.cpp \manage_window.cpp \student_window.cpp \teacher_window.cpp

项目所用ui文件:

FORMS += \addstudent_window.ui \mainwindow.ui \manage_window.ui \student_window.ui \teacher_window.ui

项目所用资源文件

RESOURCES += \setIcon.qrc

具体结构

global

数据成员

static QSqlDatabase db;          //实例化一个数据库连接

函数成员

void Global::ins_db();           //用于初始化数据库的连接
static QSqlDatabase getdb();    //其他类获取数据库连接db的接口

mainwindow

数据成员

Teacher_Window *w1;              //储存教师窗口实例化对象
Student_Window *w2;             //储存学生窗口实例化对象
QString Username_this;          //记录输入用户名
QString Password_this;          //记录输入密码

槽:

void Login_Button_clicked(); //响应登录按钮
void Signup_Button_clicked();   //响应注册按钮
void Reset_Button_clicked();    //响应重置按钮
void Input_Judge();            //判断输入是否为空

teacher_window

数据成员:

QWidget* top;                    //记录调用自己的parent对象
QString classid_selected = "";    //记录选中的课程ID
QString class_selected = "";  //记录选中的课程名

函数成员:

void reload_ClassList(); //刷新课程名单
void setupClassList();      //初始化课程名单

槽:

void getItem(int row, int column);       //获取所选表格位置
void Select_Judge();        //判断是否选择课程,并选择调用管理按钮、删除按钮以及新增按钮
void manage_button_clicked();           //响应管理按钮
void delete_button_clicked();           //响应删除按钮
void add_button_clicked();              //响应新增按钮
void exit_button_clicked();             //返回至上一界面

manage_window

数据成员:

QWidget* top;                //记录调用自己的parent对象
int distribution[10];       //记录班级成绩分布值
QString student_selected;   //记录选中的学生
QString classid_this;       //记录选中的课程
QString classname_this;     //记录选中的课程id
int grade;                  //记录从数据库返回的成绩
int highest_score;          //记录班级最高成绩
int lowest_score;           //记录班级最低成绩
float average_score;        //记录班级平均成绩
int total;                  //记录班级总人数
int pass_num;               //记录班级及格人数
int above_num;              //记录班级优秀人数
QString highest_stu = "-";    //记录最高分学生名单
QString lowest_stu = "-";    //记录最低分学生名单
bool order_mode = true;        //记录成绩排序模式
AddStudent_window* w1;      //储存新增学生面板实例化对象
QChartView *chartView;      //储存新增图表视图实例化对象
QChart *chart;              //储存新增图标实例化对象
QValueAxis *axisY;          //储存Y轴实例化对象

函数成员:

void setupList();            //初始化StudentList
void reload_analysis();     //重新加载分析图表
void CreateChart();         //创建成绩分布图

信号:

此处定义一个信号供setupList()使用

不直接在setupList()中调用该函数,是因为reload_StudentList()中会通过sender()来获取发射信号来调用自己的对象名,以实现成绩升序、降序排列**(注意,reload_StudentList()是槽函数)**,如果直接在setupList()中调用reload_StudentList(),sender()会报错。

void init();     //用于调用reload_StudentList();

槽:

void exit_button_clicked();              //返回至上一界面
void reset_button_clicked();            //响应修改成绩按钮
void reload_StudentList();              //重新加载StudentList
void reloadChart();                     //重新加载成绩分布图
void getItem(int row, int column);       //获取所选表格位置
void delete_button_clicked();           //响应删除按钮
void add_button_clicked();              //响应新增学生按钮
void Select_Judge();                    //判断是否选择学生

addstudent_window

数据成员:

QWidget* top;                //记录调用自己的parent对象
int addlist_rows = 0;      //记录新增学生个数

信号:

void reloadStudentList_signal(); //重新加载manage_window中StudentList的信号
void reloadChart_signal();          //重新加载manage_window中成绩分布图的信号

槽:

void add_student();          //响应增加按钮
void backTotop();           //返回至上一界面

student_window

数据成员:

QWidget* top;                //记录调用自己的parent对象

函数成员:

void setup_ClassList();      //初始化学生成绩表

信号:

void init(); //同manage_window,用于避免sender()报错的同时调用load_ClassList()

槽:

void load_ClassList();           //重新加载学生成绩表
void exit_button_clicked();     //返回至上一界面

具体实现

建议直接读相关函数的具体实现代码,需注意部分已注释
此处不在赘述

基于Qt的学生信息管理系统相关推荐

  1. C语言涉及数组的大作业,c语言大作业_基于数组的学生信息管理系统.doc

    . . word完美格式 <C语言程序设计实训1>报告 设 计 题 目: 基于数组的学生信息管理系统 学 院 名 称: 科学技术学院 专 业: 软件工程 班 级: 108班 姓 名: 大神 ...

  2. 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现

    [摘要] 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状 ...

  3. 基于JavaSwing开发学生信息管理系统(SQLServer数据库版本) 毕业设计 课程设计 大作业

    基于JavaSwing开发学生信息管理系统(SQLServer数据库版本):   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+SQLServer数据库 运行 ...

  4. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  5. 基于swing+awt学生信息管理系统

    源码编号:F-A02 项目类型:Java SE项目(awt+swing)开源免费 项目名称:基于swing+awt学生信息管理系统(manager) 当前版本:V1.0.1版本 主要技术:java.a ...

  6. html实现学生系统,基于HTML5的学生信息管理系统的设计与实现

    摘要: 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状, ...

  7. [Java]基于JDBC的学生信息管理系统的实现

    基于JDBC的学生信息管理系统的实现 功能说明 数据库系统实现 0.建表过程 1.新生入学信息添加,学生信息修改 2.课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息) 3.录入学生成绩 ...

  8. 基于C++的学生信息管理系统的实现

    在完成一学期的C++语言学习之后,写一个学生信息管理系统来丰富自己的实战经验. 课设内容的要求有主菜单模块.输入模块.查询模块.更新模块.排序模块.统计模块和输出模块,并且通过主菜单模块调用各个子模块 ...

  9. 学生信息录入java,基于java的学生信息管理系统

    基于java的学生信息管理系统中分为多级角色管理:包括系统管理员.学生和老师几种权限,采用了开发技术JSP以及MYSQL数据库作为本系统的开发工具.主要包括新闻模块,考试模块,学生模块,教师模块,选课 ...

  10. 基于PHP+MySQL学生信息管理系统的开发与设计

    一直以来我国领导人提倡以人为本的治国方案,而大学是未来人才的培养基地,如何能够更好的对学生信息进行管理,是很多高校一直在研究的一个问题,只有更加科学的对学生信息进行管理,才能够更加积极的培养国家的栋梁 ...

最新文章

  1. 2018-3-24论文(Grey Wolf Optimizer)note1----------No Free Lunch Theorem
  2. 类选项html 最后无距离,各种距离 一览无遗
  3. c/c++连接mysql数据库设置及乱码问题(vs2013连接mysql数据库,使用Mysql API操作数据库)...
  4. C# 装箱和拆箱、理论概念(非原创)
  5. React 16 Jest手动模拟(Manual Mocks)
  6. 编写高效且优雅的 Python 代码
  7. ffmpeg打开音频设备
  8. TensorFlow工作笔记003---python异常大全IndentationError: unexpected indent_expected indented block
  9. python实现新闻网站_Python 教你 4 行代码开发新闻网站通用爬虫
  10. VSCode使用记录一:ubuntu 16.04下安装、编译文件、制作桌面图标和卸载
  11. 宝塔Warning: require(): open_basedir restriction in effect
  12. android 调用音乐播放器,android调用音乐播放器,三种方
  13. 实践日记-webpack,入门级打包,可以实操!
  14. LC152---乘积最大子数组
  15. 安装sql 2008 express 企业管理器Management Studio
  16. Hadoop学习(七)---namenode结点的详细讲解
  17. linux 系统迁移到固态硬盘,在Linux系统中将SSD当块设备缓存的方法
  18. R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
  19. 马化腾马云先后声明发展区块链:风口又来了?
  20. udp洪水攻击java_Linux网络编程之UDP洪水攻击

热门文章

  1. 如何将你的微信头像透明化
  2. 腾讯云学生机(官网入口)
  3. 了解HTTP和HTPS的S之差
  4. 【vulhub】conference
  5. 应用在AVR上的拼音输入法
  6. VNC远程控制服务器卡顿
  7. 秒杀各大网盘的不限速大文件传输工具
  8. Shopify速度优化
  9. Python检测和防御DOS攻击
  10. [匈牙利算法] 洛谷 P1640 连续攻击