用QT实现一个界面化的医院信息管理

举报
这个人没有名字 发表于 2021/11/21 21:32:53 2021/11/21
【摘要】 2.1 程序结构程序主要分为三个模块,图形化界面,数据结构和程序运行代码程序运行的流程为:初始化医生数据库——将数据库信息读入内存——主窗口界面生成——根据用户的选择生成子菜单,同时将用户输入的信息传递到内存,并作出相应的更改——刷新数据库内容,程序退出其中,数据结构用到的类:Doctor类,Date类,为组合关系,Date是Doctor的一个私有数据成员程序功能实现的类:DoctorInt...

2.1 程序结构

程序主要分为三个模块,图形化界面,数据结构和程序运行代码

程序运行的流程为:初始化医生数据库——将数据库信息读入内存——主窗口界面生成——根据用户的选择生成子菜单,同时将用户输入的信息传递到内存,并作出相应的更改——刷新数据库内容,程序退出

其中,数据结构用到的类:Doctor类,Date类,为组合关系,Date是Doctor的一个私有数据成员

程序功能实现的类:DoctorInterface,其中包含了对数据成员可行的操作,查找,增加,删除

图形化界面的类:


/*总体架构,流程,类及类之间的关系*/

 

2.2 主要功能

1.界面化菜单,方便快捷查找,修改,展示医生信息

实现方法:界面的生成,展示,切换

当前界面接收命令之后,调用函数隐藏当前界面,并构造下一个界面

点击返回按钮,当前界面会被析构,之前隐藏的界面重新显示

编辑键悬浮在界面之上,点击时被构造,点击取消按钮时析构

2.医生信息的存储

实现方法:文件+内存

医生的信息储存在DoctorData数据库中,在打开程序时将医生信息初始化到内存,内存采用QList<Doctor*>链表来储存一个科室的医生信息,全部医院的医生信息储存在Qlist<Doctor*>[20]数组中,考虑到医院规模,数组大小应该足够代表科室数目,另外,未使用的链表只有一个nullptr,占用的内存空间可以忽略不计。

分科室储存医生信息,可以提升查找效率,在对医生信息进行查找时不必遍历全部的数据。

3.对医生信息的操作

实现方法:基于QList,QString的函数

插入:对于已经存在的科室增加医生,直接根据传入的Qstring数组(储存了新医生信息),转换为相应的数据类型,检查新医生的科室,定位到相应的Qlist<Doctor*>,调用Qlist::append()函数插入到数组末尾

对于未存在的科室增加新医生,则需要创建新的科室,将一个Qlist<Doctor*>链表初始化,其他操作相同

主要的问题在于找到相应的医生,然后调用QList::removeAt()即可,

如果删除之后相应的科室为空,则需要删除空科室。

查找:在通过名字查找的情况下,需要遍历整个数据结构,利用QString可以直接进行等价判断的特性,返回相应的医生。

编辑:最大的困难在于,编辑之后医生会丢失原来的信息,导致在内存中无法定位,因此引入了tempDoctor指针,记录当前正在被编辑的医生位置

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。