面向对象程序设计 商品销售系统 Java深入面向对象编程.docx

上传人:小飞机 文档编号:1997632 上传时间:2022-12-30 格式:DOCX 页数:69 大小:1.38MB
返回 下载 相关 举报
面向对象程序设计 商品销售系统 Java深入面向对象编程.docx_第1页
第1页 / 共69页
面向对象程序设计 商品销售系统 Java深入面向对象编程.docx_第2页
第2页 / 共69页
面向对象程序设计 商品销售系统 Java深入面向对象编程.docx_第3页
第3页 / 共69页
面向对象程序设计 商品销售系统 Java深入面向对象编程.docx_第4页
第4页 / 共69页
面向对象程序设计 商品销售系统 Java深入面向对象编程.docx_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《面向对象程序设计 商品销售系统 Java深入面向对象编程.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计 商品销售系统 Java深入面向对象编程.docx(69页珍藏版)》请在三一办公上搜索。

1、淮海工学院计算机工程学院实验报告书课程名:面向对象程序设计 实验名称: Java深入面向对象编程 商品销售系统 班 级: 组 长: 组 员: 评语:成绩: 指导教师: 批阅时间: 年 月 日 面向对象程序设计 实验报告 - 68 -一实验目的1. 掌握Java面向对象编程的初步知识,理解类的定义和使用,会正确运用Java的非访问控制符和访问控制符来实现面向对象的编程思想;掌握Java类的修饰符、访问控制符的使用;2.培养团队合作精神和沟通能力。二实验题目 以与大学生学习、生活、娱乐相关的信息服务为例,各团队自选题目,用面向对象的方法进行需求分析,划分功能模块,每位成员负责其中某些模块的设计与实

2、现。 首先练习类的定义和使用,包括类、属性和方法的各种修饰符的使用、方法与构造函数的定义与使用,练习修饰符的使用。三要求1.采用Application图形界面显示,请注意用户界面的友好性;2.源程序中必需对程序功能、方法、属性等加适当的注释; 3. 每个人一个包(即用英文命名的文件夹),所有类的命名都要用设计者姓名拼音缩写加若干能表达功能意义的字符组成;4. 每组有一个组长,组长除完成本身任务外,还要负责设计作为程序入口的主类、系统总的说明文档;每位成员负责编写自己每次的说明文档;5.作业由组长以团队形式提交到教学平台上,压缩包名为三个成员汉语名字合成,第一个为组长。 6. 提交时间:四、实验

3、步骤与源程序1. 选题与团队分工u 选题: 商品销售系统u 分工:角色姓名承担的具体任务组长强余彬程序的主入口、客户类、修改产品、修改客户、下单及一些界面类组员李宏志产品类、销添加删除客户、产品的类组员谢超初始化数据类、查询客户、产品类、用户类2. 系统需求分析 u 系统功能描述商品销售系统系统管理员:添加客户资料、删除客户资料、修改客户资料、查询客户资料、添加商品、删除商品、修改商品、查询商品、下单、取消下单、修改密码(包括销售人员)销售人员:添加客户资料、修改客户资料、查询客户资料、修改商品、下单、取消下单、修改密码u 系统用例图3. 系统类图设计系统类图 (强余彬) 搜查实体类异常类 (

4、李宏志) (谢超)4. 源程序 五、测试数据与实验结果登陆界面输入错误系统管理员主界面修改客户(失败)修改客户(成功)下单下单失败添加产品删除产品修改产品修改密码(输入密码错误)未输入修改密码输入密码不一致修改成功修改销售人员密码(账号错误)修改销售人员密码成功李宏志: 谢超六、结果分析与实验体会(强余彬)本次实验对系统的功能没有做修改,主要是优化了系统的结构。首先是本次实验大量运用了继承,尤其是界面,大多数的界面继承的是ReviseClientGUI这个界面,重复利用了界面上的布局以及标签,大大简化了工作量以及代码的长度,有些界面是继承的一些相似的界面,例如删除客户继承了删除产品的界面,而删

5、除产品又是继承于修改客户这个界面。其次,本次实验添加了一个自定义异常类,当创建新用户的时候密码低于三位数会自动派出此异常。本次试验还添加了一个Search类,里面有一些常用函数,例如查找客户、查找产品、比较字符串、删除客户等方法,在其他界面中要用可以调用此嘞的一些方法,实现了类的封装。此外,本次实验还将以前在输入一些非法数据会产生的异常给补上了,例如有NullPointerException、NumberFormatException等等。有一些界面只需要 接收一个用户输入的数据,所以就是用了JOPtionPane类中的showInputDialog函数用来接收数据,大大简化了代码量,优化了系

6、统性能。本次实验画了整体系统的类图之间的关系,大大加深了我对此系统的了解,形成了一个严密的框架,对于今后的学习会有很大的帮助。老师的代码对于我们的学习是有很大的帮助的,学习是一件长期的事,实践着“痛并快乐着”的感觉是非常好的,我会继续坚持下去的。(李宏志)本次实验主要运用了属性以及函数的继承,隐藏,重载等操作。通过遮羞方法的运用,能够明显简化代码的复杂度,尤其是继承的运用,通过继承其他属性函数的操作,从而简化程序的复杂度,此外还需要运用文本域的隐藏操作,对于新的操作需要重新定义标签和文本域,另外在继承操作时需要注意继承的对象公共和私有,来避免错误。在编程时会出现一些异常,对于异常的处理,可以通

7、过public void p(int x) try catch(Exception e) finally 语句来捕获异常,如果在try语句中出现异常,则会被抛出。对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。本次实验还练习了通过visio软件画系统类图和用例图,包括实体类、界面类,特性与操作的参数的输入,顶层包的加载等等。(谢超)第三次试验是在第二次的基础上的拓展,在这次试验中我完成了我所有的包中的文件的测试,以及完成了相应的文件的类图的画图。在类图的画画过程中还是有一些不懂得地方,对于系统中的集体的操作和特性有的区分的不是很清楚,在画类图的时候参考了老师的类

8、图的画法,还有同学的帮助。这次试验掌握了类图的画法,和对继承的一些了解。 源代码/* 一个简单的校园卡系统设计示例 版本:Ver 2.0 作者:强余彬 时间:2010.5.1 */*对用户商品进行查找操作的业务类*/package SalesSystem.qyb; / 定义系统所属包名import SalesSystem.xc.*; /引入实体类所在包import SalesSystem.lhz.*;import java.util.*;import javax.swing.JOptionPane;public class Search /定义一个业务类,实现查找操作/Client clien

9、t;public int clientflag;public int goodsflag;public Client findClient;public Goods findGoods;public Search()clientflag=0;goodsflag=0;public Client searchClient(String name)for(int i=0;iClient.lth;i+)tryif(Init.init.clienti.getId().equals(name) findClient= Init.init.clienti; clientflag=1; catch(NullP

10、ointerException ee)if(clientflag=0)findClient= null;return findClient;public Goods searchGoods(String tmp)for(int i=0;iGoods.lth;i+)tryif(Init.init.goodsi.getName().equals(tmp)findGoods=Init.init.goodsi;goodsflag=1;catch(Exception ee)if(goodsflag=0)findGoods= null;return findGoods ;public void delet

11、eClient(String tmp)int flag=0;for(int i=0;iClient.lth;i+)if(Init.init.clienti.getId().equals(tmp)int j;for( j=i;jClient.lth;j+)Init.init.clientj=Init.init.clientj+1;Init.init.clientj=null;Client.lth-;JOptionPane.showMessageDialog(null,删除成功!);flag=1;if(flag=0)JOptionPane.showMessageDialog(null,不存在此顾客

12、,无法删除,警告,JOptionPane.WARNING_MESSAGE);JOptionPane.showInputDialog(null ,输入客户的名字,删除客户,JOptionPane.PLAIN_MESSAGE);public void deleteGoods(String tmp)int flag=0;for(int i=0;iGoods.lth;i+)if(Init.init.goodsi.getName().equals(tmp)int j;for( j=i;jGoods.lth;j+)Init.init.goodsj=Init.init.goodsj+1;Init.init.

13、goodsj=null;Goods.lth-;JOptionPane.showMessageDialog(null,删除商品成功!);flag=1;if(flag=0)JOptionPane.showMessageDialog(null,不存在此商品,无法删除);tmp=JOptionPane.showInputDialog(null ,输入产品的名字,删除产品,JOptionPane.PLAIN_MESSAGE);public static boolean isEmpty(String tmp)tryif(tmp.length()=0)JOptionPane.showMessageDialo

14、g(null,您未输入任何字符,错误,JOptionPane.ERROR_MESSAGE);return false;elsereturn true;catch(NullPointerException ee)return false; /* 一个简单的销售系统设计示例 版本:Ver 2.0 作者:强余彬 时间:2010.4.25 */* 销售系统客户实体类 */package SalesSystem.qyb;import SalesSystem.xc.*;public class Client extends User /继承了user实体类private String Gender;pub

15、lic String Goods=new String15;/购买的商品名称public int Price=new int15;/相应的价格public int Amount=new int15;/买的数量private int goodslth;staticlth=0;public Client(String id)super(id);Id=id;Gender=男;UserType=客户;lth+;goodslth=0;public Client(String id, String sex) /构造用户1,默认身份为销售人员super();Id=id;Gender=sex;UserType

16、=客户;lth+;goodslth=0;public int getGoodslth()return goodslth;public void alterGoodslth(int tmp) goodslth=tmp;public String getGender()return Gender;public void alterGender(String sex)Gender=sex;public void buyGoods(String goods,int price,int amount)Goodsgoodslth=goods;Pricegoodslth=price;Amountgoodsl

17、th=amount;goodslth+;public String printGoods()String tmp=产品:;for(int i=0;igetGoodslth();i+)tmp+=Goodsi+、;return tmp;public String printAmount()String tmp=数量:;for(int i=0;igetGoodslth();i+)tmp+=Amounti+、;return tmp;/* 一个简单的销售系统设计示例 版本:Ver 1.0 作者:李宏志 时间:2010.4.7 */* 销售系统产品实体类 */package SalesSystem.lhz

18、;import SalesSystem.qyb.*;import SalesSystem.xc.*;public class Goodsprivate String Name;private int Price;private int TotalAmount;private int Left;public static int lth;staticlth=0;public Goods(String name,int price,int total,int left)Name=name;Price=price;TotalAmount=total;Left=left;lth+;public Goo

19、ds(String name,int price,int total)/初始化余量等于总量Name=name;Price=price;TotalAmount=total;Left=total;lth+;public String getName()return Name;public void alterName(String tmp)Name=tmp;public int getPrice()return Price;public void alterPrice(int tmp)Price=tmp;public int getTotalAmount()return TotalAmount;p

20、ublic void alterTotalAmount(int tmp)TotalAmount=tmp;public int getLeft()return Left;public void alterLeft(int tmp)Left=tmp;public String tostring()String s;s=商品名:+getName()+t价格:+getPrice()+t总量:+getTotalAmount()+t余量:+getLeft();return s;/* 一个简单的销售系统设计示例 版本:Ver 1.0 作者:谢超 时间:2010.4.7 */* 销售系统初始化客户、商品信息类

21、 */package SalesSystem.xc;import SalesSystem.lhz.*;import SalesSystem.qyb.*;public class Initpublic User user1;public User user2;public User user4;public User user3;public Client client=new Client20;public Goods goods=new Goods20;public static Init init=new Init();public Init()tryuser1=new User(强余彬,

22、0000,系统管理员);user2=new User(谢超,0000,销售人员);user3=new User(李宏志,0000,销售人员);catch(UnexpectedCreat ee)System.out.println(ee.toString();client0=new Client(张三,男); client0.buyGoods(铅笔,1,50); client0.buyGoods(文具盒,10,2); client1=new Client(李四,男); client1.buyGoods(铅笔,1,10); client1.buyGoods(本子,2,3);client2=new

23、Client(王五,男);client2.buyGoods(钢笔,9,8);client2.buyGoods(文具盒,10,3);client3=new Client(小红,女);client3.buyGoods(钢笔,9,8);client3.buyGoods(文具盒,10,3);client4=new Client(小明,男);client4.buyGoods(本子,2,10);client4.buyGoods(铅笔,1,20);client4.buyGoods(钢笔,9,2);goods0=new Goods(铅笔,1,1000,800);goods1=new Goods(钢笔,9,30

24、0,280);goods2=new Goods(本子,2,600,590);goods3=new Goods(文具盒,10,200,195);goods4=new Goods(橡皮,1,200,200);/* 一个简单的销售系统设计示例 版本:Ver 2.0 作者:强余彬 时间:2010.5.1 */* 系统管理员图形界面类 */自定义异常类,当创建新用户密码过短时产生package SalesSystem.qyb;import SalesSystem.xc.*;public class UnexpectedCreat extends Exceptionprivate User user; /

25、产生当前错误的User对象的引用private String IllegalPsd; /产生当前错误的非法的密码 public UnexpectedCreat(User tmp,String psd) /构造函数 super(不合法的初始充值数额);/调用父类Exception的构造函数 user=tmp; /初始化两个属性 IllegalPsd=psd; public String toString() /重载父类的方法,给出详细的错误信息 String s; s=创建用户时出错:+user.getId() + 该、用户的密码 +IllegalPsd +不合规定; return s;/* 一

26、个简单的销售系统设计示例 版本:Ver 2.0 作者:谢超 时间:2010.5.1 */* 销售系统用户实体类 */package SalesSystem.xc;import SalesSystem.lhz.*;import SalesSystem.qyb.*;import javax.swing.*;public class Userpublic static int lth;/存的个数protected String Id;private String Password;protected String UserType;/用户类型 管理员、普通用户staticlth=0; public

27、User()public User(String id)/构造用户,默认身份为销售人员,默认密码为0000Id=id;Password=0000;UserType=销售人员;lth+;public User(String id, String psd)throws UnexpectedCreat/构造用户,默认身份为销售人员 /根据用户名和密码,声明了抛出异常this(id); if(psd.length()4) throw (new UnexpectedCreat(this,psd);Password=psd;UserType=销售人员;lth+;public User(String id,

28、String psd,String type) throws UnexpectedCreat/构造用户this(id,psd);/Id=id;/Password=psd;UserType=type;lth+;public String getId()return Id;public void alterId(String id)Id=id;public String getPassword()return Password;public boolean alterPassword(String tmp)/密码新添了判断是否为空和限定密码长度不能太短的功能if(tmp.length()=0)JO

29、ptionPane.showMessageDialog(null,您未输入任何字符,错误,JOptionPane.ERROR_MESSAGE);return false;else if(tmp.length()=3)JOptionPane.showMessageDialog(null,您输入的密码过短,警告,JOptionPane.WARNING_MESSAGE);return false;elsePassword=tmp;JOptionPane.showMessageDialog(null,成功修改密码!);return true;public String getUserType()ret

30、urn UserType;public void alterUserType(String tmp)UserType=tmp; public boolean userTypeJudge(String name,String pwd,String type) if(Id.equals(name) & Password.equals(pwd) & UserType.equals(type) return true; else return false; public boolean userPsdJudge(String tmp,String pwd) if(tmp.equals(pwd) ret

31、urn true; else return false; public String tostring()String s;s=用户名:+getId()+密码:+getPassword()+用户类型:+getUserType();return s;/* 一个简单的销售系统设计示例 版本:Ver 1.0 作者:强余彬 时间:2010.4.7 */* 销售系统主入口类 */package SalesSystem;import java.io.*;import SalesSystem.xc.*;public class Mainpublic static void main (String args

32、)System.out.println(Init.init.user1.tostring();System.out.println(Init.init.user2.tostring();System.out.println(Init.init.user3.tostring();System.out.println(Init.init.goods0.tostring();System.out.println(Init.init.goods1.tostring();System.out.println(Init.init.goods2.tostring();System.out.println(I

33、nit.init.goods3.tostring();System.out.println(Init.init.goods4.tostring();new GUI();/构造一个新窗体对/* 一个简单的销售系统设计示例 版本:Ver 1.0 作者:强余彬 时间:2010.4.7 */* 销售系统主登陆窗口图形界面类 */package SalesSystem;import java.awt.*;import java.awt.event.*;import javax.swing.*;import SalesSystem.lhz.*;import SalesSystem.xc.*;import

34、SalesSystem.qyb.*; public class GUI extends Frame implements ActionListener,ItemListenerTextField txId; /一定一个宽度为10个字符的文本框,用于答案输入TextField txPassword;Label lbTitle;Label lbId;Label lbPassword;Button btOk;Button btCancel;Button btReset;Label type;Choice typeChoice; Font myFont; String chtype;public Us

35、er u;GUI() /构造函数,用来初始化super(主登陆界面); /调用父类构造函数btOk=new Button(确定);btCancel=new Button(退出);btReset=new Button(重置);chtype=销售人员;typeChoice=new Choice();type=new Label(身份:);lbTitle=new Label(商品销售系统 );lbTitle.setFont(myFont);lbId=new Label(用户账号 );txId=new TextField(10);lbPassword=new Label(用户密码 );txPasswo

36、rd=new TextField(10);txPassword.setEchoChar(*);myFont=new Font(黑体,Font.BOLD,20); /定义字体为黑体、加粗、字号18GridBagLayout gbl=new GridBagLayout(); GridBagConstraints gbc=new GridBagConstraints(); setLayout(gbl );/ 设置标题控件的位置gbc.anchor=GridBagConstraints.NORTH; /让标题顶部居中gbc.gridwidth=GridBagConstraints.REMAINDER;

37、 /让标题成为所在行最后(也是唯一)一个组件add(lbTitle,gbc); /设置姓名控件的位置gbc.anchor=GridBagConstraints.WEST; /让ID标签位于左侧gbc.gridwidth=1; /占一个单元格add(lbId,gbc);gbc.gridwidth=GridBagConstraints.REMAINDER; /让ID输入框成为所在行最后一个组件add(txId,gbc);/设置密码控件的位置gbc.gridwidth=1;add(lbPassword,gbc);gbc.gridwidth=GridBagConstraints.REMAINDER;add(txPassword,gbc);/设置身份控件的位置gbc.gridwidth=1;add(type,gbc);add(typeChoice,gb

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号