Java第七次作业

《Java技术》第七次作业

(一)学习总结

  • JFrame类创建窗体对象。
  • Dimension类设置组件大小。主要用.setSize(int width,int weigth)设置显示的宽和高。
  • Point类设置组件显示位置。主要用.setLocation(int x,int y)设置显示的坐标。
  • 让组件显示:.setVisible(true),重点必须写。
  • JLabel:标签组件,用于显示信息,一般不能直接更改。
  • JButton:按钮组件。

2.Java支持四种布局

  • FlowLayout 流布局
  • BorderLayout 边界布局
  • GridLayout 网格布局
  • CardLayout 卡片布局

3.Java事件处理机制

  • 事件源:
    事件源是一个产生(或触发)事件的对象。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件。
  • 事件
    事件就是承载事件源状态改变时的信息对象。
  • 事件监听器接口
    API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。

4.事件处理步骤

  • 确定事件源
  • 确定事件类型
  • 确定事件监听器接口,实现接口
  • 覆盖监听器接口中的适当方法
  • 事件源注册监听器

5.使用匿名内部类进行事件处理

send.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e) {
          output.append(input.getText()+"\n");
          input.setText("");
     }
});

6.使用监听适配器进行事件处理

  • 在事件处理中提供了很多的Adapter(适配器)类,它们是监听器接口的默认实现类。

      KeyListener接口有三个方法:
      void keyTyped(KeyEvent e)  键入某个键时调用
      void keyPressed(KeyEvent e)  键盘按下时调用
      void keyReleased(KeyEvent e)  键盘松开时调用    
    

(二)实验总结

基本要求:

使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
(1)显示所有宠物列表
(2)添加宠物到列表
(3)删除宠物
(4)对宠物信息进行修改
(5)退出

  • 功能扩展:
    用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
    实现以下功能:
    (1)显示所有宠物
    (2)能够按照品种对宠物进行查找
    (3)购买宠物
    (4)显示购买清单
    (5)退出

  • 完成实验内容,代码上传到码云,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

  • 格式如下:
    程序设计思路:首先,创建进入界面,选择注册或登录;点击注册,进入注册界面,进行注册;进行新用户注册,调转到登录界面,或者点击登录直接进入登录界面,显示宠物管理页面,显示宠物清单
    创建一个主方法类,建vo包宠物类,用户类,数据包,图片,工具类,view包用户界面,管理员界面,注册界面,登录界面。

  • 程序设计思路:创建Denglujiemian界面,设置登录和注册按钮,进行注册和登录功能;点击注册,进入Zhuce注册界面,进行注册;点击登录,进入登录界面;创建Pet宠物类存放宠物属性,创建User类存放宠物属性

  • 类图:

实验问题分析:

  • 问题1:注册时注册名为空和用户密码不一致也会注册成功
    解决方案:
    用以下约束条件进行注册约束

    if(addName.length()==0){
    			JOptionPane.showMessageDialog(this, "用户名不能为空");
    
    }
    if(!addPassword.equals(addPassword2)){
    	JOptionPane.showMessageDialog(this, "密码不一致");
    }
    if(!addSuccess) {
    	// 没有添加成功弹窗错误提示
    	JOptionPane.showMessageDialog(this, "用户名已注册");
    }
    
  • 问题2:在进行注册时,若是第一次密码不一致,在第二次密码一致时,会提示用户名已注册
    解决方案:
    之前这样写:

       boolean addSuccess = adminService.addUser(addName, addPassword);
    

    修改之后加了个传参,在调用的AdminSercice里的haveUser中进行约束

    public boolean haveUser(String username, String password) {
    	ArrayList<User> data = queryUser();
    	Iterator<User> iterator = data.iterator();
    	while (iterator.hasNext()) {
    		User user = iterator.next();
    		if (user.getUsername().equals(username)
    				&& user.getPassword().equals(password)) {
    			return true;
    		}
    	}
    	return false;
    }
    

(三)[代码托管]https://git.oschina.net/hebau_cs15/hebau-cs01cyl.git

  • 码云commit历史截图
posted @ 2017-05-11 19:32  曾经的曾经···  阅读(235)  评论(0编辑  收藏  举报