java第七次作业
java第七次作业
(一)学习总结
1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。
<1>.java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
<2>事件监听器接口
API对于每种事件都定义了对应的接口,接口中定义了处理该事件的方法,这些接口称为事件监听器接口。监听器接口以Listener结尾。如ActionListener接口处理ActionEvent事件。
<3>事件处理步骤
确定事件源:即发生事件的组件。
Quit按钮
确定事件类型:
根据要处理事件确定事件类型。
点击按钮事件是ActionEvent
关闭窗口事件是WindowEvent
<4>确定事件监听器接口,实现接口
确定事件类型后,需要进一步确定处理该事件的监听器接口,如ActionEvent事件对应的接口是ActionListener。确定接口后,需要自定义事件处理类实现该接口。
public class QuitHandler implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
}
}
<5>覆盖监听器中特定的方法
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
<6>事件源注册监听器
每个组件都有一系列的addXXXListener方法,可以用来为组件注册不同的监听器。
private void addListener() {
//添加按钮监听
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addPet(); //调用添加方法
}
});
//修改按钮监听
updateBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
updatePet(); //调用修改方法
}
});
//删除按钮监听
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
delPet(); //调用删除方法
}
});
2.其他需要总结的内容。
添加滚动条代码:
JScrollPane scrollPane = new JScrollPane(textArea); //创建滚动条,并指定添加位置
scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); //设置滚动条形式
(二)实验总结
实验内容:
基本要求:
使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
(1)显示所有宠物列表
(2)添加宠物到列表
(3)删除宠物
(4)对宠物信息进行修改
(5)退出
功能扩展:
用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
实现以下功能:
(1)显示所有宠物
(2)能够按照品种对宠物进行查找
(3)购买宠物
(4)显示购买清单
(5)退出
完成实验内容,代码上传到码云,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
格式如下:
程序设计思路:
1.定义欢迎窗口类。
2.定义工具类,实现窗口组件的居中显示和显示窗口图标
public class GUITools {
static Toolkit kit = Toolkit.getDefaultToolkit(); //Java提供的GUI默认工具类
//将指定组件屏幕居中
public static void center(Component c){
int x = (kit.getScreenSize().width - c.getWidth())/2;
int y = (kit.getScreenSize().height - c.getHeight())/2;
c.setLocation(x,y);
}
//设置窗口图标
public static void setTitleImage(JFrame frame,String titleIconPath){
frame.setIconImage(kit.createImage(titleIconPath));
}
}
3.定义管理窗口类:定义查询、添加、修改、删除方法。
4.定义实体类:类中的属性使用private封装,封装后的提供setter、getter方法
5.定义存储数据类:使用集合模拟数据库存储数据的功能
6.分层编写数据访问类、业务逻辑服务类
(1)创建数据访问类
(2)创建管理服务类,实现管理界面中查询、添加、修改、删除操作
//添加方法
public void addPet() {
String addNo = addNoText.getText();
String addType = addTypeText.getText();
String addNu = addNuText.getText();
String addPrice = addPriceText.getText();
boolean addSuccess = adminService.addPet(addNo, addType,addNu, addPrice);
if(addSuccess){
queryPet(); //添加后刷新表格
addNoText.setText("");
addTypeText.setText("");
addNuText.setText("");
addPriceText.setText("");
}else{
//没有添加成功弹窗错误提示
JOptionPane.showMessageDialog(this, "宠物编号不能重复,请检查数据");
}
}
//修改方法
public void updatePet() {
String updateNo = updateNoText.getText();
String updateType = updateTypeText.getText();
String updateNu = updateNuText.getText();
String updatePrice = updatePriceText.getText();
boolean updateSuccess = adminService.updatePet(updateNo, updateType,updateNu, updatePrice);
if(updateSuccess){
queryPet();
updateNoText.setText("");
updateTypeText.setText("");
updateNuText.setText("");
updatePriceText.setText("");
}else{
JOptionPane.showMessageDialog(this, "没有这个编号的宠物,请检查数据");
}
}
//删除方法
public void delPet() {
String delNo = delNoText.getText();
boolean delSuccess = adminService.delPet(delNo);
if(delSuccess){
queryPet();
delNoText.setText("");
}else{
JOptionPane.showMessageDialog(this, "没有这个编号的宠物,请检查数据");
}
}
7.修改管理窗口类,提供管理界面完整的功能服务
private AdminDao adminDao = new AdminDao();
//查询服务
public ArrayList<Pet> queryPet(){
//调用Dao层的方法获取所有数据
ArrayList<Pet> data = adminDao.queryAllData();
return data;
}
//添加服务
public boolean addPet(String no,String type,String nu,String price){
ArrayList<Pet> data = queryPet();
Iterator<Pet> iterator = data.iterator();
while(iterator.hasNext()){
Pet pet = iterator.next();
//如果存在重复编号则添加不成功
if(pet.GetNo().equals(no)){
return false;
}
}
Pet thisPet = new Pet(no,type,nu,Double.parseDouble(price));
adminDao.addPet(thisPet); //添加成功
return true;
}
//修改服务
public boolean updatePet(String no,String type,String nu,String price){
ArrayList<Pet> data = queryPet();
for(int i = 0; i < data.size();i++){
Pet pet = data.get(i);
if(pet.GetNo().equals(no)){
adminDao.delPet(no);
int age;
Pet thisPet = new Pet(no,type,nu,Double.parseDouble(price));
adminDao.addPet(thisPet);
return true;
}
}
return false;
}
//删除服务
public boolean delPet(String no){
ArrayList<Pet> data = queryPet();
for(int i = 0; i < data.size();i++){
Pet pet = data.get(i);
if(pet.GetNo().equals(no)){
adminDao.delPet(no);
return true;
}
}
return false;
}
}
类图结构:
(三)代码托管(务必链接到你的项目)
码云commit历史截图
上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。
https://git.oschina.net/hebau_cs15/java-cs02zt1.git