《《软件工程》课程设计报告饭卡管理系统.doc》由会员分享,可在线阅读,更多相关《《软件工程》课程设计报告饭卡管理系统.doc(45页珍藏版)》请在三一办公上搜索。
1、软件工程课程设计报告 饭卡管理系统 目 录目 录2第一章 系统可行性分析41.1引言41.1.1编写目的41.1.2 定义:41.2可行性研究的前提41. 2.1要求41.2.2目标51.2.3条件、假定和限制51.2.4进行可行性研究的方法61.3 对现有系统的分析61.3.1处理流程和数据流程61.3.2工作负荷61.3.3费用开支61.3.4人员71.3.5设备71.3.6局限性71.4 所建议的系统71.4.1对所建议系统的说明71.4.2影响71.4.3局限性81.4.4技术条件方面的可行性8第二章 需求分析92.1引言92.1.1编写目的92.1.2 定义92.2任务概述92.2.
2、1目标92.2.2用户的特点102.2.3假定和约束102.3.工作原理102.4需求规定102.4.1对功能的规定102.4.2对性能的规定142.5运行环境规定142.5.1设备14第三章 概要设计153.1 系统功能设计153.1.1接口设计153.1.2 运行设计173.1.3 系统数据结构设计173.1.4系统出错处理设计173.2入口程序entry() 设计173.3查询模块search() 设计说明183.4 消费模块pay() 设计193.5存款模块deposit() 设计说明19第四章 详细设计214.1引言214.2对象模型214.3功能模型254.4动态模型25第五章 源
3、代码295.1.权限界面295.2提示界面305.3消费界面305.4 学生查询界面335.5挂失界面345.6管理员界面35第六章 软件测试报告416.1引言416.2静态测试416.3动态测试41第七章 课程设计体会45参考文献45第一章 系统可行性分析1.1引言 1.1.1编写目的 进一步分析和澄清问题定义,推导出系统的逻辑模型,对以后的行动方针提出建议。如果问题没有可行的解,那么花费在这项工程上的任何时间、资源、人力、经费、都是无谓的浪费。为了避免这些,我们要用最小的代价在尽可能短的时间内确定问题是否能够解决。对此项的报告即为可行性研究报告。1.1.2 定义:本文件中用到的专门术语的定
4、义及外文首字母词组的原词组:系统流程图:用图形符号以黑盒子形式描绘系统的每个部件(程序,文档,数据库,人工过程)。表达数据在系统各部件之间流动的情况。数据流图(DFD):没有任何具体的物理部件,描绘信息流和数据从输入移动到输出的过程中经受的变换。数据字典(DD):是对数据流图中包含的所有元素的定义的集合。其内容为数据流、数据元素、数据存储、处理。1.2可行性研究的前提 1. 2.1要求a功能:1实现消费使用卡片扣钱(取代现金);2在固定保险的地方存钱;3有消费记录功能;4有挂失功能。b性能;1刷卡消费时,要求快速,准确,可撤销;2在查询消费记录时,达到一般的查询速度。c. 输出:在刷卡器上,每
5、次消费时:1存额2此次消费额3剩余额刷卡器上,额外的信息如:1出错信息2锁卡信息3剩余不多提示信息报单:1每学年或者每月,可选择性的(需学生主动要求)输出消费记录报单。详细程度可由使用者,自行定义。2存款时,可选择性的(需学生主动要求)输出存款记录报单。3注销卡时,返还剩余额(钱)。d输入:刷卡器上,每次消费时:1卡ID(可由读卡器自动读入)2消费额3操作符(确认,撤消,后退,计算(加减乘除),存款(有权限限制),其他功能)数据库管理电脑上:1输入学生信息2学生存款额(由读卡器端输入器完成)3查询,修改,删除功能输入e在安全与保密方面的要求:1使用者之间的ID号不能重复;2 ID号不被他人轻易
6、知道;3即便知道也能有快速相应的机制,予以弥补;4有使用追踪功能,可以让用户了解,自己使用的情况。1.2.2目标 主要开发目标:a处理速度的提高;b安全系统的改进;c用户使用上的便捷。1.2.3条件、假定和限制 a所建议系统的运行寿命的最小值:1年; b进行系统方案选择比较的时间:1天; c经费、投资方面的来源和限制:无; d法律和政策方面的限制:无; e硬件、软件、运行环境和开发环境方面的条件和限制:无; f可利用的信息和资源:图书馆;1.2.4进行可行性研究的方法 从以下几个方面研究解法的可行性:(1)经济可行性分析:从开发软件系统所需的总时间,总费用,及其中可行性研究所需的费用,以及系统
7、软件开发完成后,所能预计的市场占有率等方面进行考虑,看该软件系统是否能达到一定的经济效益。(2)技术可行性分析:由于新的系统需要对变化的数据进行动态的存贮,即数据库中数据要随着管理员对系统的操作来随时更新,并且具有定时数据备份功能。因此要从技术角度方面研究者性功能是否可以是实现。(3)操作可行性分析:要分析设计出的系统在用户的操作上是否简便,这一点很重要,因为它会影响到用户对该系统的反应。1.3 对现有系统的分析分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性。(因为本身开发的系统就是想尽量接近于现有系统。所以对于这次试验,这一步没有什么实际意义) 。1.3.1处理流
8、程和数据流程 现有系统的基本的处理流程和数据流程。此部分请浏览4. 2中的数据流程图。1.3.2工作负荷 人工操作频繁加减存款。工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。1.3.3费用开支由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开支总额。(由于缺房相关调查,此处从略)1.3.4人员 由于现有系统的技术性含量比较低,操作不便,工作量大,因此需要较多的人才能完成工作。而新系统将具有较高的技术操作性,但它确使工作变得较为简便,因此只需要少量的高素质人才就可完成。1.3.5设备 1,读卡器(带输入器) 2,中央电脑(数据库)1.3.6
9、局限性人工处理的主要局限性表现在系统依赖于大量的人力和物质投入,工作效率较低和成本较高。1.4 所建议的系统用来说明所建议系统的目标和要求将如何被满足。1.4.1对所建议系统的说明使用饭卡可以快速便捷的进行消费。中央电脑-数据库对饭卡的操作相应至关重要。在高峰时刻,也能保证,存款,消费无错误,并且可记录,撤销操作。1.4.2影响1对设备的影响 设备不变2对软件的影响 新系统使用具有较高技术的软件(例如数据库软件等)2对对象的影响:新系统要求对客户、合同、操作人员有较为详细地记录,在其它方面没有什么带大的变化。3对系统运行过程的影响:系统的运行更加高速、有效。4对开发的影响:新系统的开发环境要求
10、不高,只需要现有设备就可以完成,且不会在开发过程中影响到现有系统的使用。5对地点和设施的影响:开发新系统不用考虑地点等方面的问题。6技术条件方面的可能性开发新系统的技术虽较现有系统比较先进,但总的来看,这些技术均已比较成熟,因此新系统的俄开发在技术方面应该不会有带大的困难。1.4.3局限性 因为时间有限,软件局限性很大。1.4.4技术条件方面的可行性 a在当前的限制条件下,该系统的功能目标能够达到; b利用现有的技术,该系统的功能能实现; c对开发人员的数量和质量的要求能满足; d在规定的期限内,本系统的开发能够完成。 第二章 需求分析2.1引言2.1.1编写目的需求分析是软件系统生存期中定义
11、阶段的最后一个步骤。这个阶段的任务不是具体解决问题,而是准确确定为解决问题系统必须具备哪些功能。这个阶段的一个重要任务是用正式的文档准确地记录目标系统的需求。该文档将最终交给软件具体的开发人员进行具体的开发。2.1.2 定义本文件中用到的专门术语的定义和外文首字母词组的原词组。实体联系图(E-R图):包含实体(即数据对象)、关系和属性。作为用户与分析员之间有效交流的工具。状态转换图:通过描绘系统的状态及引起系统的状态转换的事件来表示系统的行为。提供行为建模机制。2.2任务概述饭卡管理系统是一套针对大学校园食堂饮食交费和一般消费等方面的信息系统,它包括了嘘声或教职工在校内消费的各方面内容:刷卡消
12、费、查询、存款和持卡者信息管理等,方便对饭卡信息进行各项操作,定时进行数据的备份和更新,保持数据的一致性和准确性。另外,各方面的内容应该互相联系,最终产生各种查询统计报表,以供持卡者进行检查。此系统的主要任务就是把人们从繁琐的交费找零工作中解放出来,用计算机实现存款、消费、查询、修改、删除以及存储等功能。同时用计算机能够快速准确地完成资料的统计和汇总工作,迅速地打印出各种报表资料以供使用。2.2.1目标主要开发目标是能够对饭卡信息进行查询和更新管理,且具有反映敏捷准确。2.2.2用户的特点由于系统的界面清晰、美观,操作简单、方便,所以操作人员只需要具备一定的电脑操作技能即可。管理员(维护人员)
13、不需要任何数据库专业技能知识。本系统可以极大的提高工作效率,预期使用频度较高。2.2.3假定和约束系统的规模较小,适于Windows和操作系统,Access数据库系统。2.3.工作原理饭卡管理系统的工作原理如下:(1)先建立数据库和数据库的驱动程序。(2)在使用时,由管理员输入需要了解的关键字的信息,然后通过饭卡管理系统选择相应的管理事务。(3)管理事务将根据所提供的信息在数据库中查找相应的记录。(4)返回相应的记录给管理员。(5)允许管理员在相应权限下对数据进行修改。(6)通过终端把得到的内容显示到相应的界面上。2.4需求规定2.4.1对功能的规定根据系统的功能需求,要建立三个库文件,分别是
14、学校持卡者信息,饭卡存款额及历史情况和饭卡信息备份。学校持卡者信息库用来存放全校持卡者的各类信息,比如姓名、学号、系别;饭卡存款额及历史情况库用来记录此张饭卡当前的余额、刷卡时消费记录以及存款的历史记录;为了防止意外导致这些重要文件丢失,需要备份,备份信息放入饭卡信息备份库中。(1)分析问题领域,绘制系统用例模型(2)状态变化图(3)动态数据动态数据包括程序运行时输入和输出的数据,具体是数据库的各个表的各个不同元组与属性值,就查阅信息。数据库描述本系统的实体有:学生信息、卡信息它们之间的关系是一对一的。卡信息和卡历史是一对多的。E-R图如下:(4)更准确的数据字典数据字典1、学生信息:学生学号
15、 = 数字|字母卡ID = 数字|字母学生姓名 = 汉字性别 = 男|女|null电话号码 = 数字地址 = 汉字|数字|字母2 、卡信息卡ID = 数字|字母余额= 数字锁=true|false3、卡历史卡ID = 数字|字母时间=时间格式款额=数字操作=存款|消费|其他(5)数据元素的数据字典卡片: 1、学生信息名字:学生信息 别名:描述:记录学生相关信息定义:学生信息=学生学号+卡ID+学生姓名+性别+电话号码+地址位置:数据库2、卡信息名字:卡信息 别名:描述:记录卡的信息定义:卡信息 =卡ID+余额+锁位置:数据库3、卡历史信息名字:卡历史信息 别名:描述:记录卡历史的信息定义:客户
16、信息=卡ID+时间+款额+操作位置:数据库(1)学生信息库(student_info)列名数据类型学生学号stu_numint卡IDidint学生姓名nameChar(20)性别maleboolean电话号码telChar(20)地址addressChar(50)(2)卡信息(card_info)列名数据类型卡IDidint余额sumfloat锁lockboolean(3)卡历史(card_his)列名数据类型卡IDidint时间daytimedaytype款额sumfloat操作opChar(20)2.4.2对性能的规定(1)精度输入数据:查询最大查询范围1年内;卡ID合法性;客户信息合法性
17、;输出数据:余额以 213.12的形式最多小数点后两位,即到分为止显示。(小于的部分不可能出现)(2)时间特性要求刷卡响应时间不超过1秒;查询响应时间不超过5秒;(3)故障处理要求 刷卡响应时间超过1秒后,自动提出警告。要求重新刷卡。查询超过5秒,要显示查询时间长的提示信息。以免误认为死机。当计算机突然死机、重启、断电时自动存储备份数据。即便没有存上。也有备份数据库,供恢复。(4)其他专门要求普通学生只能刷卡消费,系统管理员还可以进入管理员界面;刷卡服务员可以操作刷卡器。界面清晰、美观,操作简单、方便。所有数据存储在学校服务器端,数据存储安全可靠。2.5运行环境规定2.5.1设备a.中央电脑,
18、要求容量大,CPU能够满足查询的。b.刷卡器,要求读取ID敏捷,准确。c.要求刷卡器与中央电脑连接。通信量要满足查询精度和速度。d.刷卡器上的功能建,要求显示明确,意思表达精确。第三章 概要设计3.1 系统功能设计3.1.1接口设计1.用户接口(1)用户类别:1有提供学生查阅的学生界面。2 提供管理员操作的管理员界面。3 提供刷卡的刷卡服务员界面。(2) 管理员界面菜单1 状态1.1登陆;1.2注销;2 新建-新建学生信息界面;3 查询更新3.1 学生消费历史3.2 学生信息4 挂失4.1 加锁4.2 解锁5 注销卡(3)学生查询菜单1 状态1.1登陆;.2注销;2 查询历史3 查询学生信息
19、(4)刷卡界面1 状态1.1登陆;1.2注销;2 消费方式2.1 正常2.2 定价3 显示上次输出2.外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。3.内部接口查询和更新都要调用数据库的操作。3.1.2 运行设计1.运行模块组合具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,处理数据。2.运行控制软件运行时有比较友好的用户界面,基本能够实现用户的数据处理要求。3.运行时间 系统的运行时间基本可以达到用户所提出的要求。3.1.3 系统数据结构设计(1)物理结构设计系统的物理结构具体由数据库来设计与生成,
20、此处略。(2)数据结构与程序的关系系统的数据结构由标准数据库语言SQL生成。3.1.4系统出错处理设计1.出错信息(1) 在学生刷卡后,卡ID被锁,将会出现错误信息:“Kard Locked”(2) 学生卡信息丢失,查询时或者消费-存款时,不认卡情况(3) 存款额大于999.99元,刷卡器只显示小于等于999,99元部分(4)消费时消费额大于存款额。系统将会提示错误,不作其他任何操作。2.措施(号码对应)(1) 只能解卡锁(2) 有备份数据库,随时可以恢复(3) 只能更换刷卡器(4)计时充钱3.2入口程序entry() 设计(1)程序描述提供管理员和学生用户,刷卡服务三种环境,限制用户对系统的
21、使用权限。特点:非常驻内存;单独的一个程序;顺序处理。(2)输入项权限:三个单选项。Level。管理员用户名:字符串类型,user,长度不超过20,可以是数字(不能开头)和字母、汉字;管理员密码 :字符串类型,pass, 长度不超过20, 可以是数字和字母,区分大小写(3)输出项欢迎或者提示错误信息。(4)程序流程图3.3查询模块search() 设计说明1.程序描述完成对系统(数据库)的查找。2.输入项 学生卡信息,时间信息,消费信息等。3.输出项 查找结果。4.流程逻辑PAD图3.4 消费模块pay() 设计1.程序描述完成消费部分。对输入和消费额,进行合法性验证。2.输入项 卡ID,定价
22、与否,消费额。3.输出项卡余额,错误提示。4.流程逻辑 判断树3.5存款模块deposit() 设计说明1程序描述完成存款部分。对输入和存款额,进行合法性验证。2输入项 卡ID,存款额。3输出项卡余额,错误提示。流程逻辑 判断表学生代号12345678读卡成功NYNNYYNY卡没有锁NNYNYNYY存款成功NNNYNYYY显示余额显示不可能不可能显示不可能不可能显示题是错误提示不可能不可能不可能不可能显示存款成功信息不显示不显示不可能不可能不显示不可能不可能显示显示存款失败信息不显示显示不可能不可能显示不可能不可能不显示第四章 详细设计4.1引言面向对象分析首要的工作,是建立问题域的对象模型,
23、这个模型描述了现实世界 中的“类于对象”以及它们之间的关系,表示了目标系统的静态数据结构。其中对象是对问题域中有意义的事务的抽象,他们既可能是物理实体, 也可能是抽象概念。要确定类和对象,我们先要找出候选的类于对象,然后在从中筛选出正确的类于对象。4.2对象模型1有四个类:(1) 类名:学生帐户属性:学号,卡ID,余额,锁 方法:创建(学生,卡,历史),更新属性,更新数据库,注销(学生,卡,历史),返回(学号,卡ID,余额,锁),消费,存款,设定(号,卡ID,余额,锁),撤销历史,显示历史(2) 类名:读卡器属性:卡ID方法:读取ID,确认卡,警告,设定ID(3) 类名:输入器属性:值,临时值
24、1,临时值2方法:读入,加法,减法,乘法,等于,定价,常用,最后一次输入,取消卡,消费(4) 类名:屏幕属性:值1,值2,值3,定价方法:显示当前输入,显示卡余额,清屏,定价, 2 类间关系无直接关系3 细化对象模型,生成Java代码框架/=(1)学生帐户=public class StudentInfo private Integer stu_num; private Integer card_id; private Double sum; private Boolean lock; public StudentInfo() public void createStuInfo(Integer
25、 stu_num, Integer card_id, String name, Boolean male, Integer tel, String address) public void createCardInfo(Integer id) public void createCardHis(Integer id) public void updateAttr() public void updateDB() public void deposit(Double value) public void delCardHis() public void delCardInfo() public
26、void delStuInfo() public void spend(Double value) public void unDoHis() public void printHis() public Integer getStu_num() return null; public Integer getCard_id() return null; public Double getSum() return null; public Boolean getLock() return null; /=(2)读卡器=public class CardReader private Integer
27、card_id; public CardReader() public Integer readId() return null; public Boolean judgeId() return null; public void alarm() public Integer getCard_id() return null; public void setCard_id(Integer id) /=(3)输入器=public class Inputer private Double value = 0; private Double temp = 0; public Inputer() pu
28、blic Double read() return null; public Double plus() return null; public Double minus() return null; public Double multiply() return null; public void equal() public void fixPrice() public void commonUse() public void lastVal() public void denyCard() public void spend() /=(4)屏幕=public class Screen p
29、rivate Integer value1; private Boolean fixlight; public Screen() public void printNow() public void printSum() public void cls() public void setFix(Boolean state) 4.3功能模型1用例图表示从用户角度对系统的要求。4.4动态模型1脚本刷卡人员与学生,刷卡消费过程。(学生本日第一次刷卡)学生输入卡ID卡被正确输入则进行下一步,如果没有正确输入,则提示错误。系统检测卡的合法性和是否被锁。进入消费界面如果是定价,直接消费,并显示余额,退出。
30、如果不是等待输入消费额刷卡服务员计算消费额确认消费显示卡余额如果在10秒内不进行操作,自动清屏退出2状态图 3 事件跟踪图(1)Collaboration框图框图中,对象表示为矩形,角色用简图表示。Collaboration框图不参照时间显示对象与角色的互交。并且其中直接通信的对象之间有一条直线,没有画线的对象之间不直接通信。因此Collaboration框图显示的信息与下面的Sequence框图类似,但本框图具有不同的作用。(2)Sequence框图他显示使用案例的过程流程。框图定不相识了设计的角色和对象。每个箭头表示角色与对象或者对象与对象之间为完成所需的功能而传递的信息。第五章 源代码5
31、.1.权限界面1数据库联接公共部分public static Connection conn = null; public static Statement state = null; public static void odbc() String DBDriver = sun.jdbc.odbc.JdbcOdbcDriver; String connectionStr = jdbc:odbc:myodbc; try Class.forName(DBDriver); catch(java.lang.ClassNotFoundException e)System.err.println(DBc
32、onnecton:+e.getMessage(); try conn = DriverManager.getConnection(connectionStr,); state = conn.createStatement(); catch(SQLException ex) System.err.println(aq.executeQuery:+ex.getMessage(); 2 刷卡选择部分/= 刷卡界面= if(this.jRadioButton2.isSelected() this.setVisible(false); JOptionPane.showMessageDialog(null
33、,欢迎进入刷卡界面!); Spend.main(null); /= 管理员界面= if(this.jRadioButton1.isSelected() String nstr,pstr,sql; nstr = this.jTextField1.getText(); pstr = this.jTextField2.getText(); sql = select * from admin where name like +nstr+; ResultSet rs =null; try rs = Main.state.executeQuery(sql); if(rs.next() if(pareTo(
34、rs.getString(pass)=0) this.setVisible(false); JOptionPane.showMessageDialog(null,欢迎进入管理员界面!); Admin.main(null); else JOptionPane.showMessageDialog(null,密码错误); elseJOptionPane.showMessageDialog(null,用户名错误); catch(SQLException ex) System.err.println(aq.executeQuery:+ex.getMessage(); /= 学生查询界面= if(this
35、.jRadioButton3.isSelected() this.setVisible(false); JOptionPane.showMessageDialog(null,欢迎进入学生查询界面!); StuInfo.main(null); 5.2提示界面5.3消费界面1 搜索部分if(Ids.getText().equals() ) JOptionPane.showMessageDialog(null,卡号不能为空!); Ids.setFocusable(true); else try String sql = select * from card_info where id = +Ids.
36、getText(); ResultSet rs = Main.state.executeQuery(sql); if(rs.next() if(rs.getBoolean(3) JOptionPane.showMessageDialog(null,卡已经被锁,如要解锁,请与管理员联系否则10日后 自动注销!); else if(DjCheck.isSelected() Sum.setText(rs.getString(2);this.result=String.valueOf(Integer.parseInt(Sum.getText()-Integer.parseInt(Dingjia.getText();JOptionPane.showMessageDialog(null,消费完毕,卡剩余+ result +。如果要继续消费请在10秒内操作,只后自动关闭帐户); Sum.setText(result); else Ids.setEditable(false); this.jButton26.setEnabled(false); this.jPanel1.setVisible(true); Sum.setText(rs.getString(2); jButton12.setEnabled(true)