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

posted @ 2017-05-11 19:05  彪悍一只猫  阅读(282)  评论(0编辑  收藏  举报