校友管理系统(面向对象C++课程设计)

系统总体设计

校友管理系统是一套功能强大、操作简便而又实用的校友信息管理软件,它可以被广泛的应用于各高校校友之间的信息交换。开发此校友系统的目的为了克服高校师生传统落后的信息交换方式,难以应对信息更换等突发情况,联系人过多、杂乱等问题,根据对现有校友联系信息记录模式的分析,确定了该系统需实现以下功能:

  1. 实现对校友有关的信息的添加、删除、查询、修改等操作;
  2. 实现各校友实时共享、更新联系信息;
  3. 实现各校友筛选符合条件的校友联系信息;
  4. 实现联系信息的导出、备份功能;

系统功能模块图

根据用户需求,本系统将主要实现以下功能:

其中:
读取:包括对校友信息、学校信息、公司信息的读取。
查询:针对校友信息,按编码、姓名、电话、职务等可见字段进行模糊查询。
排序:对于可见字段,按列进行排序的功能。
筛选:对于可见字段,按内容进行多列筛选显示。
添加:在信息末尾添加新的校友信息字段记录。
删除:对已存在校友信息、学校信息、公司信息进行删除操作。
打印(未完成):将校友详细信息以图片格式输出。
维护:对所有数据信息和操作进行备份、记录。

各类间关系

本系统共主要使用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

猜你喜欢

转载自blog.csdn.net/newlw/article/details/130718564
今日推荐