您好,欢迎访问三七文档
1面对对象编程示例1.需求分析与用例图校园卡信息管理系统主要有两类用户,一是系统管理员,负责对系统信息进行管理,可以实现用户信息维护、办理新卡、卡挂失/卡重置、修改密码、统计充值、统计消费、查询信息等操作;二是普通用户,可以实现修改密码、充值、消费、查余、查询个人消费和充值记录等操作。根据系统功能分析画出的用例图见图2-24,关于用例图的相关知识详见本身第6章。简单的校园卡管理系统管理员普通用户身份验证办理新卡修改密码充值消费查余信息查询用户管理挂失重置图2-24模拟校园卡信息管理系统用例图22.类图的抽象、封装系统需要定义几个类?它们之间是什么关系?各个类应该有哪些属性和方法?各个类、属性、方法分别用什么修饰符来修饰最合理?哪些可以用多种修饰符修饰?用不同的修饰符会产生什么不同的效果?用哪些修饰符会互斥?(1)画出实体类的类图模拟校园卡信息管理系统包括3个实体类:卡用户类CardUsers、校园卡类SchoolCard和校园卡使用记录类CardUseRcords,其中第三个类依赖于前两个类的使用。类图设计分别见图3-7、3-8、3-9。+CardUsers(inUserID:string)+CardUsers(inUserID:string,inUserName:string,inUserPwd:string,inUserSex:string,inUserType:string)+getUserID():string+getUserName():string+seUserName(innewName:string):void+getUserPwd():string+setUserPwd(innewPwd:string):void+getUserType():string+setUserType(innewType:string):void+toString():string-UserID:string-UserName:string-UserSex:string-UserPwd:string-UserType:stringCardUsers图3-7用户类CardUsers的类图3+SchoolCard()+SchoolCard(incardNo:long,inuserId:string,inpwd:string)+setNextCardNo(innewStartNo:long):long+getCardNo():long+getUserID():string+setUserID(inuid:string):void+getPassword():string+setPassword(inupwd:string):void+getCardState():bool+setState(instate:bool):void+getBalance():double+consume(inmoney:double):void+deposit(inmoney:double):void+toString():string-cardNo:long-NextCardNo:long-UserID:string-password:string-balance:double-isUsing:boolSchoolCard图3-8校园卡类SchoolCard的类图+CardUseRecords(incardno:long,initem:string,inmoney:double,intime:string)+getCardNo():long+getUseItem():string+getMoney():double+getUseTime():string+toString():string-CardNo:long-UseItems:string-Money:double-UseTime:stringCardUseRecords图3-9校园卡使用记录类SchoolCardUseRecords的类图对模拟校园卡信息管理系统抽象出校园卡日常业务处理、用户查询、校园卡查询和使用记录查询等四个业务类,类图分别见图4-8、4-9、4-10、4.11,同时增加用户信息维护类和校园卡信息维护类,实现对信息的修改和删除。4+addUser()+reset()-user:CardUsers+userlist:CardUsers-usex:string-utype:string-多个swing控件UserEditJFrame+addCard()+reset()-card:SchoolCard+cardlist:SchoolCard-cardState:bool-i:int-多个swing控件CardEditJFrame图3-10用户类和校园卡类的信息录入图形界面类图+addRecord():void+reset():void+changePwd():void+deposite(inmoney:double):void+consume(inmoney:double):void+lost():void+changeUID(inuid:string):void-card:SchoolCard-user:CardUsers-recordlist:CardUseRecords-utime:string-item:string-money:double-多个swing控件CardOperationJFrame+SearchRecord(incardlist)+searchByNo(incno:long):void+searchByItem(incno:long,initem:string):void+outputData(inrecords):void+tempcard:SchoolCard-recordset:CardUseRecords-多个swing控件SearchRecordJFrame图4-8校园卡使用记录查询类图4-9校园卡日常业务处理类+SearchUser(inuserlist)+searchByID(inuid:string):void+searchByName(inuname:string):void+outputData(inusers):void+tempuser+userSet-多个swing控件SearchUser+SearchCard(incardlist)+searchByNo(incno:long):void+searchByID(inuid:string):void+outputData(incards):void+tempcard+cardSet-多个swing控件SearchCardJFrameJFrame图4-10用户查询类图4-11校园卡查询类53.建立Java应用程序项目实训例题选用最新版本的NetBeans6.9.1作为系统开发环境,建立一个项目Java应用程序,名称为SchoolCard,点“浏览”选定项目保存位置,去掉“创建主类”复选框前面的勾,设置好的界面见图2-25。图2-25在NetBeans中新建项目SchoolCard项目新建成功后,即可在其中新建java类。方法是:右击“源包”中的缺省包,选“新建”中的“java类”,在对话框中输入类名和包名,见图2-26、2-27所示。6图2-26在项目中新建Java类图2-27新建Java类时为类和包命名单击“完成”,就可以在右侧类代码编辑窗口输入代码了,如图2-28所示。7图2-28在源编辑窗口编写Java类代码如果觉得项目初始命名不合适,可以修改。方法是:右击项目名称,从快捷菜单中选择“重命名”,在对话框中输入新名称,如果希望同时修改文件夹名称,可勾选“同时重命名项目文件夹”,之后单击“重命名”按钮即可。图2-29对项目文件重命名团队其它成员按同样方法建立同名项目,将图2-27中包名分别换成cardGUI、operationGUI即可,以便今后的项目集成、发布。特别提醒:NetBeansIDE默认的编码为UTF-8,为避免后期数据库操作过程中,读写汉字字符时产生乱码,建议进行类设计之前,将项目属性中的编码改为GB2312,如图2-30所示。8图2-30项目属性窗口(2)根据类图编写类代码1)编写CardUsers类代码在NetBeans中,打开实验1中初步建立的CardUsers类,输入完5个属性后,右击类名,从快捷菜单中选择“插入代码…”,选择“getter和setter”,在对话框中勾选需要的字段,之后单击“生成”按钮,生成的代码将被自动插入窗口,如图3-11所示。对构造函数(即“构造方法”)、toString()方法也采用同样方法生成,必要时可按需修改生成的代码。9图3-11插入自动生成的getXXX()和setXXX()方法编写完成的CardUsers类源代码如下:102)编写SchoolCard类代码按同样方法编写SchoolCard类代码,在自动生成的基础上进行了少量修改,源程序如下。113)编写CardUseRecords类代码按同样方法编写的CardUseRecords类代码如下。12(3)设计实体类的图形用户操作界面1)设计录入用户信息的图形用户界面在项目窗口右击对应的包,从快捷菜单中选“新建”、“JFrame窗体”,在弹出窗口中输入图形界面文件的类名,如:UserEdit,见图3-12所示。图3-12新建图形用户界面在中部的“设计”窗口开始界面设计,从右侧组件面板中选择需要的控件放置到界面预期位置上,设置有关属性,UserEdit类所包括的控件如图3-13左侧检查器窗口所示。图3-13用户信息录入界面UserEdit类的控件组成13点击工具栏上的“预览设计”按钮,可看到UserEdit类的界面设计效果如图3-14所示。图3-14用户界面UserEdit类的设计效果2)设计录入校园卡信息的图形用户界面校园卡信息录入用户界面设计结果如下。图3-15卡信息录入界面CardEdit类控件组成其它界面待实验3再设计。14(4)编写有关控件、按钮响应事件的代码1)为用户界面UserEdit类编写代码在“源”窗口的最下方声明对象和变量:然后为用户界面UserEdit类的两个单选钮和两个按钮编写事件响应代码。右击单选钮“男”,从快捷菜单中选择“事件”→“Item”→“itemStateChanegd”,在打开的“源”窗口编写事件响应代码;对单选钮“管理员”采取同样操作。两个单选钮的事件代码编写结果如图3-16所示。图3-16用户界面“男”和“管理员”单选钮的选择事件响应代码接下来右击“添加”按钮,从快捷菜单中选择“事件”→“Action”→“actionPerformed”,在打开的“源”窗口编写事件响应代码;对按钮“清空”采取同样操作。两个选钮的事件代码编写结果如图3-17所示。15图3-17用户界面“添加”与“清空”按钮的单击事件响应代码2)为校园卡界面CardEdit类编写代码在“源”窗口的最下方声明对象和变量:并在“源”窗口的构造方法中加后面的两行代码:然后为校园卡界面CardEdit类的“卡号”文本框、“卡可用”复选框和两个按钮编写事件响应代码。16图3-18校园卡界面“卡号”文本框的得到焦点事件响应代码图3-19校园卡界面“卡可用”复选框的状态改变事件响应代码17图3-20校园卡界面“添加”与“清空”按钮的单击事件响应代码(5)测试各实体类与图形界面的运行情况用户类和校园卡类图形界面的运行情况分别如图3-21、3-22所示。图3-21用户信息录入图形界面运行结果18图3-22校园卡信息录入图形界面运行结果19设计思路提示如下:根据类之间所定义的继承关系,该如何定义属性和方法才实现继承和覆盖、重载?如何体现个性与共性的有机统一(即将共性的属性和方法放在父类中定义,将个性的属性和方法放在子类中定义)?如何提高程序的健壮性?如何处理异常?如何利用所设计的界面一次实现对多个数据的输入、保存、处理、查找(用数组还是向量)?数据类型如何转化?
本文标题:校园卡类设计示例
链接地址:https://www.777doc.com/doc-6156445 .html