《软件工程概论27618.pdf》由会员分享,可在线阅读,更多相关《软件工程概论27618.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软 件 工 程 概 论 上 机 实 习 报 告 学 院:软件学院 年 级:2007 班 级:5 班 学 号:44 姓 名:赵立夫 2010 年 4 月 9 日 目 录 1 上机实习一:用户需求及规格说明书 1.1 题目 考虑一个自动柜员机(ATM)。用户将信用卡插入一个槽中,并输入 4 位数字的个人标识(PIN)。如果 PIN 码不正确,将弹出信用卡。如果 PIN 码正确,用户可以对最多四个不同的账号进行下面的操作:(i)存钱,数额任意,将打印出一个凭单,显示日期、存入的金额和账号。(ii)取钱。以 20 美元为单位,最多 200 美元(不能透支),除了现金,还将给用户打印出凭单,提取的金额、
2、账号和提取后账户余额。(iii)确定账户余额。这在屏幕上显示。(iv)在两个账户之间转移资金。被提取的账户中导出的金额不能超过最高限额。用户将得到一个凭单,显示出日期、转移的金额和两个账号。(v)退出。弹出信用卡。1.2 需求 1 用户登录步骤:当用户插入信用卡之后,进行四位数字的个人标识输入,如果输入 PIN 不正确,弹出信用卡,如果用户输入 PIN 正确,用户进行下面的操作,同时只能对最多四个账户进行操作。其中隐含的要求是判断用户插入的卡是否合法,即,插入的卡是否是该自动柜员机能识别的信用卡。同时,用户输入 PIN 不正确时,应该在屏幕上显示信息提示用户是哪一步操作进行错误。2 用户存钱步
3、骤:用户将现金插入自动柜员机相应的存钱口,存钱金额不限,操作完成时,打印一个凭条,显示用户本次存款的存款日期,存入现金的金额以及用户的账号。其中存钱环节隐藏要求显得很重要:首先需要判断用户存入的钱是否是真纸币,如果不是应该提示用户存入的钱不合法,并推出;然后,虽然题目要求存入金额不限,但是据实际观察来看,在自动柜员机上存钱时,金额还是有所限制,即,有一定面额的限制,当用户存入的现金面值过小时,应该提示用户面值不正确,并要求用户插入要求面值的钱币。3 用户取钱过程:用户每次取 20 美元以上 200 美元以下,以 20 美元为单位,取的钱的金额不能超过现有金额,在自动柜员机的出钱口,提示用户钱币
4、输出,并打印凭条,显示提取金额,账号以及账户提取后余额。本过程隐藏要求比较少:首先用户取钱界面应该提示用户现有金额,以及能取出的金额,在用户确定取钱后,应该在用户可以忍耐的时间内将钱输出。4 用户进行转账过程:被提取账户中的余额不能少于转账金额,用户得到凭单,显示日期、转账金额和两个账号。5 用户查询余额过程:用户选择查询功能,在屏幕醒目的位置显示用户当前的余额。隐藏需求为:应该能够显示用户近期 5 次交易的清单,供用户参考,本功能可能为附加功能,可以不用实现。6 用户操作完毕,退出操作过程:本过程用户执行完要执行的操作,进行退出操作,自动柜员机退出信用卡,同时回到等待界面,等待下一个用户操作
5、。1.3 规格说明书 1.3.1 功能建模 根据上述需求分析,用户在自动柜员机进行操作,其中可以分成如下几个模块;一登录模块:用户进行插入信用卡,输入 PIN 码。二存钱模块:用户进行存钱的操作。三取钱模块:用户进行取钱的操作。四转账模块:用户进行转账操作。五查询模块:用户进行查询操作。六退出模块:用户操作完毕,退出操作。1.3.2 用例图 1.3.3 场景 正常场景 1.用户插入信用卡。2.用户输入 4 位 PIN 码,经验证后进入主菜单界面。3.用户选择查询余额操作。4.自动提款机显示余额。5.选择继续,返回主菜单界面。6.选择取钱操作。7.进入取钱界面,输入取钱金额。8.自动柜员机吐出相
6、应金额的现金。9.用户选择打印凭单。10.自动柜员机打印凭单 11.选择继续,返回主菜单界面。12.选择存钱操作。13.在存钱口放入一定金额的现金,点击确认。14.自动柜员机存入相应金额。15.用户退出登陆,弹出信用卡。异常场景 1.用户插入信用卡。2.用户输入 4 位 PIN 码,经验证后进入主菜单界面。3.选择取款操作。4.进入取款界面,输入取款金额。5.自动提款机提示信用卡余额不足。6.用户选择退出,自动柜员机弹出信用卡。1.4 实体类建模 1.4.1 类图 类:ATM 控制器类,ATM 类,打印机类,界面类,信用卡类,键盘类。类间交互关系如图所示:1.5 动态建模 1.5.1 转账状态
7、图 用户插入信用卡后,提示输入 PIN 码,输入正确,则进入下一个选择,输入错误,则提示用户 PIN 码错误,并弹出信用卡。在下一级选择界面下,按取款按钮进入取款界面,输入金额进行等待,如果余额不足,则提示失败;否则出钞。1.5.2 ATM 状态图 由于篇幅原因,部分细节省略,只代表性的详细画了取钱一支。1.5.3 取款时序图 下面是参照取款的正常场景,画出取款操作的时序图:1.5.4 取款协作图 1.6 分析总结 本次实验要求完成一个面向对象分析,面向对象的分析需要将问题划分为一些类或对象,确定对象间的关系。面向对象的分析是一个比较好的方法,应为它比较贴近实际,根据确定的对象以及对象间的关系
8、可以很清楚的建立一个模型,方便涉众一方了解整个过程。对需求进行分析应该是一个迭代的过程,但由于时间限制,没有进行迭代过程,因此最终的结果不尽完善。但通过本次实验,加深了系统分析过程的理解,尤其是确定类以及类之间的关系是整个分析过程的核心。2 上机实习二:系统概要设计及详细设计 2.1 概要设计 2.2 完成类图 对分析报告中的初始类图进行进一步分析,添加变量和操作得到设计流类图:2.2.1 ATM_PROCESS 类 接收操作:从 Interface 接收用户输入的信息:包括插入信用卡,对键盘的操作。判断操作:判断 Interface 接受的信息是否正确合法,如:判断用户插入的信用卡是否正确,
9、用户取款时余额与要求是否矛盾,用户存款时是否有非法的纸币 连接数据库:与银行后台数据库进行连接。查询账户操作:根据用户信用卡记录信息,在相应的数据库中查找用户信息,包括:用户姓名,账号余额,最近五次交易情况,时间日期等。数据库操作:执行数据库的相关操作,例如更新等。显示结果:用户进行操作后,对相应的操作显示结果,用户确定打印时,应反馈相应的打印凭条。2.2.2 输入设备类 键盘:数字按钮:对应着数字 功能按钮:对应着相应的功能 类别:选择按钮,数字按钮 状态:按下为 1,未按为 0 操作:按钮按下:按下一个按钮后,进行相应的操作,对于数字键盘,执行相应的金额输入以及日期输入;对于选择按钮,则执
10、行相应的功能性操作。2.2.3 信用卡类 类别:属于哪个银行的信用卡 信息:账户的基本信息,用来与数据库相交互。密码:PIN 操作:插卡:用户将信用卡插入插槽后,ATM 机识别信用卡是否是该机器能识别的卡。2.2.4 ATM 类 数据:用来与界面和后台程序相互衔接,起到传递数据的作用。包含:当前状态,用户输入信息,反馈用户信息等等。操作:等待状态:当ATM 机无人使用时,机器应该处于等待状态,等待用户进行操作。执行状态:当有用户前来使用 ATM 机时,ATM 迅速恢复工作状态,查看是否有信用卡插入,用户选择了何种操作。退出操作:用户执行完操作后,执行。2.2.5 界面类 数据:界面功能主要是与
11、用户进行交互,以获取用户输入,相应用户操作等等。从键盘类接收:键盘属于界面的一部分,当用户操作时,界面类从键盘输入获取用户选择。屏幕显示:用户选择完操作后,应及时反馈用户当前信息。插钱口接收钱币:当用户选择存钱时,ATM 应开启插钱口,以便用户存钱。出钱口输出钱币:当用户选择取钱时,ATM 应开启此口,输出相应金额。打印凭单口:当用户选择打印时,ATM 在打印口输出凭单。2.2.6 打印机类 数据:打印凭单:记录关键凭单内容。如账号,金额,余额。操作:打印():与硬件交互,将打印内容打印到凭单上。2.3 详细设计 下面给出主要类主要操作的伪代码 2.3.1 ATM 控制器类:判断操作()判断操
12、作()While(工作状态)判断信用卡是否有效;无效则,调用屏幕显示(),提示用户错误;有效,调用屏幕(),显示欢迎界面;从接口类接收用户输入的选择信息();如果是存钱操作 则控制开启存钱口。判断用户插入钱币是否合法 如果是取钱操作 判断余额是否允许 如果不允许,则提示用户余额不足 如果允许,则开启出钱口,输出钱币。如果是查询操作,则调用数据库进行查找,接口类进行显示。如果是转账操作,则判断是否存在账户,账户金额是否允许。如果是推出操作,推出信用卡,返回等待状态();2.3.2 界面类:屏幕显示结果()屏幕显示结果()判断是否用户选择了输出操作;如果是则判断用户选择是否屏幕输出;如果是则判断当
13、前状态是应该输出何种信息;进行输出();2.3.3 键盘类:功能键操作()功能键操作()While(1)等待用户操作();If(工作状态)Break;If(用户选择功能键)接收功能键信号();查看相应信号对应的功能();返回等待用户输入状态();调用相关模块();2.3.4 打印机类:打印()打印凭条()If(选择打印)执行打印;If(打印结束)输出凭条;2.3.5 ATM 类:等待用户()等待用户()While(1)显示广告 If(用户操作)break;工作状态();2.4 设计总结 经过上一阶段的分析,得到了几个类与这几个类之间的关系,本节里将这些类进行了具体设计,但并未实现编码,在承接上一次分析的结果上来做本次设计,我发现分析过程是很重要的,也就是说,如果没有一个良好的分析结果,很难做出来满足要求的设计。本次设计过程中遇到了一些问题:如上一节分析得到的类在具体细化时,不知道应该具备那些属性,可能是因为分析阶段做的不够充分。