计算机SSD3设计报告模版

上传人:汽*** 文档编号:560177573 上传时间:2023-07-26 格式:DOC 页数:15 大小:1.07MB
返回 下载 相关 举报
计算机SSD3设计报告模版_第1页
第1页 / 共15页
计算机SSD3设计报告模版_第2页
第2页 / 共15页
计算机SSD3设计报告模版_第3页
第3页 / 共15页
计算机SSD3设计报告模版_第4页
第4页 / 共15页
计算机SSD3设计报告模版_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《计算机SSD3设计报告模版》由会员分享,可在线阅读,更多相关《计算机SSD3设计报告模版(15页珍藏版)》请在金锄头文库上搜索。

1、XXXX系统报告软件学院组长姓名贾春辉班级软件1005学号20213471姓名顾刚班级软件1006学号20213499姓名刘宇飞班级软件1005学号20212376姓名徐茜班级软件1006学号20213523课程名称面向对象程序设计SSD3 成绩指导教师签字时间东北大学软件学院2021年11月11日1. 系统概述对所设计的软件系统进行描述,包括功能性和其他非功能性的与设计相关的内容。我们小组所做的是自动处方跟踪系统,自动处方跟踪系统方便了用户和店的使用以及药房对药物的管理,大大提高了在现实中药房的工作效率。系统所包括的功能:1.用户登录,管理员登录,非用户注册2.用户对自己的历史处方进行查询,

2、取该处方的药品,删除处方,添加处方,使用替代药物的功能3用户以及非用户可以在药房中查询某种特定的药物4管理员对用户信息查询,药房里需要进货药物的查询5管理员对所有药房中药物的查询,更新药方中的药品2. 系统设计 对系统设计进行描述,在此需要有系统的UML类图,以及其它的设计信息,并对系统设计进行描述。此次的工程选择我们是依据教材课后的三个系统中选择的处方自动跟踪系统,首先我们小组对其进行用户需求分析,明确用户需要哪些功能以及药房内药物的初始化和管理的内容。对于用户我们小组分析的是:一类分析首先用户要有自己的信息:姓名,密码, 号码,生日,保险公司的名字,以及在该保险公司的保单号。所以我们定义了

3、Customer类,与此同时我们定义了CustomerDataBase集合类来作为Customer的容器,CustomerDataBase类提供了添加用户,得到特定用户。也可以提供用户信息反应的功能,为此要有一个得到所有用户信息的字符串来方便信息的保存。由于用户和管理员都要用到CustomerDataBase,这个是属于用户和管理员都要调用的,使用单例模式来定义CustomerDataBase.药物:名称,剂量,药房内的库存,其替代药物,药物在市场上的流通状态来表现该药的性质,所以定义了Drug类,当然Drug类只有他自己的个人属性对于其他的数量的我们又定义了DrugItem类,DrugIte

4、m继承了Drug类,DrugItem中有的数量是他自己特有的属性,这个类是(集合)药房DrugStore中集合对象的类,整个药房在系统中只有一个,而且供用户和管理员共同调用,所以也使用单例模式来得到DrugStore的实例化对象。我们还定义了DrugCatalog类来作为药品的集合纯粹Drug对象的集合。来供处方Prescription中药品的调用并添加到该处方方便处方药品的初始化。处方:处方的ID,开该处方的医生姓名,医生的 ,处方的开方日期,处方的有效期,该处方医生允许取药的次数。为此我们定义了Prescription类,因为每个处方有多个药品,所以我们定义了一个容器类Prescripti

5、onItems来放处方中的药品。容器类PrescriptionItems中的元素对象是通过PrescriptionDrug类来实例化的,PrescriptionDrug有自己的quantity属性 其与DrugItem类相似不过DrugItem实例化的是药房内药品每个药品在药方中的库存,而PrescriptionDrug定义的是处方中的药品极其每种药品的数量单位:盒,瓶,两者的数量也是不同的,故定义了PrescriptionDrug和DrugItem来分别表示处方中和药房中的药品。Prescription的容器是History即每个用户的历史处方记录,该类提供了得到每个药方ID,添加处方,删除

6、处方,而History所定义的对象是每个Customer对象是私有属性,即每个用户都有历史处方记录。经过小组的初始分析和在编写系统的过程中总共定义了21个类, 下面的图所示提供了该系统的主要的10个类的关系图。局部类没有在类图中显示。System中的功能主要是通过Customer用户登陆后的界面所定义的类,管理员登录后的界面所定义的类,是来初始化系统中数据的类,GUI系统的开始界面同时也是整个系统的主函数来实现里面的功能的。二功能分析及设计三个界面:系统界面,用户登录后的界面,管理员界面首先,程序运行之后,会出现一个简单的窗口,在这个窗口中,有3个选择方式分别为:系统界面: 登录:管理员登录,

7、用户登录。我们在这里将管理员用户均设置为Person的子类,并且使用策略模式,其中管理员为AdminXiali,pwd-000000,为了区分是管理员还是顾客,我们要求在每个管理员的名字上均加上Admin作为前缀。登录失败会给出相应的提示信息,一旦登录成功后,父窗口会消失,展现一个新的窗口注册:在这里主要是为了用户注册,实现了用户注册那么我们也就相当于实现了管理的注册,道理是一样的。用户注册时所要填写是用户名和密码,填写自己的姓名和密码,密码会以*号的形式遮盖,并提供密码匹配窗,只有两次密码使用一致才可以进行注册,考虑到现在大家会使用昵称,所以不对姓名进行检测纠正,但是如果注册的顾客为已有顾客

8、那么,我们会给出相应的提示。其他的信息是系统默认的查询药品信息:这个功能几乎是贯穿整个系统的,因为我们考虑到有些顾客没有在这里注册,但是提供了他对药品查询的功能。将根据指定的药品代码进行查找,如果该药物市场流通,那么全部显示,药品不流通,那么给出提示,此药物在本店已经不再流通。 用户界面:注:当输入的用户名和密码正确后系统判断是用户还是管理员,假设是用户那么跳到此界面 用户的信息在界面的左上角会显示和该用户的根本信息(不包括用户的密码显示),在历史记录的JList内显示的是每个处方的ID号码。 当点击的时候在历史处方信息内会显示该处方的根本信息,在处方药物JList里面会显示该处方的药物以及处

9、方需要该药物的数量单位:盒,瓶。当点击该处方药物中JList的药物时在其右面的文本区域会显示该药物的信息,在该药物的替代药物中的JList中会显示该药物的替代药物,点击替代药物的时候其信息也在边的文本区域显示,如果用户想使用该药物的替代药物在选中替代药物后点击替换通用药物按钮就会将该药物的替代药物取代原药物默认取代后的药物数量和原药物的数量一致。用户想取药的时候点击取该药方的按钮当药方中的药物没有的时候,系统会提示该药物药房没有库存,这时候用户可以选择其替代药物进行替代,如果允许取药次数为零的时候系统也会提示该药方不可以再取药,当用户不需要某种处方的时候可以选中该药方的ID然后点击删除该药方就

10、可以删除药方的信息。如上两幅图所示是添加新处方的功能,在新加处方内填写处方的信息,处方信息输入不完全的时候会显示错误提示信息并要求你重新输入药物的内容按照“药物名称_数量的格式填写,如果该药物在药房内没有的话就提示用户药房内没有该药物新加处方的药物必须是药房内有的,如果不是的话就不能成功添加该处方。当点击添加新的处方按钮时其就会添加到处方历史记录的JList内,点击查看就可以看到新添加处方的信息。点查询药物功能,输入药物名称,点击查询该药物按钮,如果药房中存在该药物那么显示该药物的信息,如果没有的话会提示药房没有该药物。信息的保存:点击保存按钮,系统会把信息写入文件内系统默认的文件保存用户信息

11、总共用到了六个文件:CustomerDB.txt Prescription.txt PrescriptionItems.txt主文件1.txt 2.txt 3.txt备份文件退出:点击退出那么从该界面退出返回到主界面。 管理员界面:输入用户名和密码后系统判断为管理员的时候界面会跳转到管理员界面管理员:负责对药物的管理-1-查看所有药物信息包括流通的何不流通的,但是会给出相应的信息表达,2-查看需要更新的药物信息将市场上流通的和药品数量低于5kg的信息显示出来,3-更新所有的药物将市场流通的药物全部设置为满即100kg,4-查看顾客信息显示出所有顾客的姓名, 号码,生日,保险公司名称,保单号,5

12、-添加某种新的药物如果该药物存在那么给出相应的提示,不存在那么添加,假设果该药物存在并且已经不流通,那么进行询问是否使其进行流通,根据回复提示给出相应的操作,6-指定的市场不流通的药物并设置为false我们给每个药物提供了一个流通状态的属性,在本店中可以流通,那么就设置为true,否那么设置为false,但是我们不会删除该药物的信息。 系统会自动保存更新后的信息。文件:Drugs.txt Admin.txt 主文件 D.txt A.txt备份文件管理员退出后,那么父窗口会再次出现。3. 问题集锦1.对于文件读取和写入,一开始想到的是每次点击保存文件保存或登录那么进行文件读取,但是这样频繁性的读

13、取文件不会加快程序速度反而增大了程序的耗时行,因此经内部讨论我们决定全部成员在程序开始运行时进行初始化,然后在程序的结束的时候进行文件保存,考虑到每次调试的程序操作相同主要是为了进行调试方便,我们将文件读取和保存放在不同的文件中。2.对于文件的操作,遇到的最大的问题是readline返回值是什么,然后根据返回值确定是否到达文件结尾,尝试了-1,不成功,然后查了查API,知道了readline返回值会为空,read是-1.3.对于窗口的布局设计问题,开始的时候想把一个窗口的关闭去导致另一个窗口翻开,但是在actionlistener中只能够实现框架的dispose,而且这个方式是放弃了对该框架的

14、句柄,然后等待垃圾回收器去默认的调用fianalizer方法将其释放,这样做就增大了对内存的消耗,同时很容易产生空指针异常,经过上网查询,我们发现窗口一个windowlistener方法,在这个方法中,使用setvisible就可以实现我们想要的方法。4.在对Customer对象完整的初始化的时候遇到了很大的问题,因为Customer对象实例化的内容很多,不仅包括用户的根本信息,还有用户历史处方的初始化,处方的初始化同时还要有处方药物的初始化,三者要同时进行初始化才能将完整的用户信息初始化,然后才能添加到用户容器CustomerDataBase单例模式的对象中,为此想了很多方法来解决这个问题,

15、都没有实现预期的效果。研究了一下用户信息的模块化分配和标记信息来判断其归属对象,最后想到了解决方法:Customer:张三_123_1562345897_1991年9月19日_No1209389_太平洋保险公司Prescription:PrescriptionItems:B007_感冒灵_3D001_白加黑_3A003_止咳糖浆_2A001_阿莫西林_2A001_白加黑_3D002_阿莫西林_4C003_感冒灵_9C003_阿莫西林_5如上面格式所示分别写在三个文件里,在类FileCustomerLoader中定义该文件读取的方法,用户名标记处方,处方ID标记处方中的药物,利用字符串利用StringTokenizer分割后得到的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号