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历史截图