基于C+++Mysql实现(WinForm)校友管理系统(面向对象)【100010007】
校友管理系统(面向对象课程设计)
前 言
校友管理系统要求以高校校友管理业务为背景,设计管理系统程序。
系统需要包含的主要信息有:校友基本信息:序号,姓名,电话,专业,现从事的专业,职务,工作年限,所在城市等;工作单位信息:单位名称,所属行业,单位性质(高校,企业、事业单位等),单位规模等;毕业学校信息:学校代码,校名,地址,性质(985,211,一班本科等)等;校友联系信息:校友姓名,所在城市联系人,办公地点等。系统要求能完成的功能有:(1)录入信息用文件保存;(2)能建立、修改和增删校友及单位的相关信息;(3)能够按多种方式进行查询;
本系统的信息端采取了数据库的方式来读取和储存系统中的数据,并设置了相关类型、索引、外键来建立信息之间的关系。信息的处理端采取使用Qt编写的可视化界面来进行数据的查找、筛选、排序、修改、增删等操作。
摘 要
校友管理系统是典型的信息管理系统,主要功能包括对各种基本信息的建立、维护和查询。其软件开发主要包括学生基本信息的管理,档案信息的管理等。本系统要求可以进行学生基本信息的添加,删除,修改和查询,及档案信息的建立、维护和查询等。
本系统的开发采用面向对象的设计思想,所用软件环境为Qt Creator和MySQL。实现思想为将校友各项信息抽象为数据库信息存储,并利用Qt库类和SQL类的连接访问来实现对校友信息的管理。
本文档系统地介绍了校友管理系统的设计思想和开发过程。
关键词: Qt Creator;MySQL;C++;图形界面
系统总体设计
校友管理系统是一套功能强大、操作简便而又实用的校友信息管理软件,它可以被广泛的应用于各高校校友之间的信息交换。开发此校友系统的目的为了克服高校师生传统落后的信息交换方式,难以应对信息更换等突发情况,联系人过多、杂乱等问题,根据对现有校友联系信息记录模式的分析,确定了该系统需实现以下功能:
- 实现对校友有关的信息的添加、删除、查询、修改等操作;
- 实现各校友实时共享、更新联系信息;
- 实现各校友筛选符合条件的校友联系信息;
- 实现联系信息的导出、备份功能;
系统功能模块图
根据用户需求,本系统将主要实现以下功能:
其中:
读取:包括对校友信息、学校信息、公司信息的读取。
查询:针对校友信息,按编码、姓名、电话、职务等可见字段进行模糊查询。
排序:对于可见字段,按列进行排序的功能。
筛选:对于可见字段,按内容进行多列筛选显示。
添加:在信息末尾添加新的校友信息字段记录。
删除:对已存在校友信息、学校信息、公司信息进行删除操作。
打印(未完成):将校友详细信息以图片格式输出。
维护:对所有数据信息和操作进行备份、记录。
各类间关系
本系统共主要使用23种类:
其中Qt类库含13种(八边形框表示):主视窗类、浮动视窗类、对话视窗类、工具栏类、按钮类、菜单栏类、表格类、关系表格模型类、数据库类、标签类、行编辑器类、下拉框类、排布器类;
继承自Qt类库7种(圆角矩形框表示):主窗口类、连接视窗类、关于视窗类、表格数据视窗类、 用户视窗类、学校视窗类、公司视窗类、查找视窗类;
自定义类2种(方角矩形框表示):筛选框类、自定义表头类;其余部分为以上主要类的对象实现(六边形框表示)。
类名 父类 子类 对象 功能 主视窗 QWidget 主窗口 无 用于设计带有菜单栏、工具栏、状态栏的主窗口 浮动视窗 QWidget 表格数据视窗 无 可以停靠在主视窗的窗口 对话视窗 QWidget 如图 无 以窗口显示的对话框 工具栏 QWidget 无 工具栏 提供可添加元件的工具栏 按钮类 QObject 无 如图 用于鼠标、键盘事件响应 菜单栏 QWidget 无 菜单栏 提供可添加元件的菜单栏 表格类 QAbstractItemView 无 数据表格 用于显示表格数据 关系表格模型 QSqlTableModel 无 数据模型 用于操作数据库内信息 数据库 无 无 数据库 用于接入数据库 标签类 QFrame 无 略 在窗口中显示文字或图片 行编辑 QWidget 无 略 提供可输入的文字编辑器 下拉框 QWidget 无 略 提供带选择的输入编辑器 排布器 QLayout 无 layout 用于自动排布窗口中元件 主窗口 主视窗 无 Alumni 添加元件后的主视窗 连接视窗 对话视窗 无 略 用于连接数据库的视窗 关于视窗 对话视窗 无 略 用于显示软件信息 表格数据视窗 浮动视窗 无 略 显示数据的主要窗口 用户视窗 对话视窗 无 略 显示用户详细信息的窗口 学校视窗 对话视窗 无 略 显示学校详细信息的窗口 公司视窗 对话视窗 无 略 显示公司详细信息的窗口 查找视窗 对话视窗 无 略 用于查找数据行 筛选框 QWidget 无 筛选框 用于显示数据筛选窗口 自定义表头 QHeaderView 无 自定义表头 用于在表格中插入筛选框元件 以下是各主要类之间关系说明图:
详细设计
本系统主要功能包括:信息读取,编辑,排序,筛选,查找,打印,维护等
其中信息读取功能使用连接视窗类和表格数据视窗类来实现,编辑、排序、筛选、查找、打印功能使用表格数据视窗和详细数据视窗来实现。下面分别介绍连接视窗类,表格数据视窗类,详细数据视窗的详细设计。
连接视窗类
主要功能:连接数据库
具体实现流程:
主窗口连接按钮触发弹出连接视窗
设置、排布数据库连接相关编辑信息元件
用户输入相关连接信息并点击连接
返回错误信息或获得数据库指针并进入表格数据视窗界面
主要定义:
成员变量:layout、kindBox、hostLine、dataLine、userLine、portLine、passwordLine、connectLine、btn、db。
成员函数:link、getDB。
- 成员函数link主要功能为连接数据库,实现方式为:作为槽函数与btn按钮绑定,在按钮点击触发时读取成员变量Box和各Line的内容,并使用db数据库类进行链接。
- 成员函数getDB主要功能为获取数据库指针,实现方式为:作为共有成员函数,在数据库连接成功后传递数据库信息至表格数据视窗内。
表格数据视窗类
主要功能:显示数据信息,并进行排序、筛选、编辑等操作。
具体实现流程:
连接视窗数据库连接成功后展开表格数据视窗
设置右键菜单、表格、数据模型、表头信息等
右键菜单进行数据刷新、切换数据表、增加信息、查找信息
点击表头和筛选元件进行排序、筛选
双击数据行弹出详细数据视窗界面进行编辑信息。
主要定义:
成员变量:db、Parent、tableview、menu、RefreshAction、AddAction、FindAction、PeopleAction、SchoolAction、CompanyAction、showFilter、model、Filter、findwidget。
成员函数:dataClick、Menu、refresh、add、find、showPeople、showSchool、showCompany、onDelete、onFilterClicked、onHeaderDataChanged、onFilterHide。
- 成员函数dataClick主要功能为弹出详细数据视窗界面,实现方式为:作为槽函数与menu中的AddAction绑定,在菜单栏按钮点击时触发函数信号,检测model当前数据表名,并弹出相应详细数据视窗。
- 成员函数refresh主要功能为读取数据信息,实现方式为:作为槽函数与menu中的RefreshAction绑定,在菜单栏按钮点击时触发函数信号,刷新model中的数据信息,并刷新showFilter中的筛选信息。
- 成员函数add主要功能为添加信息,实现方式为:作为槽函数与menu中的AddAction绑定,在菜单栏按钮点击时触发函数信号,添加一行空白数据,并呼出详细数据视窗进行编辑。
- 成员函数find主要功能为查找信息,实现方式为:作为槽函数与menu中的FindAction绑定,在菜单栏按钮点击时触发函数信号,呼出findwidget窗口进行数据查找。
- 成员函数showPeople、showSchool、showCompany主要功能为切换数据表,实现方式为:作为槽函数与menu中相应的Action绑定,在菜单栏按钮点击时触发函数信号,初始化表格数据并切换数据表。
- 成员函数onDelete、onFilterClicked、onHeaderDataChanged、onFilterHide主要功能为处理筛选框事件,实现方式为:作为槽函数与showFilter中的信号触发函数绑定,在筛选框编辑时时触发相应函数信号,实现数据筛选功能。
详细数据视窗类
主要功能:显示和编辑某一条数据的详细信息
具体实现流程:
鼠标双击某一条数据或触发addAction
设置、排布数据相关编辑信息元件
信息元件链接数据表数据
用户编辑修改信息,点击保存、取消或删除
提交信息并保存,检测是否提交成功
返回表格数据视窗
主要定义:
成员变量:layout、mapper、btn、model、Row、若干Edit、若干Box
成员函数:save、remove、cancel
- 成员函数save主要功能为保存数据,实现方式为:作为槽函数与btn按钮绑定,在按钮点击触发时读取成员变量Box和各Line的内容,并使用mapper数据映射实现数据保存。
- 成员函数remove主要功能为删除数据,实现方式为:作为槽函数与btn按钮绑定,在按钮点击触发时调用model的成员函数removeRow删除一行数据。
- 成员函数cancel主要功能为取消操作,实现方式为:作为槽函数与btn按钮绑定,在按钮点击触发时调用窗口类的成员函数close关闭详细数据视窗并返回父窗口。
系统测试
测试方法
软件测试的一般方法有:白盒测试、黑盒测试、灰盒测试
白盒测试是指:借助程序内部的逻辑和相关信息,通过检测内部动作是否按照设计规格说明书的设定进行,检查每一条通路能否正常工作。
黑盒测试是指:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
灰盒测试是指:介于黑盒测试和白盒测试之间。灰盒测试除了重视输出相对于出入的正确性,也看重其内部表现。但是它不可能像白盒测试那样详细和完整。它只是简单的靠一些象征性的现象或标志来判断其内部的运行情况,因此在内部结果出现错误,但输出结果正确的情况下可以采取灰盒测试方法。
本系统采用黑盒测试方法进行测试
测试用例
本系统使用MySQL进行数据存储,采用Navicat进行数据管理测试,所用数据表有:people、company、school、job、major、scale、trade、work、propertiesc、propertiess。其中job、major、scale、trade、work、propertiesc、propertiess为预设数据,不可通过本系统进行编辑。
School测试数据共6组:
i Id Name Address Properties List 1 1 school1 address_school_1 211工程院校 2 2 school2 address_school_2 985工程院校 3 3 s 其他 4 4444444 address_four 省属本科院校 45 23 兰州理工大学 中国-甘肃-兰州-1校区 小学 54 32 兰州理工大学 中国-甘肃-兰州-2校区 985工程院校 Company测试数据共10组:
i Name Address Trade Properties Scale List 1 company1 address_one 其他 其他 其他 2 company2 信息传输业 集体所有制企业 其他 3 company4 address_fourrrr…… 其他 其他 特大型企业 4 company333…… address_five 交通运输业 三资企业 小型企业 5 腾讯 中国-深圳 软件和信息技术服务业 三资企业 特大型企业 6 网易 中国-广州 软件和信息技术服务业 三资企业 特大型企业 7 其他 其他 其他 9 1 1 其他 国有企业 其他 80 one one 其他 其他 中小微企业 1000 ???? ??? 餐饮业 其他 其他 People测试数据共10组:
i Id Name Phone Major Job Work Time Address School Company List 1 1 one 1373333 其他 其他 其他 1 oooo 1 1 2 2 two 1372222222 中医临床基础 仓储保管 其他 22 wwww 2 1 3 3 ? ??? 光学 其他 其他 0 ??? 4 1000 4 4 其他 仓储保管 其他 5 5 张三 13712345678 公共管理 体育用品制作 假肢制作装配工人 2 中国-北京 4 80 6 6 李四 0 免疫学 其他 修理工 5 中国天津 45 1000 8 44 -1 -1 其他 其他 其他 0 -1 4 7 9 23 王五 111111…… 儿科学 仓储保管 修理工 9999999 1111111…… 4 4 10 1111 同学1号 7777 其他 其他 其他 1 address 地址 1 3 9 1 1 one 1373333 其他 其他 其他 1 oooo 1 1
总结
本次课程设计共10个课时,其中设计阶段1课时,接着7个课时一边学习数据库和图形界面程序设计一边用于完成课程设计,剩余2个课时分别对文件进行了整理工作,对程序进行BUG检测和分析,完成设计说明书和总结反思。
此次课程设计为第二次课程设计,相较于第一次课程设计,本次课程设计是一个一边学习一边应用的过程。在本次课程设计中遇到了更多的难题,缺少资料且在网络上缺乏相应的参考信息。
本系统设计参考了Excel、Access等数据库相关应用,结合第一次实习所使用的图形界面IDE编译器Qt Creator和过往搭建MySQL数据库服务器的经验结合而成。
在编程实现的过程中,由于第一次实际应用Qt和MySQL,在图形界面和数据库搭建方面存在诸多问题。更因为网络上缺乏相关资料,没有使用经验,所以编译过程遇到诸多的疑难杂症。秉持着独立思考的精神,诸多问题被一一修复。在这一过程中,我也学习到了许多相关的技术和经验。
最终,本系统原计划的信息读取,编辑,排序,筛选,查找,打印,维护等7种功能共实现6种,其中的打印功能由于时间原因并未完成。尽管如此,本次课程设计弱化了对功能多样性的需求,将程序设计重点放在了图形界面的设计优化上,大大降低了系统的操作难度,提高了用户体验。
除此以外,本次课程设计使用了类的思想,封装了大部分的功能性元件,其具有良好的移植功能,也便于对程序各功能作出修改或升级。
♻️ 资源
大小: 689KB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87247907
基于C+++Mysql实现(WinForm)校友管理系统(面向对象)【100010007】相关推荐
- 基于javaweb+mysql的个人日记管理系统
基于javaweb+mysql的个人日记管理系统 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程 ...
- 基于PHP+MySQL的学生信息管理系统(源码)
项目名称:基于PHP+MySQL的学生信息管理系统 本系统是一个用于管理学生信息的管理系统,包括基本的增删改查,系统使用PHP语言开发,使用MySQL数据库,可以供初学者参考使用. 系统环境 MySQ ...
- 基于javaweb+mysql的图书借阅管理系统(前台、后台)
基于javaweb+mysql的图书借阅管理系统(前台.后台) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运 ...
- 基于javaweb+mysql的维修报修管理系统(管理员、维修人员、普通用户)
基于javaweb+mysql的维修报修管理系统(管理员.维修人员.普通用户) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/s ...
- 基于PHP+MySQL+Apache在线考试管理系统(附源码)
作者:BSXY_陈永跃 BSXY_信息学院 注:未经允许禁止转发任何内容 基于PHP+MySQL+Apache在线考试管理系统 项目体验 1.前言 1.1.编写目的 1.2.项目需求 1.3.项目环境 ...
- 基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
基于javaweb+mysql的教务选课管理系统(管理员.教师.学生) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均 ...
- 基于SSH+MySQL的会员积分管理系统
项目运行截图 消费管理 会员设置 会员卡设置 会员卡设置 积分设置 添加会员 修改密码 编辑折扣卡 添加折扣卡 技术描述 开发工具: Idea/Eclipse 数据库: mysql Jar包仓库: J ...
- 基于javaweb+mysql的健身房健身俱乐部管理系统(前台、后台)
基于javaweb+mysql的健身房健身俱乐部管理系统(前台.后台) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均 ...
- 基于SSM+MYSQL+Vue的宾馆管理系统
项目运行截图 管理员登录 房间管理 住宿信息 换房 退房管理 住宿统计 新增房间 技术描述 开发工具: Idea/Eclipse 数据库: mysql Jar包仓库: Maven 前段框架: vue/ ...
- 基于ssm+mysql+jsp销售医药管理系统
基于ssm+mysql+jsp销售医药管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.公告管理 3.生产管理 4.分店采购 5.出库管理 6.分店管理 7.商品管理 8.合同管理 9.会员管理 ...
最新文章
- ubuntu/debian 安装SSH,并开启
- 智源社区AI周刊·第二期:过去一周AI领域的新鲜事
- 统计《ASP.Net特供视频教程》总长度
- Json、Gson、FAST-JSON解析学习
- python采用函数式编程模式-浅谈Python 函数式编程
- GPIO的翻转操作方法
- WPF 使用MSCHART 控件代码
- Python 源码混淆与加密
- 轴承后缀ce和ca_轴承cc和ca与cde4有什么区别
- 从零搭建美团饿了么外卖红包CPS小程序教程
- Android 12 源码下载、编译与烧录到Pixel 3a
- 人工智能、机器学习、深度学习 三者关系
- 苹果市场金融类app上架ios1.2 ,5.2.1或3.21被拒原因解析
- 边缘计算卸载算法--GT-GAOA
- python判断火车票座位号分布图_火车票怎么看车厢号和座位号
- Ruby‘s Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效
- 11 计算机组成原理第七章 输入/输出系统 I/O系统基本概念 外部设备
- HtmlUnit基础
- Java操作Word自动生成目录
- android新浪微博客户端毕业设计课题背景