SSD3设计报告模版 本文关键词:模版,报告,设计,SSD3
SSD3设计报告模版 本文简介:XXXX系统报告软件学院组长姓名贾春辉班级软件1005学号20103471姓名顾刚班级软件1006学号20103499姓名刘宇飞班级软件1005学号20102376姓名徐茜班级软件1006学号20103523课程名称面向对象程序设计(SSD3)成绩指导教师签字时间东北大学软件学院2011年11月11
SSD3设计报告模版 本文内容:
XXXX系统报告
软件学院
组长姓名
贾春辉
班级
软件1005
学号
20103471
姓名
顾刚
班级
软件1006
学号
20103499
姓名
刘宇飞
班级
软件1005
学号
20102376
姓名
徐茜
班级
软件1006
学号
20103523
课程名称
面向对象程序设计(SSD3)
成绩
指导教师签字
时间
东北大学软件学院
2011年11月11日
2
1.
系统概述
对所设计的软件系统进行描述,包括功能性和其他非功能性的与设计相关的内容。
我们小组所做的是自动处方跟踪系统,自动处方跟踪系统方便了用户和店的使用以及药房对药物的管理,大大提高了在现实中药房的工作效率。
系统所包括的功能:
1.用户登录,管理员登录,非用户注册
2.用户对自己的历史处方进行查询,取该处方的药品,删除处方,添加处方,使用替代药物的功能
3用户以及非用户可以在药房中查询某种特定的药物
4管理员对用户信息查询,药房里需要进货药物的查询
5管理员对所有药房中药物的查询,更新药方中的药品
2.
系统设计
对系统设计进行描述,在此需要有系统的UML类图,以及其它的设计信息,并对系统设计进行描述。
此次的项目选择我们是依据教材课后的三个系统中选择的处方自动跟踪系统,首先我们小组对其进行用户需求分析,明确用户需要哪些功能以及药房内药物的初始化和管理的内容。对于用户我们小组分析的是:
(一)类分析
首先用户要有自己的信息:姓名,密码,电话号码,生日,保险公司的名字,以及在该保险公司的保单号。所以我们定义了Customer类,与此同时我们定义了CustomerDataBase(集合类)来作为Customer的容器,CustomerDataBase类提供了添加用户,得到特定用户。也可以提供用户信息反馈的功能,为此要有一个得到所有用户信息的字符串来方便信息的保存。由于用户和管理员都要用到CustomerDataBase,这个是属于用户和管理员都要调用的,使用单例模式来定义CustomerDataBase.
药物:名称,剂量,药房内的库存,其替代药物,药物在市场上的流通状态来表现该药的性质,所以定义了Drug类,当然Drug类只有他自己的个人属性对于其他的数量的我们又定义了DrugItem类,DrugItem继承了Drug类,DrugItem中有的数量是他自己特有的属性,这个类是(集合)药房(DrugStore)中集合对象的类,整个药房在系统中只有一个,而且供用户和管理员共同调用,所以也使用单例模式来得到DrugStore的实例化对象。我们还定义了DrugCatalog类来作为药品的集合(纯粹Drug对象的集合)。来供处方Prescription中药品的调用并添加到该处方(方便处方药品的初始化)。
处方:处方的ID,开该处方的医生姓名,医生的电话,处方的开方日期,处方的有效期,该处方医生允许取药的次数。为此我们定义了Prescription类,因为每个处方有多个药品,所以我们定义了一个容器类PrescriptionItems来放处方中的药品。容器类PrescriptionItems中的元素对象是通过PrescriptionDrug类来实例化的,PrescriptionDrug有自己的quantity属性
其与DrugItem类相似不过DrugItem实例化的是药房内药品(每个药品在药方中的库存),而PrescriptionDrug定义的是处方中的药品极其每种药品的数量(单位:盒,瓶),两者的数量也是不同的,故定义了PrescriptionDrug和DrugItem来分别表示处方中和药房中的药品。
Prescription的容器是History即每个用户的历史处方记录,该类提供了得到每个药方ID,添加处方,删除处方,而History所定义的对象是每个Customer对象是私有属性,即每个用户都有历史处方记录。
经过小组的初始分析和在编写系统的过程中总共定义了21个类,
下面的图所示提供了该系统的主要的10个类的关系图。部分类没有在类图中显示。
System中的功能主要是通过CustomerGUI(用户登陆后的界面所定义的类),AdminGUI(管理员登录后的界面所定义的类),TestGUI是来初始化系统中数据的类,MainDrugGUI(系统的开始界面同时也是整个系统的主函数)来实现里面的功能的。
(二)功能分析及设计
三个界面:系统界面,用户登录后的界面,管理员界面
首先,程序运行之后,会出现一个简单的窗口,在这个窗口中,有3个选择方式分别为:
系统界面:
登录:管理员登录,用户登录。(我们在这里将管理员用户均设置为Person的子类,并且使用策略模式,其中管理员为—AdminXiali,pwd-000000),为了区分是管理员还是顾客,我们要求在每个管理员的名字上均加上Admin作为前缀。登录失败会给出相应的提示信息,一旦登录成功后,父窗口会消失,展现一个新的窗口
注册:在这里主要是为了用户注册,实现了用户注册那么我们也就相当于实现了管理的注册,道理是一样的。用户注册时所要填写是用户名和密码,填写自己的姓名和密码,密码会以*号的形式遮盖,并提供密码匹配窗,只有两次密码使用一致才可以进行注册,考虑到现在大家会使用昵称,所以不对姓名进行检测纠正,但是如果注册的顾客为已有顾客那么,我们会给出相应的提示。其他的信息是系统默认的
查询药品信息:这个功能几乎是贯穿整个系统的,因为我们考虑到有些顾客没有在这里注册,但是提供了他对药品查询的功能。将根据指定的药品代码进行查找,如果该药物市场流通,则全部显示,药品不流通,则给出提示,此药物在本店已经不再流通。
用户界面:
注:当输入的用户名和密码正确后系统判断是用户还是管理员,若是用户则跳到此界面
用户的信息在界面的左上角会显示和该用户的基本信息(不包括用户的密码显示),在历史记录的JList内显示的是每个处方的ID号码。
当点击的时候在历史处方信息内会显示该处方的基本信息,在处方药物JList里面会显示该处方的药物以及处方需要该药物的数量(单位:盒,瓶)。
当点击该处方药物中JList的药物时在其右面的文本区域会显示该药物的信息,在该药物的替代药物中的JList中会显示该药物的替代药物,点击替代药物的时候其信息也在边的文本区域显示,如果用户想使用该药物的替代药物在选中替代药物后点击替换通用药物按钮就会将该药物的替代药物取代原药物(默认取代后的药物数量和原药物的数量一致)。用户想取药的时候点击取该药方的按钮(当药方中的药物没有的时候,系统会提示该药物药房没有库存,这时候用户可以选择其替代药物进行替代,如果允许取药次数为零的时候系统也会提示该药方不可以再取药),当用户不需要某种处方的时候可以选中该药方的ID然后点击删除该药方就可以删除药方的信息。
如上两幅图所示是添加新处方的功能,在新加处方内填写处方的信息,处方信息输入不完全
的时候会显示错误提示信息并要求你重新输入(药物的内容按照“药物名称_数量”的格式填写,如果该药物在药房内没有的话就提示用户药房内没有该药物(新加处方的药物必须是药房内有的,如果不是的话就不能成功添加该处方))。当点击添加新的处方按钮时其就会添加到处方历史记录的JList内,点击查看就可以看到新添加处方的信息。
点查询药物功能,输入药物名称,点击查询该药物按钮,如果药房中存在该药物则显示该药物的信息,如果没有的话会提示药房没有该药物。
信息的保存:
点击保存按钮,系统会把信息写入文件内(系统默认的文件)
保存用户信息总共用到了六个文件:
CustomerDB.txt
Prescription.txt
PrescriptionItems.txt主文件
1.txt
2.txt
3.txt备份文件
退出:
点击退出则从该界面退出返回到主界面。
管理员界面:
输入用户名和密码后系统判断为管理员的时候界面会跳转到管理员界面
管理员:负责对药物的管理--
1-查看所有药物信息(包括流通的何不流通的,但是会给出相应的信息表达),
2-查看需要更新的药物信息(将市场上流通的和药品数量低于5kg的信息显示出来),
3-更新所有的药物(将市场流通的药物全部设置为满即100kg),
4-查看顾客信息(显示出所有顾客的姓名,电话号码,生日,保险公司名称,保单号),
5-添加某种新的药物(如果该药物存在则给出相应的提示,不存在则添加,若果该药物存在并且已经不流通,则进行询问是否使其进行流通,根据回复提示给出相应的操作),
6-指定的市场不流通的药物并设置为false(我们给每个药物提供了一个流通状态的属性,在本店中可以流通,那么就设置为true,否则设置为false,但是我们不会删除该药物的信息)。
系统会自动保存更新后的信息。
文件:Drugs.txt
Admin.txt
主文件
D.txt
A.txt备份文件
管理员退出后,那么父窗口会再次出现。
3.
问题集锦
1.对于文件读取和写入,一开始想到的是每次点击保存文件保存或登录则进行文件读取,但是这样频繁性的读取文件不会加快程序速度反而增大了程序的耗时行,因此经内部讨论我们决定全部成员在程序开始运行时进行初始化,然后在程序的结束的时候进行文件保存,考虑到每次调试的程序操作相同主要是为了进行调试方便,我们将文件读取和保存放在不同的文件中。
2.对于文件的操作,遇到的最大的问题是readline()返回值是什么,然后根据返回值确定是否达到文件结尾,尝试了-1,不成功,然后查了查API,知道了readline()返回值会为空,read()是-1.
3.对于窗口的布局设计问题,开始的时候想把一个窗口的关闭去导致另一个窗口打开,但是在actionlistener中只能够实现框架的dispose,而且这个方式是放弃了对该框架的句柄,然后等待垃圾回收器去默认的调用fianalizer方法将其释放,这样做就增大了对内存的消耗,同时很容易产生空指针异常,经过上网查询,我们发现窗口一个windowlistener方法,在这个方法中,使用setvisible就可以实现我们想要的方法。
4.在对Customer对象完整的初始化的时候遇到了很大的问题,因为Customer对象实例化的内容很多,不仅包括用户的基本信息,还有用户历史处方的初始化,处方的初始化同时还要有处方药物的初始化,三者要同时进行初始化才能将完整的用户信息初始化,然后才能添加到用户容器CustomerDataBase单例模式的对象中,为此想了很多办法来解决这个问题,都没有实现预期的效果。研究了一下用户信息的模块化分配和标记信息来判断其归属对象,最后想到了解决办法:
Customer:
张三_123_1562345897_1991年9月19日_No1209389_太平洋保险公司
Prescription:
张三_B007_林医生_16725367487_2010年7月7日_2011年7月9日_8
张三_D001_黄医生_19878123459_2010年7月5日_2011年5月7日_3
张三_A003_林医生_17865445678_2010年3月7日_2011年9月7日_4
PrescriptionItems:
B007_感冒灵_3
D001_白加黑_3
A003_止咳糖浆_2
A001_阿莫西林_2
A001_白加黑_3
D002_阿莫西林_4
C003_感冒灵_9
C003_阿莫西林_5
如上面格式所示分别写在三个文件里,在类FileCustomerLoader中定义该文件读取的方法,用户名标记处方,处方ID标记处方中的药物,利用字符串利用StringTokenizer分割后得到的初始字符串来判断将其给每个对象进行实例化,利用三重循环并成功读取文件的信息将Customer对象完整实例化。然后成功将Customer对象添加到单例模式下的CustomerDataBase对象中。
5.在事件处理的时候,添加处方和删除处方遇到的共性问题是:点击添加的时候系统错误:prescription空指针,因为此时的时候系统还是默认你选择了处方记录中的处方ID但是没有没有选择,而且我预期的效果是点击删除或添加处方后此时处方信息中不显示,处方药物和替代药物都是空显示,如同用户成功登陆到该界面的时候那种没有任何选中状态,为此我尝试了好久,那么既然再添加或删除的时候默认选择了那么我就添加一个JList.
isSelectionEmpty()来判断JList内是否被选中然后在执行事件的处理.然后将其他的文本区域和JList都设置为空,
class
RemovePrescription
implements
ActionListener{
public
void
actionPerformed(ActionEvent
event)
{
if(historyList.getSelectedValue()!=null){
String
Id=(String)historyList.getSelectedValue();
Prescription
prescription=customer.getHistory().getPrescription(Id);
customer.getHistory().removePrescription(prescription);
historyList.setListData(customer.getHistory().getPrescriptionIDs());
customerinformationPanel.removeAll();
customerinformationPanel.setVisible(false);
customerinformationPanel.setVisible(true);
String[]
emperty=new
String[1];
emperty[0]=““;
toReplaceDrugList.setListData(emperty);
prescriptionItemList.setListData(emperty);
}
else{
statusTextArea.setText(“Please
select
a
prescription.“);
}
}
}
但是发现使用后还有一个问题就是该List还是可以被选中的,然后就会出现空指针的异常,所以接下来解决的是如何让其不被选中而又处于空内容的状态,思考以后决定用List.
setVisible(false)来让其不能被选中因此不会出现空指针的异常情况,然后需要显示List的内容的时候在用List.setVisible(true)来显示内容然后被选中显示其他信息。
6.还有大家都会遇到的一个共性的问题,那就是空指针异常,对这个问题,我们可真是想了好久,虽然eclipse会提供给你几个提示的地点,可原因能为空指针异常,但为了真正的找到原因,我们使用了System.out.println()方法,来进行最终变量的确定来找到出路,在这里我们发现,eclipse提供的出处,每次都是第一个被提供的位置。
4.
小组讨论的时候大家积极提出自己的见解对设计思想,而且在开始的时候组长都明确了每个组员的工作:
贾春辉和刘宇飞负责系统主界面和管理员界面即功能的实现(涉及的类两人讨论完成):
贾春辉:管理员界面的布局和管理员功能的实现
刘宇飞:系统主界面的布局和界面功能的实现
顾刚和徐茜负责用户界面以及功能的实现(涉及的类)两人讨论完成:
顾刚:用户界面的布局和添加处方,删除处方功能,保存功能的实现
徐茜:替换药物和药物查询,取药功能,退出功能的实现
界面的桥接:贾春辉和顾刚
工作的过程中大家都表现得很积极,为了完成工作都加班加点,遇到不会的问题积极在一起讨论或请教其他同学。每一个人都是认真负责出色的完成了自己的工作,可以说这次系统的成功完成离不开大家团结合作的精神和积极地态度。
每个人都是最棒的!
5.
参考资料
Jacquie
Barker
z著《Beginning
Java
Object中文版
从概念到代码(第二版)》
《Thinking
in
Java》
14
篇2:ZGP软件过程综合实验报告格式模版
ZGP软件过程综合实验报告格式模版 本文关键词:模版,过程,实验,格式,报告
ZGP软件过程综合实验报告格式模版 本文简介:中南民族大学计算机科学学院软件过程综合实验报告题目年级专业指导教师小组成员(姓名学号)实验类型综合型成绩评定评语:教师签名:*年*月*日2007年11月22日一、前言1.目的软件产品不能靠人们的意念瞬间完成,它需要一个研发过程。一般情况下,好的过程才可能得到好的产品,而差的过程会得到差的产品。人们使
ZGP软件过程综合实验报告格式模版 本文内容:
中南民族大学
计算机科学学院
软件过程综合实验报告
题
目
年
级
专
业
指导教师
小组成员(姓名学号)
实验类型
综合型
成绩评定
评语:
教师签名:*年*月*日
2007
年
11月
22
日
一、前言
1.目的
软件产品不能靠人们的意念瞬间完成,它需要一个研发过程。一般情况下,好的过程才可能得到好的产品,而差的过程会得到差的产品。
人们使用合适的方法、技术、工具才能开发出用户需要的产品。过程是指“人,方法,技术和工具”的集合。
过程被写成文档后,变成了公司的“流程制度”,公司成员们依据“流程制度”开展工作,这叫“法治管理”。
本实验的目的是按照软件过程的规范要求,结合实际的程序设计,来深入理解并运用软件过程的基本概念、方法与过程。
软件开发过程综合实验要求学生在学习完程序设计语言、数据结构、操作系统等课程后,综合利用所学计算机软件知识完成一个应用系统的设计。是一个重要的教学实践环节,是对学生所学知识的掌握和应用程度的一个全面地、综合地考察。
在学生初步具备了一定的软件程序设计基础上,本课程设计针对日常应用中的实际问题,要求学生完成一个相对完整的应用系统,培养学生运用软件研发过程解决实际应用问题的能力,巩固和加深所学理论知识,初步掌握一个完整应用系统的开发过程和方法。加深对数据库系统、软件工程、程序设计语言的理论知识的理解和应用水平;进一步熟悉应用系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。培养相关专业专业本科学生科学研制、开发应用系统的基本过程和能力,为计算机在本专业领域的应用奠定基础;培养学生成为计算机硬件和软件知识都过硬的专业人才。
2.项目背景概述
3.项目实施环境(注:包括开发、运行环境)
4.项目人员及其分工
5.项目实施计划
二、需求分析
1.概述
2.功能需求
3.其它需求(包括安全、性能需求)
三、分析与设计
1.应用程序框架设计(包括相关原理与主要技术手段)
2.迭代实施
3.功能模块设计
四、调试与使用
1.(详细分析所遇问题和相应的解决方法)
2.使用说明
五、总结
(要求1000字左右,结合实际探讨对软件过程的认识与体会,包括所使用的主要技术、生命周期模型、人员配置与管理、产品及项目管理与实施等几个方面)
六、参考文献
七、附录
篇3:Wuzall托福Speaking六大题型总结及口语模版
Wuzall托福Speaking六大题型总结及口语模版 本文关键词:题型,托福,模版,口语,Wuzall
Wuzall托福Speaking六大题型总结及口语模版 本文简介:生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形色色的自我表现的形式表现出来。--泰戈尔SpeakingSectionTipsByCarmenIndependentspeakingInthissection,youshouldpresenty
Wuzall托福Speaking六大题型总结及口语模版 本文内容:
生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形色色的自我表现的形式表现出来。
--泰戈尔
Speaking
Section
Tips
By
Carmen
Independent
speaking
In
this
section,you
should
present
your
own
opinion
and
provide
examples
to
support
your
ideas.
Tips:
u
Try
to
describe
as
specific
as
possible.
u
Try
to
contain
as
much
information
as
possible
in
your
statement.
u
You
needn’t
to
tell
the
truth,but
must
be
logical
and
easy
to
understand.
Question
1
“I
think/
I
believe/
In
my
opinion….”
Question
2
“I
prefer…/
I
strongly
agree
with
the
idea/
opinion
that…”
Integrated
speaking
Question
3
In
this
part,you
should
present
the
man/
woman’s
attitude
first,and
then
explain
the
reasons
she
gives.
Remember,you
should
not
talk
about
your
own
opinions.
“The
woman/
man
agrees
with
the
announcement/
memo/
letter
(and
thinks
that
the
university
is
right
to
…)
One
reason
is
that…(explain).
In
addition,…(explain)”
www。zige365。com
Tips:
u
In
reading
you
may
have
no
time
to
take
notes,so
try
to
remember
what
the
passage
tells
you.
u
When
listening,take
notes
as
many
as
impossible.
However,if
taking
notes
disturb
your
understanding
of
the
listening
materials,you
should
focus
more
attention
on
listening,rather
than
taking
notes.
u
Focus
on
the
key
points
the
woman/
man
gives.
You
should
not
miss
anyone.
Question
4
“In
the
lecture,the
professor
provides
two
examples
to
demonstrate
that
….
One
example
is
that…
Another
example
Is
that
…
So…”
Tips:
u
Firstly,look
through
the
short
passage
quickly,find
the
key
words
and
memorize
or
put
them
down
if
time
allows.
u
When
taking
the
notes,pay
attention
to
the
signal
words,and
find
out
the
key
points.
u
Don’t
contain
your
own
opinions.
Question
5
In
this
section,you
should
state
what
problem
the
man
or
the
woman
faces
and
the
woman
or
the
man
offers
what
solutions
for
him
or
her.
Then
give
your
own
choice.
However,you
should
leave
15
to
20
seconds
to
explain
your
reasons.
“In
this
conversation,the
man/
woman
is
facing
the
problem
that…
And
the
woman/
man
offers
him/
her
alternative
solutions.
One
is
…
The
other
is
…
As
for
me,I
prefer
option….
For
one
thing
…
For
another
thing
…”
www。zige365。com
Tips:
u
You
needn’t
to
remember
too
many
details.
Taking
down
the
key
points
is
enough,because
you
have
to
leave
15
to
20
seconds
to
explain
your
own
choice.
u
Remember
that
you
have
to
state
your
own
ideas
in
this
section.
Question
6
In
this
section,the
speaker
usually
gives
two
examples
to
explain
a
theory
or
a
phenomenon.
So
try
to
find
out
what
the
theory
or
phenomenon
is,and
the
description
of
the
examples.
“In
the
lecture,the
professor
provides
two
examples
to
demonstrate
that
…One
example
is
that…
Another
example
Is
that
…
So…”.(You
can
change
this
style
according
to
different
lectures)
Tips:
u
Question
6
is
similar
to
Question
4
to
some
extent.
However,it
doesn’t
offer
any
clue
for
you
before
you
hear
the
lecture.
So
you
have
to
understand
the
lecture
thoroughly.
u
In
this
section,you
should
take
notes
as
many
as
possible,especially
the
details
of
the
examples,because
you
have
to
name
them
when
you
give
your
summary.
u
As
there
are
too
many
details,you
needn’t
to
take
all
of
them
down.
u
I
think
the
logicality
in
this
part
is
very
important.
When
listen
to
the
lecture,try
to
figure
out
the
logical
relationships
among
different
objects.
u
When
speaking,try
to
even
distribute
time,because
you
have
to
cover
two
points.