2016-06-16-课程设计日志

不经意间今天已经是星期四了,明天早上骑士和勇士也将迎来第六战,依然是骑士的生死战。博古特的报销成为了X因素之一。我觉得骑士还是有机会赢。

今天我开始完成自己的另一个模块——员工管理模块,因为有了仓库管理模块的先例,这个员工信息子块在今天上午还是成功完成了。对员工信息的增删查。哎呀,在这里说时突然才想到,本来一开始有加员工照片的准备啊~!

这次的界面布局和仓库管理有不一样的地方,大家可以看看。

public class employMainUI extends JPanel{
	JLabel ca1 = null; 
	
	JScrollPane jsp;
	
	JLabel searchInfo;
	JTextField inputsearch;
	
	JButton btnAdd,btnSearch,btnDel;
	
	private static employees em=new employees();
	List<employees> emlist=new employSrv().FetchAll();
	
	JFrame jf=new JFrame();
	public employMainUI(){
		initContent();
	}

	private void initContent() {
		Rectangle rect = this.getBounds();
		
		jsp = new JScrollPane();
		jsp.setBounds(0, 40, rect.width, rect.height - 90);
		this.add(jsp);
		
		searchInfo = new JLabel("请输入员工证件号:", JLabel.RIGHT);
		searchInfo.setBounds(60, rect.height - 45, 150, 30);
		this.add(searchInfo);

		inputsearch = new JTextField(10);
		inputsearch.setBounds(220, rect.height - 45, 200, 30);
		this.add(inputsearch);
		
		btnSearch=new JButton("查找");
		btnSearch.setBounds(rect.width - 220, rect.height - 45, 60, 30);
		btnSearch.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				SearchClick(emlist);
			}
		});
		this.add(btnSearch);
		
		btnAdd=new JButton("添加");
		btnAdd.setBounds(440, rect.height - 45, 60, 30);
		btnAdd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jf.dispose();
				AddClick();
			}
		});
		this.add(btnAdd);
		
		btnDel=new JButton("删除");
		btnDel.setBounds(rect.width - 150, rect.height - 45, 60, 30);
		this.add(btnDel);
		btnDel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				DeleteClick();
			}
		});
		
		
		this.add(showForm());
		
		jf.add(this);
		jf.setSize(1024, 700);
		jf.setVisible(true);  
        jf.setLocationRelativeTo(null);  
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	 public JScrollPane showForm() {
	    	employeesTable emt =new employeesTable(em);
			Object[] in = { "姓名", "证件号", "性别", "出生日期","家庭地址","练习方式","职位"};
			List<employees> stuList =new employSrv().FetchAll();
			jsp=emt.createTable(jsp, in, stuList);
	        return jsp; 
	         
		}
	 
	 public void SearchClick(List<employees> e){
			JFrame search=new JFrame(); 
			JLabel name,id,sex,birth,address,telephone,role;
			JTextField name1,id1,sex1,birth1,address1,telephone1,role1;
			search.setLayout(new GridLayout(7,2,5,5));
			
			name=new JLabel("员工姓名");
			name.setFont(new Font("宋体", Font.BOLD, 33));
			name1=new JTextField(10);
			search.add(name);
			search.add(name1);
			
			id=new JLabel("证件号");
			id.setFont(new Font("宋体", Font.BOLD, 33));
			id1=new JTextField(10);
			search.add(id);
			search.add(id1);
			
			sex=new JLabel("性别");
			sex.setFont(new Font("宋体", Font.BOLD, 33));
			sex1=new JTextField(10);
			search.add(sex);
			search.add(sex1);
			
			birth=new JLabel("员工生日");
			birth.setFont(new Font("宋体", Font.BOLD, 33));
			birth1=new JTextField(10);
			search.add(birth);
			search.add(birth1);
			
			address=new JLabel("家庭住址");
			address.setFont(new Font("宋体", Font.BOLD, 33));
			address1=new JTextField(10);
			search.add(address);
			search.add(address1);
			
			telephone=new JLabel("联系方式");
			telephone.setFont(new Font("宋体", Font.BOLD, 33));
			telephone1=new JTextField(10);
			search.add(telephone);
			search.add(telephone1);
			
			role=new JLabel("职位");
			role.setFont(new Font("宋体", Font.BOLD, 33));
			role1=new JTextField(10);
			search.add(role);
			search.add(role1);
			
			search.setLocationRelativeTo(null);
			search.setSize(500, 400);
			
			Iterator<employees> itr = e.iterator();
			while (itr.hasNext()) {
				employees stu = itr.next();
				
				if (!inputsearch.getText().equals("") && inputsearch.getText().equals(stu.getId())){
					name1.setText(stu.getName());
					id1.setText(stu.getId());
					sex1.setText(stu.getSex());
					birth1.setText(stu.getBirth());
					address1.setText(stu.getAddress());
					telephone1.setText(stu.getTelephone());
					role1.setText(stu.getRole());
					search.setVisible(true);
					break;
				}
				else
					search.dispose();
		} 
					
				
	 }
	 
	 public void AddClick() {
		 	employeesAdd as=new employeesAdd();
	    	as.toFront();
	    	as.setSize(500, 400);  
	        as.setLocationRelativeTo(null);
	    	as.setVisible(true);
	 }
	 
	 public void DeleteClick() {
		 int confirm = JOptionPane.showConfirmDialog(null, "确认删除所选?", "删除", JOptionPane.YES_NO_OPTION);
			if (confirm == JOptionPane.YES_OPTION) {
				employSrv shSrv = new employSrv();
				shSrv.delete(em.getId());
			}
			else
				System.out.println("No choice");
			this.removeAll();
			this.add(searchInfo);
			this.add(inputsearch);
			this.add(btnSearch);
			this.add(btnAdd);
			this.add(btnDel);
			this.add(showForm());
			this.updateUI();
	 }
	
	 
	public static void main(String a[]){
		employMainUI zy=new employMainUI();
		zy.setVisible(true);
	}
}

class employeesTable{
	private employees sh=new employees();
	private JTable jt = null;

	public employeesTable(employees sh) {
		this.sh = sh;
	}

	// 创建JTable
	public JScrollPane createTable(JScrollPane jpjs, Object[] columnNames, List<employees> stuList) {
		try {

			Object data[][] = new Object[stuList.size()][columnNames.length];

			Iterator<employees> itr = stuList.iterator();
			int i = 0;
			while (itr.hasNext()) {
				employees stu = itr.next();
				data[i][0] =stu.getName(); 
				data[i][1] = stu.getId();
				data[i][2] = stu.getSex();
				data[i][3] = stu.getBirth();
				data[i][4]=stu.getAddress();
				data[i][5]=stu.getTelephone();
				data[i][6]=stu.getRole();
				i++;
			}

			// 生成JTable
			jt = new JTable(data, columnNames);
			jt.setRowHeight(30);
			jt.setPreferredScrollableViewportSize(new Dimension(700,400));
			
			
			DefaultTableCellRenderer r=new DefaultTableCellRenderer();   
			r.setHorizontalAlignment(JLabel.CENTER);   
			jt.setDefaultRenderer(Object.class,r);

			// 添加鼠标监听,监听到所选行
			employTableMouseListener tml = new employTableMouseListener(jt, columnNames, sh);
			jt.addMouseListener(tml);
			// 设置可调整列宽
			jt.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

			
			jpjs=new JScrollPane();
			JTableHeader jt1=jt.getTableHeader();
			jt1.setPreferredSize(new Dimension(100, 50));
			jt1.setFont(new Font("Menu.font", Font.PLAIN, 20));
			jt1.setBackground(Color.PINK);
			jpjs.getViewport().add(jt1);
			jpjs.getViewport().add(jt);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return jpjs;
	}
}

class employTableMouseListener extends MouseAdapter {

	private JTable jt;
	public  employees eme;

	public employTableMouseListener(JTable jt, Object[] number, employees sh1) {
		this.eme = sh1;
		this.jt = jt;
	
	}
	
	// 监听到行号,将所选行的内容依次赋到 stud对象,以便传有值对象到修改面板进行修改
	public void mouseClicked(MouseEvent event) {
		int row = jt.getSelectedRow();
		eme.setName(jt.getValueAt(row, 0).toString());
		System.out.println(eme.getName());
		eme.setId(jt.getValueAt(row, 1).toString());
		eme.setSex(jt.getValueAt(row, 2).toString());
		eme.setBirth(jt.getValueAt(row, 3).toString());
		eme.setAddress(jt.getValueAt(row, 4).toString());
		eme.setTelephone(jt.getValueAt(row, 5).toString());
		eme.setRole(jt.getValueAt(row, 6).toString());
		System.out.println(jt.getValueAt(row, 1).toString());
	}
}
这次setBounds起到了一定的作用,整体界面显示较仓库管理是好点。然后,这里的代码仍然有几处不足。比如,search的点击事件函数里面写的太多,没有将其封装到一个类里面;每次添加,删除的面板更新需要add部件,不知道还有没更好的方法。

最后就是这里仍然是在jf里面显示,需要改成要全都是一个jp,小马说这样他合并的时候更高效。

public class JFreeChartTest {

	public static void main(String[] args) {
		
		 DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图
	        dpd.setValue("管理人员", 25);  //输入数据
	        dpd.setValue("市场人员", 25);
	        dpd.setValue("开发人员", 45);
	        dpd.setValue("其他人员", 10);
	        
	        JFreeChart chart=ChartFactory.createPieChart("某公司人员组织数据图",dpd,true,true,false); 
	        //可以查具体的API文档,第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL
	        
	        ChartFrame chartFrame=new ChartFrame("某公司人员组织数据图",chart); 
	        //chart要放在Java容器组件中,ChartFrame继承自java的Jframe类。该第一个参数的数据是放在窗口左上角的,不是正中间的标题。
	        chartFrame.pack(); //以合适的大小展现图形
	        chartFrame.setVisible(true);//图形是否可见
	}

}
这是网上的一个扇形图,因为想到我的一个子块里面需要这个,就在网上搜了搜。在用类似扇形圆柱图之前需要导入两个包即可jcommon和jfreechart。在网上可以下载到。

明天将计划完成员工管理的最后几个子块。

杰克伦敦的不朽之作——《荒野的呼唤》等会将会继续阅读,今晚将迎来结局,拭目以待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值