《软件工程课程设计-校园卡(共39页).doc》由会员分享,可在线阅读,更多相关《软件工程课程设计-校园卡(共39页).doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上湖南人文科技学院计算机系课程设计说明书课程名称:软件工程导论课程代码:题 目:校园卡管理系统年级/专业/班:09级计科二班学生姓名:蒋瑞 杨金 刘嘉柏 邹振兵学 号: 12 10 48指导老师:颜富强开题时间: 2011年6月6日完成时间: 2011年6月30日2011年6月30日专心-专注-专业课程设计任务书及成绩评定课程名称:软件工程导论完成者:蒋瑞、杨金、刘嘉柏、邹振兵1、设计的目的与要求 1)加强学生的实践能力;2)理解小型系统开发的基本步骤; 3)本系统的功能包括:学生信息管理模块、刷卡消费、查询、存款模块(包括基本的添加、修改、删除功能)。2、设计进度及完
2、成情况日 期内 容6.6-6.7项目开发计划书6.8-6.10系统可行性研究 6.11-6.15系统需求分析 6.16-6.23系统设计 6.24-6.27系统测试 6.28-6.30项目的递交3、成绩评定设计成绩: (教师填写)指导老师: (签 字)2011 年 月 日目录第一章 项目开发计划书1.1引言 1.1.1编写目的此项目开发计划书的编写主要是为了给开发校园卡管理系统做主要的规划和整合,在开发过程中起到引导作用,以及给使用者提供简要的说明。1.1.2背景校园卡管理系统是一套针对大学校园食堂饮食交费,一般消费等方面的信息管理系统,它包括了同学在校内消费各方面内容:刷卡消费、查询、存款,
3、学生信息管理等。方便的对同学饭卡信息进行各项操作,定时进行数据的备份更新,保持数据的一致性和准确性,各方面的内容应该相互联系,最终产生各种查询统计报表,以供同学进行检查。用户通过系统首页面,创建饭卡,存入钱。消费时根据饭卡ID判断该用户是否是合法用户,同时进行消费操作。管理员可以对系统进行新建饭卡、注销饭卡、修改饭卡信息等操作,而学生进行消费的操作。1.2项目概述1.2.1工作内容校园卡卡管理系统的主要任务就是把人们从繁琐的交费,找零工作中解放出来,用计算机实现对销售合同资料进行存款,消费,查询、修改、删除以及存储等功能。同时,用计算机能够快速准确地完成共档案资料的统计和汇总工作,迅速地打印出
4、各种报表资料以供使用。1.2.2主要参加人员 组长:蒋瑞设计:刘嘉柏、蒋瑞开发:杨金、邹振兵1.2.3产品1 系统开发计划书2 系统需求说明书3 系统设计说明书4 测试计划5 一个能正确运行的可执行程序,源程序清单(有注释)1.2.4服务安装、维护和运行支持从使用该系统开始,维护期限为一年。 1.2.5验收标准 各个功能均能正常使用,满足用户的需求。1.2.6本计划的批准者和批准日期 批准者:颜富强批准日期:2011年6月6日1.3实施计划 1.3.1工作任务的分配与人员分工 组长: 蒋瑞 任务: (1)系统总的开发计划书 (2)每周至少组织小组讨论一次,列出本周开发计划 (3)项目开发进度的
5、管理 (4)团队的组织和协调设计: 刘嘉柏、蒋瑞 任务: (1)参与小组讨论 (2)进行系统的需求分析和系统设计 (3)完成系统需求说明书和系统设计说明书 (4)编写测试计划,参与系统测试 (5)协助文档人员完成用户相关文档开发:邹振兵、杨金 任务: (1)参与小组讨论 (2)根据设计完成编码,并注释 (3)进行单元测试1.3.2进度 系统规划阶段: 项目标志性事件 开始到完成开发阶段: 项目开发计划书的完成 6.6-6.7需求分析阶段: 系统需求说明书完成 6.8-6.10设计阶段: 系统设计说明书 6.11-6.15编码实现: 项目的形成 6.16-6.23测试阶段: 测试计划 6.24-
6、6.27移交阶段: 项目的递交 6.28-6.301.4支持条件操作系统需要 windows 2000以上;操作系统环境:java虚拟机,.netFrameWork3.0;数据库需要SQL Server 2000;第二章 可行性分析2.1可行性研究的前提要求:满足客户使用校园卡的各项功能及要求,并对客户资料具有保密性目标:提高处理速度,改进安全系统,方便用户使用。条件、假定和限制:所建议系统的运行寿命最少1年;进行系统方案选择比较的时间为1天。 2.2 对现有系统的分析人工操作频繁加减存款。工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。现有系统技术性含量比较低,操作不便,
7、工作量大,需要较多的人才能完成工作。系统依赖于大量的人力和物质投入,工作效率较低和成本较高。2.3 所建议的系统2.3.1对所建议系统的说明使用饭卡可以快速便捷的进行消费。中央电脑-数据库对饭卡的操作相应至关重要。在高峰时刻,也能保证,存款,消费无错误,并且可记录,撤销操作。2.3.2处理流程和数据流程系统的处理流程 图1 系统的处理流程图2.4经济上可行性开发成本:200元人民币。效益:暂时无法具体衡量。效益/投资比:暂时无法估算。投资回收期:大约2个月。2.5技术可行性 a在当前的限制条件下,该系统的功能目标能够达到; b利用现有的技术,该系统的功能能实现; c对开发人员的数量和质量的要求
8、能满足; d在规定的期限内,本系统的开发能够完成。2.6开发工具的选择Java概述Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及系统提供了有关技术和丰富的类库。2.7 新系统的影响1对设备的影响 设备不变2对软件的影响 新系统使用具有较高技术的软件3对对象的影响:新系
9、统要求对客户、合同、操作人员有较为详细地记录。4对系统运行过程的影响:系统的运行更加高速、有效。5对开发的影响:新系统的开发环境要求不高,只需要现有设备就可以完成,且不会在开发过程中影响到现有系统的使用。6对地点和设施的影响:开发新系统不用考虑地点等方面的问题。7技术条件方面的可能性开发新系统的技术虽较现有系统比较先进,但总的来看,这些技术均已比较成熟,因此新系统的开发在技术方面应该不会有带大的困难。2.8投资及效益分析 新系统开发完成后,只需要23面管理员,大大减少的人员方面的开支,同时由于数据冗余度也大大降低,在物质方面也降低了开销,因此会有较好的市场效益。2.9 结论通过技术、经济、具体
10、操作等方面的研究可知,新系统可开发风险较低,可以开始进行具体的开发工作。第三章 需求分析3.1市场需求分析过去的系统技术性含量比较低,操作不便,工作量大,需要较多的人才能完成工作,而且还依赖大量人力物力的投入,工作效率低,成本高。相比于过去低级的系统,现在经过改良之后的系统不但操作简便,而且只需要极少数的管理人员,大大的提高的工作效率。3.2系统功能性需求分析3.2.1对功能的规定本系统面向全体学生,所以需要录入学生的一些信息,然后再创建饭卡。最后才是学生向饭卡中存款,进行刷卡消费。由于存储了学生的信息,所以挂失起来也更为的方便。以下给予数据流图来更为直观的描述出此系统的功能:图2 顶层数据流
11、图图3 创建校园卡ID数据流图图4 校园卡消费数据流图图5 校园卡信息查询数据流图图6 校园卡存款流图3.2.2对性能的规定(1)精度输入数据:查询最大查询范围1年内;卡ID合法性;客户信息合法性;输出数据:余额以 213.12的形式最多小数点后两位,即到分为止显示。(小于的部分不可能出现)(2)时间特性要求刷卡响应时间不超过1秒;查询响应时间不超过5秒;3.3系统非功能性需求3.3.1故障处理要求刷卡响应时间超过1秒后,自动提出警告。要求重新刷卡。查询超过5秒,要显示查询时间长的提示信息。以免误认为死机。当计算机突然死机、重启、断电时自动存储备份数据。即便没有存上。也有备份数据库,供恢复。3
12、.3.2其他专门要求普通学生只能刷卡消费,系统管理员还可以进入管理员界面;刷卡服务员可以操作刷卡器。界面清晰、美观,操作简单、方便。所有数据存储在学校服务器端,数据存储安全可靠。3.3 数据字典1学生信息:学生学号 = 数字|字母身份证号 = 数字|字母卡ID = 数字|字母学生姓名 = 汉字性别 = 男|女|null2 卡信息卡ID = 数字|字母余额= 数字锁=true|false3 卡历史卡ID = 数字|字母时间=时间格式款额=数字操作=存款|消费|其他数据元素的数据字典卡片:学生信息名字:学生信息 别名:描述:记录学生相关信息定义:学生信息=学生学号+身份证号+卡ID+学生姓名+性别
13、位置:数据库卡信息名字:卡信息 别名:描述:记录卡的信息定义:卡信息 =卡ID+余额+锁位置:数据库卡历史信息名字:卡历史信息 别名:描述:记录卡历史的信息定义:客户信息=卡ID+时间+款额+操作位置:数据库3.4运行环境规定1中央电脑,要求容量大,CPU能够满足查询的。2刷卡器,要求读取ID敏捷,准确。3要求刷卡器与中央电脑连接。通信量要满足查询精度和速度。4.刷卡器上的功能建,要求显示明确,意思表达精确。3.5实体-联系图本系统的实体有:学生信息、卡信息它们之间的关系是一对一的。卡信息和卡历史是一对多的。根据分析可以得出如下的E-R图:图7 系统E-R图第四章 系统设计4.1 总体设计4.
14、1.1需求概述总体设计的主要任务是设计程序的体系结构,也就是确定程序有哪些模块组成以及模块间的关系。总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软结构,通常,进行必要的数据库设计,确定测试要求并且是定测试计划
15、。4.1.2校园卡管理信息系统概要设计根据需求分析和系统将要实现的功能来看,系统有如下基本功能:l 新建饭卡l 存款消费l 查询历史l 挂失l 注销 图8 系统层次图4.2详细设计4.2.1编写定义1.编写目的详细设计阶段的任务就是把解法具体化,解决具体应怎样实现这个系统。也称为模块设计,详细地设计每个模块,确定实现模块所需的功能需要的算法和数据结构。2.定义在软件具体设计阶段的专用术语有:程序流程图、盒图(NS图)、判定表、判定树、PAD图4.2.2功能模块的设计与实现1新建校园饭卡模块 (1)用户类别: 1有提供学生查阅的学生界面。 2 提供管理员操作的管理员界面。 3 提供刷卡的刷卡服务
16、员界面。(2)管理员界面菜单1 状态1.1登陆;1.2注销;2 新建-新建学生信息界面;3 查询更新3.1 学生消费历史3.2 学生信息4 挂失4.1 加锁4.2 解锁5 注销卡(3)学生查询菜单1 状态1.1登陆;1.2注销;2 查询历史3 查询学生信息(4)刷卡界面1 状态1.1登陆;1.2注销;2 消费方式2.1 正常2.2 定价3 显示上次输出2外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。3内部接口 查询和更新都要调用数据库的操作。4.2.3运行设计1.运行模块组合具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过
17、程中能较好的交换信息,处理数据。2.运行控制软件运行时有比较友好的用户界面,基本能够实现用户的数据处理要求。3.运行时间系统的运行时间基本可以达到用户所提出的要求。4.2.4系统数据结构设计1.物理结构设计系统的物理结构具体由数据库来设计与生成,此处略。2.数据结构与程序的关系系统的数据结构由标准数据库语言SQL生成。 4.2.5系统出错处理设计1.出错信息1 在学生刷卡后,卡ID被锁,将会出现错误信息:“Kard Locked”2 学生卡信息丢失,查询时或者消费-存款时,不认卡情况3 存款额大于999.99元,刷卡器只显示小于等于999,99元部分4 消费时消费额大于存款额。系统将会提示错误
18、,不作其他任何操作。2.措施(号码对应)1 只能解卡锁2 有备份数据库,随时可以恢复3 只能更换刷卡器4 计时充钱4.3 功能模块设计 4.3.1 入口程序entry() 设计说明1.程序描述提供管理员和学生用户,刷卡服务三种环境,限制用户对系统的使用权限。特点:非常驻内存;单独的一个程序;顺序处理。2.输入项权限:三个单选项。Level。管理员用户名:字符串类型,user,长度不超过20,可以是数字(不能开头)和字母、汉字;管理员密码 :字符串类型,pass, 长度不超过20, 可以是数字和字母,区分大小写3.输出项 欢迎或者提示错误信息。4.流程逻辑 1)程序流程图图9 程序流程图具体方法
19、代码实现如下: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.ClassNotFoundExceptione)System.err.println(DBconnec
20、ton:+e.getMessage(); try conn = DriverManager.getConnection(connectionStr,); state = conn.createStatement(); catch(SQLExceptionex) System.err.println(aq.executeQuery:+ex.getMessage(); 2 刷卡选择部分/= 刷卡界面= if(this.jRadioButton2.isSelected() this.setVisible(false); JOptionPane.showMessageDialog(null,欢迎进入刷
21、卡界面!); Spend.main(null); /= 学生查询界面= if(this.jRadioButton3.isSelected() this.setVisible(false); JOptionPane.showMessageDialog(null,欢迎进入学生查询界面!); StuInfo.main(null);4.3.2 查询模块search() 设计说明1.程序描述完成对系统(数据库)的查找。2.输入项学生卡信息,时间信息,消费信息等。3.输出项 查找结果。4.流程逻辑PAD图图10 流程逻辑PAD图具体方法代码实现如下:if(num.getText().equals() )
22、JOptionPane.showMessageDialog(null,卡号不能为空!); num.setFocusable(true); else try Stringsql = select * from student_info where stu_num = +num.getText(); ResultSetrs= Main.state.executeQuery(sql); if(rs.next() id.setText(rs.getString(2); name.setText(rs.getString(3); if(rs.getBoolean(4) sex.setText(男); e
23、lse sex.setText(女); tel.setText(rs.getString(5); address.setText(rs.getString(6); else JOptionPane.showMessageDialog(null,卡号错误!); catch(SQLExceptionex) System.err.println(aq.executeQuery:+ex.getMessage(); 4.3.3 存储、消费模块pay() 设计说明1.程序描述完成消费部分。对输入和消费额,进行合法性验证。2.输入项 卡ID,定价与否,消费额。3.输出项卡余额,错误提示。具体方法代码实现如下
24、:1 搜索部分if(Ids.getText().equals() )JOptionPane.showMessageDialog(null,卡号不能为空!); Ids.setFocusable(true); elsetry Stringsql= select * from card_info where id = +Ids.getText(); ResultSetrs= Main.state.executeQuery(sql); if(rs.next() if(rs.getBoolean(3)JOptionPane.showMessageDialog(null,卡已经被锁,如要解锁,请与管理员联
25、系否则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
26、.jButton26.setEnabled(false); this.jPanel1.setVisible(true);Sum.setText(rs.getString(2);jButton12.setEnabled(true);jButton14.setEnabled(true);jButton15.setEnabled(true); elseJOptionPane.showMessageDialog(null,卡号错误!); catch(SQLExceptionex) System.err.println(aq.executeQuery:+ex.getMessage();2 消费部分 tr
27、y this.result=String.valueOf(Integer.parseInt(Sum.getText() - Integer.parseInt(Now.getText(); Stringsql=updatecard_infoset sum=+result+whereid=+Ids.getText(); if(Main.state.executeUpdate(sql)=0) JOptionPane.showMessageDialog(null,消费失败); else this.nows =Now.getText(); this.sums =Sum.getText();JOption
28、Pane.showMessageDialog(null,消费完毕,卡剩余+ result +。如果要继续消费请在10秒内操作,只后自动关闭帐户); Sum.setText(result); catch(SQLExceptionex) System.err.println(aq.executeQuery:+ex.getMessage();3 加减乘部分if(Jisuan.getText().compareTo() = 0)Jisuan.setText(Now.getText(); Now.setText(0); else switch(ops) case 3: int a= 0; a=Integ
29、er.parseInt(Jisuan.getText() * Integer.parseInt(Now.getText(); if(a999) JOptionPane.showMessageDialog(null,计算量超过消费最大值!); else Jisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText() * Integer.parseInt(Now.getText(); Now.setText(Jisuan.getText(); break; case 2: int b=0;b=Integer.parseInt(Jisu
30、an.getText()+ Integer.parseInt(Now.getText(); if(b999) JOptionPane.showMessageDialog(null,计算量超过消费最大值!); else Jisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText()+Integer.parseInt(Now.getText();Now.setText(Jisuan.getText(); break; case 1: int c=1; c=Integer.parseInt(Jisuan.getText()-Intege
31、r.parseInt(Now.getText(); if(c999|c=0)JOptionPane.showMessageDialog(null,计算量超过消费有效值!); elseJisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText() - Integer.parseInt(Now.getText(); Now.setText(Jisuan.getText(); break; ops = 0 ; Op.setText(=);4.3.4挂失模块deposit() 设计说明1.程序描述完成挂失部分。对卡进行挂失和解挂操作,进行
32、合法性验证。2.输入项 卡ID,卡密码额。3.输出项成功提示,错误提示。4.流程逻辑判断表表1 流程逻辑判断表学生代号12345678读卡成功NYNNYYNY卡没有锁NNYNYNYY存款成功NNNYNYYY显示余额显示不可能不可能显示不可能不可能显示题是错误提示不可能不可能不可能不可能显示存款成功信息不显示不显示不可能不可能不显示不可能不可能显示显示存款失败信息不显示显示不可能不可能显示不可能不可能不显示if(num.getText().equals() )JOptionPane.showMessageDialog(null,学生学号不能为空); num.setFocusable(true);
33、 else try String sql = select * from student_info where stu_num = +num.getText(); ResultSetrs=Main.state.executeQuery(sql); if(rs.next()if(rs.getString(7).compareTo(pass.getText()=0) JOptionPane.showMessageDialog(null,请按确认锁键,确认锁卡!); num.setEnabled(false); pass.setEnabled(false); this.jButton1.setEna
34、bled(false); this.jButton2.setEnabled(true); ids=rs.getInt(1); else JOptionPane.showMessageDialog(null,学生密码错误!); else JOptionPane.showMessageDialog(null,学生学号错误!); catch(SQLException ex) System.err.println(aq.executeQuery:+ex.getMessage(); 第五章 系统测试5.1 测试的作用和意义 系统测试是管理信息系统的开发周期中的一个十分重要环节。尽管在系统开发周期的各个阶
35、段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价。系统测试占用的时间、花费的人力和成本占软件开发的很大比例。统计表明,开发较大规模的系统,系统测试的工作量大约占整个软件开发工作量的4050。而对于一些特别重要的大系统,测试的工作量和成本更大,甚至超过系统开发其他各阶段的总和的若干倍。因此做好系统交付前的系统测试的目的就是在系统在投入生产性运行之前,尽可能多的发现系统的潜在错误,这是保证系统质量的关键,也是减少系统后期维护投入的最佳方法。5.2 测试方法 本次测试主要是对系统进行黑盒、白
36、盒测试。由未参与系统编程的组员参与。通过设计不同的等价输入类对系统的各项功能进行反复运行,观察系统的返回结果来判断系统的各项功能的实现情况。5.3 测试内容1 软件的正常运行、关闭及退出时保存记录情况。2 用户界面是否友好,可操作性及安全性能是否良好。3 数据库的可维护性好,数据的录入、删除及更改是否能顺利完成。5 各模块的共能是否能达到预期要求。6 系统的稳定性是够良好。5.4 测试结果5.4.1注册和登录模块测试 经过测试,用户能在本系统进行正常的注册和登录,并在用户输入不存在的用户名或错误的密码后能给出提示。说明本系统的注册和登录模块的各项功能都圆满实现了。1.进入界面 图11 进入界面2. 创建用户界面图12 创建新卡界面3.登陆界面 图13 登陆界面5.4.2查询模块测试1查询主要是余额查询,经测试系统该方面运行正常。