《JAVA课程方案设计书网吧管理系统 .docx》由会员分享,可在线阅读,更多相关《JAVA课程方案设计书网吧管理系统 .docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习Java 课程设计指导书(同学版初稿)看到觉得不错与大家共享第一章网吧计费治理系统目标可编辑资料 - - - 欢迎下载精品名师归纳总结1.1 背景介绍1.1.1 业务背景1.1.2 技术背景1.2 需求分析1.2.1 功能需求分析1.2.2 业务对象分析1.2.3 验收测试要求1.3 系统设计1.3.1 总体设计1.3.2 详细设计1.4 系统实现1.5 小结1.6 展望可编辑资料 - - - 欢迎下载精品名师归纳总结第一章网吧计费治理系统学习目标: 能使用 Java 集成开发环境
2、, 运用 Swing 设计图形界面,运用 JDBC拜望数据库,把握大事处理编程,明白简洁两层C/S 工程的开发及简洁面对对象程序的设计过程,进展基本的团队协作开发才能。学习寄语 :虽然本工程并不是一个商业工程,其产品也不能用来赚钱,但从中你可以学到实际开发中的许多体会和技巧,获得一种“学有所用”、“学有所得”的成就感,同时赢得老师和同学(同事)对你的特殊敬重。在此工程的学习中,你不但是个同学,仍是一个职业人,将与同事一起尽全力完成你所要做的工作,并再次验证“天道酬勤”的真理。我们的信念是:“不抛弃,不放 弃”。你的转变和收成是老师真诚的期望。1.1背景介绍1.1.1 业务背景 “海之星”网吧,
3、是一个小型网吧,以前是人工记帐,现需要开发一个简洁的网吧计费治理系统。原人工治理的主要过程如下:客户在门口服务台,出示上机卡,如是新客户就先发新卡。治理员先查询是否有空机器,如有就依据上机卡号查到该卡对应的记录(账簿),如有余额(5 元),就支配一个闲暇的机器号给客户,客户依据机器号对号入座,治理员登记客户卡号、上机机器号、上机时间。客户下机要到门口的服务台,请求下机,治理员依据当前时 间、上机时间及费率运算出本次上机费用,并记录,同时将费用从卡余额中扣除,如费用不够就需充值。原手工系统主要有如下缺点:1 手工记帐,治理员工作量大,且易出错。 2 超时超费使用不能准时发觉。因此需要开发一个简易
4、计费治理软件,取代人工记帐方式,由软件统一治理记录上下机、计费、上机 卡、机器情形,供应简洁统计功能,超时超费提示功能等。1.1.2 技术背景本系统要求使用 java技术开发,使用数据库(如ACCES,S SQLServer)储存数据 ,集 成开 发环 境可使 用支 持可 视化 GUI 界面设 计的 主流工 具 如eclipseant beanjbuilder。开发者应有 java程序设计语言、 SWING基本GUI 组件、文件使用、 JDBC存取数据库、使用一种集成开发工具的基本学问和技能。系统接受两层 C/S 体系结构, C 端负责通过 GUI 与治理员交互、处理业务规律及存取数据库, S
5、 端主要是数据库系统。系统分析设计主要接受面对对象的分析设计方法。友情提示: 对工程有了一个最基本的熟识后,是不是马上预备大干一场?是否要问一问值不值得干?能不能干?商业工程一般可以从经济性、技术性、法律社会等方面进行可行性分析,但本工程作为一个学习型工程明显无利可图、技术也欠缺(事实上技术正是要学习的东西)、好在工程是合法的。那是否继 续?当然!由于本工程的目标不是在合法的前提下猎取最大利润,而是习得学问和技能,只要你愿意,就可以连续进一步明白“网吧计费治理系统”,Let s go.1.2 需求分析1.2.1 功能需求分析系统需求分析的主要任务是从用户角度考察系统应具有哪些功能及非功能性需求
6、,对于网吧计费治理系统,用户主要是指系统治理员,系统的主要功能可编辑资料 - - - 欢迎下载精品名师归纳总结是:登录、上机、下机、卡治理(发卡、删卡、充值、查询)、机器治理(添加机器、删除机器、查询状态、修改状态),统计功能(日、月费用统计), 口令治理(添加用户、删除用户、修改口令),参数设置(时段费率),使用帮忙。主要使用流程是:治理员登录,依据客户请求上机,依据客户请求下 机。主要功能的用例( use case )描述如下:一 上机1 治理员输入闲暇机器号,上网人输入口令、卡号,请求上机。2 系统验证卡号,检查卡中余额,卡状态3 系统猎取当前系统时间作为上机开头时间4 系统修改该机器的
7、使用标志为“在用”,卡标志为“在用”。5 系统记录上机信息(卡号、机器号、上机时间)6 系统提示上机成功如 1 中无闲暇机器又请求上机的,系统提示“没用闲暇机器”,2 中卡验证未通过,提示“无此卡号”,余额不足,提示“余额不足”, 卡状态为“在用”,就提示“不能一卡多用”。二 下机1 治理员选择被使用的机器号,请求下机2 系统猎取系统当前时间作为下机时间。3 系统运算费用。4 系统显示应缴费用5 系统记录下机时间和此次费用。6 系统从卡中扣费,修改卡状态为“闲暇”。7 系统修改该机器的状态为“闲暇”。8 系统显示本次上机记录信息,提示下机成功三 登录1 治理员输入用户名和密码,请求进入系统2
8、系统验证用户名和密码3 系统显示主界面如一次验证不通过,就提示再输入一次,仍不通过就系统退出。四 卡爱护卡有三种状态:停用、闲暇、在用。发新卡:1 治理员输入卡号(保证卡号唯独)2 治理员输入卡初始金额3 上网人输入用户名、口令4 治理员请求添加新卡5 系统储存卡号、金额、用户名和密码,状态为“闲暇”6 系统提示添卡成功,显示卡号及金额,以便核对。7 治理员将系统生成的有卡号、用户名的纸卡给上网人。充值:1 治理员输入卡号2 系统显示该卡信息(卡号、用户名、余额、状态)3 治理员核对后,输入充值金额4 系统运算并储存该卡总金额可编辑资料 - - - 欢迎下载精品名师归纳总结5 系统显示充值后的
9、卡信息(卡号、用户名、余额、状态)。查询卡信息:1 治理员输入卡号或请求观看全部卡信息2 系统查询卡信息(卡号、用户名、余额)并显示删除卡:1 治理员输入卡号2 系统查询卡余额及状态3 如余额已结清且状态为“闲暇”,就将该卡信息删除4 系统提示删除成功如有余额或“在用”就不能删除五 机器爱护机器有三种状态:停用、闲暇、在用。添加机器:1 治理员输入机器号,请求添加2 系统验证机器号是否重复3 系统添加机器记录信息(机器号、状态为“闲暇”)4 系统提示添加成功删除机器:1 治理员输入机器号,请求删除2 系统删除相应机器信息3 系统提示删除成功查询机器状态:1 治理员输入机器号或请求观看全部机器信
10、息2 系统查询并显示机器信息(机器号和状态)并显示六 治理员口令治理添加用户1 治理员输入用户名、密码和确认密码,请求添加2 系统验证用户是否是新用户,两次输入的密码是否相同3 系统添加用户、密码信息4 系统提示添加成功删除用户1 治理员输入用户名、密码2 系统验证用户名、密码是否正确3 系统删除用户名、密码记录4 系统提示删除成功修改密码1 治理员输入用户名、密码,请求修改密码2 系统验证用户名、密码是否正确3 治理员输入新密码、及确认密码4 系统储存新密码5 系统提示修改成功七 统计治理1治理员输入起始时间(年、月、日),终止时间, 请求按日、月、年汇总可编辑资料 - - - 欢迎下载精品
11、名师归纳总结2系统查询上网记录,运算、统计出时间段的总费用、人次、总上机时间等信息。3系统显示上述信息八 参数治理时段费率设置:0 系统显示当前设置1 治理员设置时间段(时、分)及对应的费率,请求储存2 系统储存设置3 系统提示储存成功超时报警定时器间隔设置九 超时超费报警1 设置定时器为周期触发方式,触发间隔由参数获得,默认为30 分钟2 定时器到时,系统查询当前正在上机的记录,运算其上机时间及费用,运算其卡中余额是否低于最低费用。3 系统提示已超费卡号、机器号,及超的费用本系统除了功能性需求,仍有易用性、牢靠性、安全性等要求,可以在实现上述功能性需求的基础上,进一步实现完善非功能性要求。友
12、情提示: 本文使用“用例”法分析功能性需求,属于面对对象分析(OOA)法,其实质就是从用户角度,通过观看、与用户交谈等方式,记录下用户期望如何使用系统,系统相应需要实现哪些功能。分析用户需求一般由系统分析人员完成,其核心才能是娴熟把握业务领域的学问和沟通的技巧,需求分析的最大难点在于需求的可变性,最令开发人员丧气的莫过于辛苦设计实现了一个功能,用户突然说不需要这个功能了,另一个常见的问题是隐匿性的需求(行业惯例、日常规章)常被用户和分析人员忽视。不同的需求对于客户而言重要性是不同的,一般需要对需求划分优先级,优先级高的优先设计实现。你能否从上述一到九大用例描述中找出哪些用例是高优先级的?1.2
13、.2 业务对象分析依据上面的主要用例描述,可以分析出系统的主要业务对象,它是设计阶段核心类图的基础(不愿定一一对应),这些对象必需实际存在,其行为和属性应与问题领域相关:1 上网卡:主要爱护上网卡的相关信息。卡号、密码、余额、卡用户名、卡状态(在用、闲暇、停用)2 机器:主要爱护上网吧运算机的相关信息。机器号、使用标志(在用、停用、闲暇)、备注3 费用记录:记录每次上机的信息。记录编号、卡号、机器号、开头上机时间,下机时间、费用4 费率记录:起始时间、终止时间,费率5 治理员: 利用 1 4 完成各种业务操作。1.2.3 验收测试要求用户要求开发产品,产品开发完成后,需要交付用户验收,验收要求
14、常常是合同中的重要组成部分,这是一个必经的环节,主要思路是依据用户使用的过程测试系统,越频繁使用的功能越要多测试。本系统功能性需求验收测试的基本要求如下:前置条件:可编辑资料 - - - 欢迎下载精品名师归纳总结1 除口令表有初始用户名和密码外,各库表为空。2 程序安装配置正确,能正常启动运行。一 初始化数据1 启动程序,进入“卡爱护”,选“发新卡”,输入一条数据记录,退出,进入“信息浏览”,查看记录是否已被正确加入。退出“信息浏览”,再进入 “发新卡”,连续发 3 张卡,其中有张卡余额为0。再进入“信息浏览”,查看记录是否已被正确加入。2 同理按 1 ,添加机器。3 进入“费率爱护”,设置费
15、率。二 功能测试1 上下机测试。进入“上机”,观看上机界面,有无可用机器,按说明操作上机,连续上机3 次,第一次正确输入,其次次输入不存在的卡号,第三次输入错误口令。进入“下机”界面,看有无正确的上机,连续下机两次。观看输出 信息界面,看内容是否正确(金额、卡号,时间,费用)。已下机器是否已被 同步从上机下拉表中清除。再进入“上机”,比对可选闲暇机器是否正确,输 入已上机用户的卡号,观看结果。输入卡金额不足的卡号,观看结果。不输入 任何值,直接按确认的结果。2 统计测试,进入“统计”功能,按日,月,年查询统计,与库中实际数据比对,不同日、月、年分别查 2 次3 进入“卡爱护”,进入“卡充值“,
16、输入余额不足卡号,给卡充值,进入 “信息浏览”,查看卡充值是否正确,并以此卡号上机。再进入“卡爱护”的 “信息浏览”,查看记录。然后选“删除卡”,连续删2 张卡,应不能删除在线卡,并能标识出卡余额,以便清帐。进入“信息浏览”,查看记录是否已被正确删除。正在上机的不能被删除。选“修改密码”,输入正确的用户名、口令,修改成新口令。进入“信息浏览”,查看口令是否已更换。进入“上机”,以新口令上机。4 同 3 测试“机器爱护”中的删除机器功能,应不能删除在线机器5 测试“费率爱护”,退出程序,重启动,进入“费率爱护”,修改费率,上下机,观看费用运算结果。6 测试超时报警功能:发一张新卡,初始额刚达到最
17、低标准,以此卡上机,为缩短超时等待时间,可设置定时器间隔为1 分钟,等待 2 分钟,看系统是否能正确报警。7 测试帮忙功能。依据帮忙说明使用系统,验证帮忙说明的正确性。友情提示: 测试是保证程序质量的基本手段,一般可分为单元测试、集成测试、系统测试、验收测试,其中验收测试一般由用户在真实的运行环境下测试系统,是用户确认系统符合要求的关键环节,你开发的系统必需通过上述最基本的验收测试。 并不是整个系统完成后才可以进行上述测试,完成相应模块后就可以有针对性的测试,验收测试的内容经过分解后是单元测试、集成测试、 系统测试的基本依据,测试工作并不是从编码时才开头的,在需求分析阶段就已开放(如依据用例提
18、出验收测试要求)。有的IT 公司内部的质量部门在产品正式交付用户前,也会做类似的测试,以保证用户验收时一次通过。1.3 系统设计1.3.1 总体设计可编辑资料 - - - 欢迎下载精品名师归纳总结一 系统体系结构一般要确定系统的体系结构,主要模块,系统运行环境(如操作系统、数据库),开发平台及语言。本系统主要运行在windows 系列平台上,数据库使可编辑资料 - - - 欢迎下载精品名师归纳总结用 ACCESS使,如下图所示:用 eclipse开发系统。接受两层 C/S 体系结构。系统体系结构图可编辑资料 - - - 欢迎下载精品名师归纳总结图形界面SWING客户端服务端业务规律SQL数据库
19、ACCESS数据拜望( JDBC )图 1 系统体系结构客户端分 3 层,图形界面层(接受java 的 SWING设计)负责与用户交互,业务规律层就依据用户的请求执行各种功能 如上、下机等 ,数据拜望层主要依据业务规律层的请求通过JDBC/SQL存取数据库。数据库使用ACCES,S 可依据情形使用其他数据库(如SQL Server ), 客户端基本不做修改,仅有的少量修改也只在数据拜望层。客户端与服务端在物理上可以运行在一台机器上,也可以分别运行在不同机器上。二 系统功能模块及主要类系统的主要功能模块如图2所示:主模块登录上机下机帮助卡爱护统计机器维护参数维护口令维护发卡充值查询删除卡添加机器
20、删除机器查询添加用户更改口令删除用户可编辑资料 - - - 欢迎下载精品名师归纳总结可据此设计菜单,划分模块。系统主要类图如下:图 2 系统模块图可编辑资料 - - - 欢迎下载精品名师归纳总结图 3总类图的画法基本遵循视图层、业务规律层、数据模型及数据库拜望层的自上而下的次序,其中视图层中的视图由于较多未画出,主要的业务规律把握类是 BusinessManager,用户的上下机请求,通过界面的大事机制,在大事处理程序中会调用BusinessManager 中的方法,然后再调用xDAO类方法,在xDAO类中一般先通过 DBConnection 猎取连接,再通过 JDBC/SQL拜望数据库。Ca
21、rdComputerRecordManager类是“值对象”,主要是存放相应的属性,方 法也是 setXgetX类方法,“值对象”常作为参数在各种方法中传递。三 体会共享1 客户端基本接受三层结构(视图View、把握 Controller、模型 Mode),层与层间耦合性较小,提高了整体的可扩展性、可重用及抗变动才能。缺点是要求预先设计好,对设计水平要求高,不过一旦形成模式,养成习惯,能“照葫芦画瓢”,也是提高设计水平的捷径。2 使用 xDAO类将业务规律和数据库拜望隔离,只要xDAO对上供应的接口不变,以后数据库存取代码发生转变也不会影响上层代码(如业务规律层)。接口中的参数主要是“值对象”
22、, 这样即使 CardComputerRecordManager类中的属性发生转变,由于“值对象”的封装,对接口的影响也不大,缺点是假如 “值对象”本身很大,而又只用到其中很少的属性,就对性能和内存铺张较大。与此对应,比较一般的设计是在大事处理代码中就实现业务规律(如验证、运算、上下机)、猎取数据库连接并通过 JDBC拜望数据库,这样做的好处是实现较简洁、符合一般过程性思维(常用于初始的或原型系统的开发中),缺点是代码一旦需要修改,就改动较多、且简洁出错,代码重用性差。3 使用 DBConnection 类统一完成连接的猎取和释放,好处是连接部分代码可重复使用,假如连接参数(如连到不同的数据库
23、)改动,只需更换DBConnection 类中的相关参数属性(当然更好的做法是将这些连接参数放在配置文件中,这样可以只修改配置文件,无需修改程序),另外仍可以为了提高性能扩展成“连接池”,同时对使用它的 xDAO类没有影响。友情提示: 假如你不能懂得上述描述,也不必担忧,依据你的直觉去开发系统,假如你一帆风顺,那么你确定是这方面的天才,假如遇到各种问题,上述的文字可供参考,同学之间可以相互沟通,老师也愿意为你效劳,勤思、善 问、实干是快速提高水平的不二法门。1.3.2 详细设计详细设计主要是关注模块一级的设计,一般有界面,核心算法及处理流程,数据库表(表、属性及表间关系)的设计。由于模块较多,
24、下面选择几个典型模块分析设计,其中“体会共享”,揭示难点的同时,也介绍了相应的解决方法及设计体会。1.3.2.1 数据库设计数据库设计主要是依据分析和概要设计中发觉的对象和类,确定哪些对象需要长期储存,然后将对象属性及对象间关系转化成关系表。经过分析Card、Computer、Record、Manger 需要储存在数据库中,将Config参数配置信息储存在文件中。其中 Card、Computer、Record 的关系如下图所示:图长期对象属性及关系图可编辑资料 - - - 欢迎下载精品名师归纳总结一条 Record 记录必有对应的一个Card 及一台 Computer,对于未用机器及卡, 就
25、没有 对应 的 记录 。 将 其 转 换为 关系 表 时, 关键 是 在 Record中 设置CARDID,COMPUTER作ID为外键指向 Card 和 Computer。共设计出四张表:1. CARD表名称编码数据类型卡号ID (主键)VARCHAR( 20 )可编辑资料 - - - 欢迎下载精品名师归纳总结用户名USERNAME (非空)密码PASSWORD (非空)VARCHAR( 20 ) VARCHAR( 15 )可编辑资料 - - - 欢迎下载精品名师归纳总结卡状态STATUS(非空)INTEGER余额BALANCE(非空)DOUBLE 2.COMPUTER表名称编码数据类型机器
26、号ID (主键)VARCHAR( 10 )状态STATUS(非空)INTEGER备注NOTESVARCHAR( 200 )3. RECORD表名称编码数据类型记录号ID (主键)VARCHAR( 20 )卡号CARDID(非空)VARCHAR( 20 )可编辑资料 - - - 欢迎下载精品名师归纳总结机器号COMPUTERID ( 非空)VARCHAR( 10 )可编辑资料 - - - 欢迎下载精品名师归纳总结上机时间BEGINTIME(非空)DATE下机时间ENDTIMEDATE上机费用FEEDOUBLE4. Manager表名称编码数据类型用户名USERNAME(非空)VARCHAR( 2
27、0 )口令PASSWOR(D 非空)VARCHAR( 20 )体会共享: 数据库设计一般相对独立,接受的主要方法是将对象模型转化为数据库关系模型,也可以接受传统的设计出E-R 图,再定关系表的方法。即使是简洁数据库的设计如从有用角度动身也需要考虑多方面的问题。第一基本的是确定有哪几张表,表间关系,然后是表中的字段,比较麻烦的是确定字段的约束(主键、非空等),字段数据类型,范式的调整等,由于此时会考虑到储备可编辑资料 - - - 欢迎下载精品名师归纳总结空间、性能、易编程、数据质量等方面的因素。如定义“用户名”字段要有多大,就需要在储备空间节省和适应性间权衡,定义的较小,遇到长名字的情形,程序不
28、能适应。定义的过大,对于大多数情形可能又会铺张储备空间,一般宁愿定义的大些,以空间换取适应性。再比如确定哪些字段为“非空”,从编程角度看必需保证“非空”字段有值,这会增加验证“非空”字段程序的代码量,对用户的约束也加强,有些值要求用户必需输入,如口令就不能为空。但如答应字段可以为“空”,如机器状态字段,就机器的当前状态就可能难以确定,影响数据质量。一个基本的方向是“约束”多,就编程的代码量会变大,性能会下降,但数据的质量会得到提高。在 Record 表中“下机时间”和“上机费用”没有定义为“非空”, 是由于上机时这两项不能确定,只能填写部分上机记录信息。一般数据库表结构的变动对于程序的影响较大
29、,在程序设计上可通过xDAO类尽量消减变动的影响,在实现阶段应防止对数据库结构大的改动。1.3.2.2 上机模块设计一 界面设计界面设计主要是依据功能要求构建界面,界面中的每个元素均应有其作用,以支持功能的实现,界面设计仍要考虑到界面风格的一样、符合一般window 应用GUI 的规范。设计应简洁有用,防止在细节上(如字体、颜色)耗费时间。上机模块参考界面如图 4 所示:图 4 参考界面二 上机流程1 初始化(1) 显示界面( 2)猎取闲暇机器(3) 将闲暇机器号加入下拉列表2上机处理过程:(1) 验证机器号、卡号、密码是否为空(2) 依据卡号、密码猎取卡对象(3) ) 如卡对象为空就说明卡号
30、或密码错,给出提示“卡号或密码错”,要求重输(4) 判定卡状态,如卡正在使用就给出提示“不能一卡多用”(5) 运算卡中余额,如低于设定值,就提示“余额不足”(6) )修改卡状态为在用,修改机器状态为在用,猎取上机时间,将上机时间、机器号、卡号储存到记录对象,再通过RecordDAO在库中添加一条新上网记录。(7) )提示上网成功三 体会共享1 上机处理中的第6 步要在一个完整的“事务”中完成,对卡、记录、机器数据的更换添加要保证要么全部更换成功,要么都不更换,以保证数据的一样性。2 费用运算是按时段运算的,需要考虑跨时段费用如何运算,另外为了降低复杂性,可规定时段只能为三段,时间精确到分,费用
31、精确到角。3 记录 ID 如何保证唯独且自动增长。基本有两种:一是编程把握,插入新记录可编辑资料 - - - 欢迎下载精品名师归纳总结前猎取当前最大记录号 , 通过 select maxid from record,加 1 后,将 ID 及其它信息写入,如有多用户拜望该表,就上述过程要放在一个“事务”中。二是利用关系数据库供应的“自增字段”特性,将ID 设置成“自增字段”,由数据库负责每添加一条记录就将 ID 加 1。1.3.2.3 下机模块设计一 界面设计下机模块主要依据用户请求(报出卡号/ 机器号),治理员依据卡号 / 机器号执行下机操作,参考界面如图5 所示,大的文本空白文本框用于显示下
32、机记录信息。当然仍有其它的设计方式,如显示当前上机的全部记录信息,选中其中一条执行下机操作。图 5下机模块界面二 下机流程1 治理员输入机器号或卡号,请求下机2 系统猎取机器号,据机器号猎取相应记录对象,要处理机器号错误的情形3 系统依据记录对象猎取该记录对应的卡对象4 系统运算费用,并比较卡对象余额,如不够就提示“余额不足”,并显示余额5 系统从卡中扣费,修改卡状态为“闲暇”。系统修改该机器的状态为“闲暇”。系统更新记录信息(下机时间、费用)。6 系统显示本次上网完整的记录(Record)信息及卡余额,并提示下机成功注: 下机处理 4 中修改三表的操作应作为一个“事务”完成。1.3.2.4
33、发新卡模块设计一 界面设计发卡需要输入卡号、用户名、密码、金额,参考界面如下图所示。界面设计布局应简洁一样,从用户友好性动身,供应了输入提示,增加了“确认密码”,以提示用户记住密码,输入的密码用* 号显示以提高安全性。虽然有了提示但在代码中仍需对输入进行验证,如金额不能为负值,以防止误输及恶意输入。当然从口令强度考虑,要求密码只输入数字和字母又是不妥的,相反可提示用户输入特殊字符及输入的最小字符数。所以此界面虽简洁,但已涉及到界面的视觉风格、用户友好性、安全性考虑。图 发卡界面二 发卡流程1 系统从界面猎取全部信息,依次判定是否为空2 判定金额是否大于 03 判定密码和确认密码是否一样,4 判
34、定密码和用户名是否在最小及最大长度之间5 判定卡号是否有效(唯独)6 生成 Card 对象,请求 CardDao向 Card 表中添加一条新记录。7 提示卡添加成功,并显示卡号和金额三 体会共享1 输入数据的验证是难点,验证输入数据是保证程序牢靠性的重要措施,例可编辑资料 - - - 欢迎下载精品名师归纳总结如:如不限制用户或口令长度在相应数据库表字段设定的范畴内,一旦将超长的用户名写入数据库就会产生数据被截断或数据库反常,而这完全可以在用户输入时予以把握。验证输入数据的难点之一在于在验证的代码量和限制大多数常见错误间取得平稳,过多的验证代码无疑会增加编码量和难度,但没有验证或很少验证又使程序
35、牢靠性太差而难以有用。但也有一些常规体会可循,如是否限定字符数据的长度,验证是否为空、数字数据是否在范畴内等,有些输入控件供应了限定输入长度等功能,应当充分利用以削减编码量。一般验证可遵循如下策略:输入前提示如何输入,输入后验证,验证不通过就再提示(如通过对话框)。输入验证的时机:可以在输入一项后马上验证该项输入是否合法,也可以全部输完后再逐项验证,某项如验证不通过,除给出提示,从用户友好性角度,仍可以将焦点定位到出错项(缺点是代码复杂性增加)。验证通过后的数据在程序内部传递时,一般无需重复验证。2 卡号的猎取。最基本的方式由治理员手工编号并保证卡号的唯独性,但卡一旦多了,这会成为治理员的负担
36、,因此,可以由系统自动编号,如规定卡号从1 依次递增编号,这样卡号就无需输入。可在每次增加新卡时,从卡表中猎取最大 ID,加 1 后作为新增卡的卡号。也可以猎取当前时间转化成字符串作为ID,一般时间不会重复,可保证ID 唯独,优点是生成ID 无需拜望数据库,仍可以代表发卡时间。1.2.3.5 删除卡模块设计一 界面设计删除卡参考界面如下图所示:图 删除卡界面二 删除卡流程1 治理员输入卡号2 系统依据卡号,请求 CardDAO查询有无该卡3 如返回的卡对象存在,就执行下一步,否就提示“卡号错误”,要求重输。4 系统从 Card 查询卡状态5 如为“在用”,就提示“不能删除在用卡”6 查询余额,
37、如有就对话框提示“请结清余额”7 如余额已结清且状态为“闲暇”,就将该卡信息删除8 系统提示删除成功三 体会共享1如何删除卡:一种是真删,卡记录信息从数据库中永久删除,接受delete from where语句,此时仍要留意,由于 Record 中有指向 Card 表的外键,删除涉及到“级连删除”这一概念,即在Record 中包含该卡号的记录是否要一起删除。一般不答应“级连删除”,由于Record 中记录是统计费用的基本依据,删除后会使统计数据失真。仍有一种是假删,即标注卡状态信息为“停用”, 只需用 update语句更换其状态即可,这样做好处是:一是可以完整保留已发卡信息,二是易于重新复原已
38、删卡。坏处是:如有大量卡(数以十万计)长期不用,会占用数据库空间,影响拜望卡表的性能。可编辑资料 - - - 欢迎下载精品名师归纳总结2一般数据库中数据删除后难以复原,同时难以防止由于意外导致的数据损坏,因此重要数据的储存备份必不行少,本系统没有要求做数据备份功能,由于数据库治理工具一般会供应相应功能,只是要求用户会使用数据库治理工 具,所以从便利用户使用考虑,程序本身供应备份(手动或定期自动备份)功能也是必要的。1.4 系统实现系统实现主要运用集成开发环境、Java、数据库工具依据设计制做出实际的界面,编写代码,生成数据库表,进行测试,这也是初级程序员所要完成的 主要任务,在此列出部分典型代
39、码,仅供参考。1.4.1 数据库拜望对数据库的基本操作是:增、删、改、查,数据库连接的建立、关闭,其中的难点是拜望数据库的反常处理和参数化SQL,现举例如下:1 猎取连接的代码:private static final String DRIVER_CLASS = sun.jdbc.odbc.JdbcOdbcDriver。 /定义驱动类privatestaticfinalStringDATASOURCE= jdbc:odbc:NetBarDataSource。 /定义 ODBC数据源public static Connection getConnction Connection dbConnec
40、tion = null。try Class.forNameDRIVER_CLASS。dbConnection = DriverManager.getConnectionDATASOURCE。 catch Exception e e.printStackTrace。return dbConnection。该代码针对 JdbcOdbcDriver驱动, ODBC源名为 NetBarDataSource ,未支持口令验证。2 查询代码:下面是依据用户名和口令验证卡是否有效的代码,需要留意的是查询参数值需要加单引号:/* judge card is valid or not.* param card
41、Card* return boolean*/public boolean isValid Card card boolean isValid = false。Connection dbConnection = null。PreparedStatement pStatement = null。ResultSet res = null。try 可编辑资料 - - - 欢迎下载精品名师归纳总结dbConnection = ConnectionManager.getConnction。/构建查询 SQL语句String strSql = select * from card where id= + c
42、ard.getId+ and password = + card.getPassword + 。if dbConnection .= null System.out.printlndbConnection .= null。/查询操作pStatement = dbConnection.prepareStatementstrSql。res = pStatement.executeQuery。/ 执行 SQL语句,并返回结果if res.next /如 res 有记录说明卡存在isValid = true。 catch SQLException sqlE sqlE.printStackTrace。
43、finally ConnectionManager.closeResultSetres。/ 关闭结果集ConnectionManager.closeStatementpStatement。ConnectionManager.closeConnectiondbConnection。/ 关闭连接return isValid。3 更新代码下面是更新机器状态的代码,其中SQL语句中,“ id =.”是动态参数,详细值设置在 pStatement.setString1, computer.getId/* record the computer have used.* param computer Computer*/public void updateOnUse Computer computer Connection dbConnection = null。PreparedStatement pStatement = null。try String strSql =update computer set Status =1 where id =.。 。pStatement = dbConnection.prepareStatementstrSql。pStatement.setString1, computer.getId