java課程設計(人事管理系統(tǒng)).doc
《java課程設計(人事管理系統(tǒng)).doc》由會員分享,可在線閱讀,更多相關《java課程設計(人事管理系統(tǒng)).doc(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
人事管理系統(tǒng)一.系統(tǒng)需求分析:2(1)系統(tǒng)的功能設計2(2)系統(tǒng)功能結構2(3)數(shù)據(jù)庫設計2二.功能模塊開發(fā)3(1)查詢?nèi)藛T信息界面3(2)添加員工界面3(3)修改員工信息界面4(4)刪除員工界面5(5)員工考核界面5(6)員工考核歷史記錄界面6三.各個類說明6四.程序代碼9(1)Manager9(2)CardEmploy11(3)SelEmploy12(4)AddEmploy14(5)ReviseEmploy16iUpdDialog18(6)DelEmploy21(7)AllEmploy22(8)Examine23(9)History27(10)EmployModel28(11)AppraisalModel30(12)SqlHelper33一.系統(tǒng)需求分析:(1) 系統(tǒng)的功能設計i 員工信息管理:員工信息管理包括對員工基本信息和情況進行查詢、添加、刪除和修改及部門管理ii 員工考核管理:包括對員工的考核情況進行操作,還可以對歷史考核情況進行瀏覽(2) 系統(tǒng)功能結構人事管理的系統(tǒng)結構功能結構如圖所示:(3) 數(shù)據(jù)庫設計員工基本表(Employinfo)名稱字段名稱數(shù)據(jù)類型主鍵非空工號Empnovarchar(10)YesYes姓名Enamevarchar(10)No yes性別Sexvarchar(4)No yes出生年月BirthdayDatetimeNo Yes部門DeptNoChar(10)No Yes職務EjobChar(20)No Yes工資SalfloatNo Yes員工考核表(Appraisal)名稱字段名稱數(shù)據(jù)類型主鍵非空工號Empnovarchar(10)yesyes考核Consequencevarchar(10)noyes變更日期RegDatedatetimeNo Yes 考核歷史記錄(History)名稱字段名稱數(shù)據(jù)類型主鍵非空流水號JourNoIntYesyes工號Empnovarchar(10)noyes姓名Enamevarchar(10)No Yes 上次考核OldInfovarchar(10)No Yes 本次考核NewInfovarchar(10)No Yes 變更日期RegDatedatetimeNo Yes 二. 功能模塊開發(fā)(1) 查詢?nèi)藛T信息界面 實例一個SelEmploy類,當點擊“查詢”時調用EmployModel類的queryEmploy方法實現(xiàn)查詢(2) 添加員工界面 實例一個AddEmploy類當點擊“添加”時調用EmployModel類的updEmploy方法實現(xiàn)添加功能(3) 修改員工信息界面實例一個ReviseEmploy類當點擊“修改”時,先調用UpdDialo彈跳出一個修改信息對話框,信息修改完畢后,調用EmployModel類的updEmploy方法實現(xiàn)修改功能(4) 刪除員工界面實例一個DelEmploy類當點擊“刪除”時調用EmployModel類的updEmploy方法實現(xiàn)刪除功能(5) 員工考核界面實例一個Examine類當點擊“確認”時調用AppraisalModel類的updAppraisal方法來完成考核功能(6) 員工考核歷史記錄界面實例一個History類當點擊時調用AppraisalModel類的updAppraisal方法來完成考核功能三. 各個類說明類之間的關系圖:1. Manager類Manager類的一個實例,從而生成了人事管理系統(tǒng)的界面,用JSplitPane類將整個界面分為左右兩個部分。其中左側實現(xiàn)了人事管理系統(tǒng)的功能樹,采用JTree類構建,同時實現(xiàn)了TreeSelectionListener接口,定義了該接口所必須實現(xiàn)的valueChanged(TreeSelectionEvent e)方法,JSplitPane右邊加入卡片布局CardEmploy類。當JTree的TreeSelectionEvent事件發(fā)生時,調用CardEmploy的c.show方法 切換不同卡片,實現(xiàn)不同的管理界面。2. CardEmploy類CardEmploy為卡片布局類的面板,主要功能是添加各個界面的卡片,當JTree的TreeSelectionEvent事件發(fā)生時。切換不同的卡片3. EmployModel、AppraisalModel類這兩個類繼承了AbstractTableModel,主要實現(xiàn)的功能是,存放調用sqlhelper類得到的數(shù)據(jù)。可以通過調用sqlhelper實現(xiàn) 增 刪 查 改 功能4. SqlHelper類主要就是連接數(shù)據(jù)庫的一些基礎操作是,方便代碼修改,重復使用5. SelEmploy這個類繼承Panel,為“查詢員工”的界面。實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,調用EmployModel類的queryEmploy方法實現(xiàn)查詢6. AddEmploy、ReviseEmploy、DelEmploy類這些類繼承Pane,分別為“添加員工信息”“修改員工信息”“刪除員工信息”的界面, 這些類實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,調用EmployModel類的updEmploy方法實現(xiàn)添加、查詢、刪除、功能7. Examine類這個類繼承Panel,為“考核員工”界面。這個類實現(xiàn)了Actionlistener 接口,當ActionEvent 事件發(fā)生時,(1)先通過調用AppraisalModel的queryAppraisal獲取上次考核成績,(2)修改Appraisal表的考核成績(3)再把上次考核成績跟本次考核成績加到History表中8. History這個類主要是把History表中的信息顯示到界面上。四. 程序代碼(1) Managerpackage com.Manager;import java.awt.*;import javax.swing.*;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swing.tree.*;import java.awt.event.*;public class Manager extends JFrame implements TreeSelectionListener JPanel jp;JSplitPane js;JScrollPane jsp;JTree tree;DefaultMutableTreeNode root, t1, t2, t1_1, t1_2, t1_3, t1_4, t1_5, t2_1,t2_2;CardEmploy ae;EmployModel em;public static void main(String args) Manager manager = new Manager();public Manager() / 給樹的各個結點賦值root = new DefaultMutableTreeNode(人事管理系統(tǒng));t1 = new DefaultMutableTreeNode(基本信息管理);t1_1 = new DefaultMutableTreeNode(查詢員工);t1_2 = new DefaultMutableTreeNode(添加員工);t1_3 = new DefaultMutableTreeNode(修改員工信息);t1_4 = new DefaultMutableTreeNode(刪除員工資料);t1_5 = new DefaultMutableTreeNode(查詢?nèi)w員工);t2 = new DefaultMutableTreeNode(人員考核管理);t2_1 = new DefaultMutableTreeNode(人員考核);t2_2 = new DefaultMutableTreeNode(考核歷史查詢);t1.add(t1_1);t1.add(t1_2);t1.add(t1_3);t1.add(t1_4);t1.add(t1_5);t2.add(t2_1);t2.add(t2_2);root.add(t1);root.add(t2);tree = new JTree(root);/ 對樹進行監(jiān)聽tree.addTreeSelectionListener(this);/ 實例化CardEmploy面板 并加到jsplitpane的邊ae = new CardEmploy();js = new JSplitPane();js.setLeftComponent(tree);js.setRightComponent(ae);this.getContentPane().add(js);this.setTitle(人事管理系統(tǒng));this.setVisible(true);this.setSize(600, 500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void valueChanged(TreeSelectionEvent e) / 獲取點擊結點名稱DefaultMutableTreeNode dpath = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();/ 通過點擊不同結點切換不同界面if (dpath.equals(t1_1) ae.c.show(ae, 1); else if (dpath.equals(t1_2) ae.c.show(ae, 2); else if (dpath.equals(t1_3) ae.c.show(ae, 3); else if (dpath.equals(t1_4) ae.c.show(ae, 4); else if (dpath.equals(t1_5) ae.c.show(ae, 5); else if (dpath.equals(t2_1) ae.c.show(ae, 6); else if (dpath.equals(t2_2) ae.c.show(ae, 7);(2) CardEmploy/* * 用卡片布局設置各個界面 */package com.Manager;import javax.swing.*;import java.awt.*;public class CardEmploy extends PanelCardLayout c; /查詢表SelEmploy selE;/添加表AddEmploy addE; /修改員工信息表 ReviseEmploy revE; /刪除員工表格 DelEmploy delE; /所有員工信息 AllEmploy allE; /員工考核表 Examine exaE; /歷史記錄界面 History His; public CardEmploy() /查詢員工表 selE = new SelEmploy();/添加員工表addE = new AddEmploy(); /修改員工信息 revE = new ReviseEmploy(); /刪除員工表格 delE = new DelEmploy(); /所有員工信息 allE =new AllEmploy(); /員工考核表 exaE = new Examine(); /歷史記錄界面 His = new History(); JPanel jp = new JPanel(); /定義cardemploy面板 為卡片布局 /把各個面板加入到C的卡片布局中 c = new CardLayout(); this.setLayout(c); this.add(selE,1); this.add(addE,2); this.add(revE,3); this.add(delE,4); this.add(allE,5); this.add(exaE,6); this.add(His,7); (3) SelEmploy/* * SelEmploy 類 設置查詢員工界面 */package com.Manager;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class SelEmploy extends Panel implements ActionListener EmployModel em;JLabel jl;JTextField jtf;JButton jb;JTable jt;JScrollPane jsp;JPanel jp1;public SelEmploy() / 北部jp1 = new JPanel();jl = new JLabel(輸入員工號:);jtf = new JTextField(20);jb = new JButton(查詢);/ 對查詢按鈕監(jiān)聽jb.addActionListener(this);jp1.add(jl);jp1.add(jtf);jp1.add(jb);/ 中部em = new EmployModel();String paras = 1 ;em.queryEmploy(select * from Employinfo where 1 = ?, paras);jt = new JTable(em);jsp = new JScrollPane(jt);this.setLayout(new BorderLayout();this.add(jp1, BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);public void actionPerformed(ActionEvent e) if (e.getSource() = jb) String name = this.jtf.getText().trim();String sql = select * from Employinfo where Empno = ?;String paras = name ;em = new EmployModel();em.queryEmploy(sql, paras);/ 查找成功更新表jt.setModel(em);(4) AddEmploypackage com.Manager;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class AddEmploy extends Panel implements ActionListener JLabel jl, jl1, jl2, jl3, jl4, jl5, jl6, jl7;JButton jb1, jb2;JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7;JPanel jp1, jp2, jp3, jp4;EmployModel em;public AddEmploy() jl1 = new JLabel(工號:);jl2 = new JLabel(姓名:);jl3 = new JLabel(性別:);jl4 = new JLabel(出生年月:);jl5 = new JLabel(部門:);jl6 = new JLabel(職位:);jl7 = new JLabel(工資:);jtf1 = new JTextField(20);jtf2 = new JTextField(20);jtf3 = new JTextField(20);jtf4 = new JTextField(20);jtf5 = new JTextField(20);jtf6 = new JTextField(20);jtf7 = new JTextField(20);jb1 = new JButton(添加);jb2 = new JButton(取消);/ 監(jiān)聽添加 取消按鈕jb1.addActionListener(this);jb2.addActionListener(this);jp1 = new JPanel(new GridLayout(7, 1);jp2 = new JPanel(new GridLayout(7, 1);jp3 = new JPanel();jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp1.add(jl7);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp2.add(jtf7);jp3.add(jb1);jp3.add(jb2);jp4 = new JPanel(new BorderLayout();jp4.add(jp1, BorderLayout.WEST);jp4.add(jp2, BorderLayout.EAST);jp4.setSize(300, 300);this.setLayout(new FlowLayout();this.add(jp4);this.add(jp3);public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) / 調用EmployModel 里的updEmploy 方法,實現(xiàn)對表格的添加String sql = insert into Employinfo values(?,?,?,?,?,?,?);String paras = jtf1.getText(), jtf2.getText(), jtf3.getText(),jtf4.getText(), jtf5.getText(), jtf6.getText(),jtf7.getText() ;em = new EmployModel();if (em.updEmploy(sql, paras) / 當添加新員工成功時,則彈出”添加成功“的對話框JOptionPane.showMessageDialog(this, 添加成功); else if (!em.updEmploy(sql, paras) JOptionPane.showMessageDialog(this, 添加失敗);/ 當新員工加入成功后,要把新加入員工的工號加到考核表AppraisalModel temp = new AppraisalModel();String sql1 = insert into Appraisal(Empno) values(?);String paras1 = jtf1.getText() ;temp.updAppraisal(sql1, paras1);else if(e.getSource() = jb2)jtf1.setText();jtf2.setText();jtf3.setText();jtf4.setText();jtf5.setText();jtf6.setText();jtf7.setText();(5) ReviseEmploypackage com.Manager;/* * 修改員工界面 */import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ReviseEmploy extends Panel implements ActionListener JTable jt;JScrollPane jsp;JButton jb1, jb2;JPanel jp1,jp2;EmployModel em; JLabel jl1;public ReviseEmploy() jl1 = new JLabel(修改員工信息,JLabel.CENTER);jl1.setFont(new Font(宋體, Font.BOLD, 28);jp2 = new JPanel();jp2.add(jl1);em = new EmployModel();String paras = 1 ;em.queryEmploy(select * from Employinfo where 1 = ?, paras);jt = new JTable(em);jsp = new JScrollPane(jt);jb1 = new JButton(修改);jb2 = new JButton(刷新);/ 對兩個按鈕進行監(jiān)聽jb1.addActionListener(this);jb2.addActionListener(this);this.setLayout(new BorderLayout();jp1 = new JPanel();jp1.add(jb1);jp1.add(jb2);this.add(jp2,BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);this.add(jp1, BorderLayout.SOUTH);public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) int rowNum = this.jt.getSelectedRow();if (rowNum = -1) JOptionPane.showMessageDialog(this, 請選擇一行);return;/ 彈出修改對話框new UpdDialog(em, rowNum); else if (e.getSource() = jb2) / 刷新修改界面中的表格em = new EmployModel();String paras1 = 1 ;em.queryEmploy(select * from Employinfo where 1 = ?, paras1);jt.setModel(em);i UpdDialogpackage com.Manager;/* * 彈出修改界面 */import javax.swing.*;import java.awt.*;import java.awt.event.*;public class UpdDialog extends JDialog implements ActionListener JLabel jl1, jl2, jl3, jl4, jl5, jl6, jl7;JButton jb1, jb2;JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7;JPanel jp1, jp2, jp3;public UpdDialog(EmployModel em, int rowNums) jl1 = new JLabel(工號:);jl2 = new JLabel(姓名:);jl3 = new JLabel(性別:);jl4 = new JLabel(出生年月:);jl5 = new JLabel(部門:);jl6 = new JLabel(職位:);jl7 = new JLabel(工資:);jtf1 = new JTextField(20);jtf2 = new JTextField(30);jtf3 = new JTextField(30);jtf4 = new JTextField(30);jtf5 = new JTextField(30);jtf6 = new JTextField(30);jtf7 = new JTextField(30);/ 初始化jtextfield數(shù)據(jù)jtf1.setText(String) em.getValueAt(rowNums, 0);jtf1.setEditable(false);jtf2.setText(String) em.getValueAt(rowNums, 1);jtf3.setText(String) em.getValueAt(rowNums, 2);jtf4.setText(String) em.getValueAt(rowNums, 3);jtf5.setText(String) em.getValueAt(rowNums, 4);jtf6.setText(String) em.getValueAt(rowNums, 5);jtf7.setText(String) em.getValueAt(rowNums, 6);jb1 = new JButton(修改);jb2 = new JButton(取消);/ 對兩個按鈕監(jiān)聽jb1.addActionListener(this);jb2.addActionListener(this);jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();/ 設置布局jp1.setLayout(new GridLayout(7, 1);jp2.setLayout(new GridLayout(7, 1);/ 添加組件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp1.add(jl7);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp2.add(jtf7);jp3.add(jb1);jp3.add(jb2);this.add(jp1, BorderLayout.WEST);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);this.setSize(300, 250);this.setVisible(true);this.setLocation(200, 200);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose(););public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) / 修改員工信息的 sql 語句,paras 為待注入的值String sql = update Employinfo set + Ename = ?,Sex = ?,Birthday = ?, DeptNo = ?, Ejob = ? ,Sal=? where Empno = ?;String paras = jtf2.getText(), jtf3.getText(), jtf4.getText(),jtf5.getText(), jtf6.getText(), jtf7.getText(),jtf1.getText() ;EmployModel temp = new EmployModel();/ 如果修改語句運行成功 則彈出“修改成功”對話框if (temp.updEmploy(sql, paras) JOptionPane.showMessageDialog(this, 修改成功);this.dispose(); else if (e.getSource() = jb2) / 關閉對話框this.dispose();(6) DelEmploy/* * 刪除員工 */package com.Manager;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class DelEmploy extends Panel implements ActionListener JTable jt;JScrollPane jsp;JButton jb1, jb2;JPanel jp1, jp2;JLabel jl1;EmployModel em;public DelEmploy() / 北部jl1 = new JLabel(刪除員工, JLabel.CENTER);jl1.setFont(new Font(黑體, Font.BOLD, 30);jp2 = new JPanel();jp2.add(jl1);/ 中部em = new EmployModel();String paras = 1 ;em.queryEmploy(select * from Employinfo where 1 = ?, paras);jt = new JTable(em);jsp = new JScrollPane(jt);/ 南部jp1 = new JPanel();jb1 = new JButton(刪除);jb2 = new JButton(取消);jb1.addActionListener(this);jp1.add(jb1);jp1.add(jb2);this.setLayout(new BorderLayout();this.add(jp2, BorderLayout.NORTH);this.add(jsp, BorderLayout.CENTER);this.add(jp1, BorderLayout.SOUTH);public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) / 返回用戶點中的行int rowNum = this.jt.getSelectedRow();if (rowNum = -1) JOptionPane.showMessageDialog(this, 請選擇一行);return;/ 得到學生編號String Empno = (String) em.getValueAt(rowNum, 0);/ 刪除記錄的sql語句String sql = delete from Employinfo where Empno = ?;String paras = Empno ;EmployModel temp = new EmployModel();temp.updEmploy(sql, paras);/ 刪除員工成功后,更新員工表em = new EmployModel();String paras1 = 1 ;em.queryEmploy(select * from Employinfo where 1 = ?, paras1);jt.setModel(em);(7) AllEmploy/* * 遍歷所有員工 */package com.Manager;import java.awt.*;import javax.swing.*;public class AllEmploy extends PanelEmployModel em;JTable jt;JScrollPane jsp; JLabel jl1; JPanel jp;public AllEmploy()/北部jp = new JPanel();jl1 = new JLabel(全體員工,JLabel.CENTER);jl1.setFont(new Font(黑體, Font.BOLD, 30); jp.add(jl1); /中部em = new EmployModel();String paras =1;em.queryEmploy(select * from Employinfo where 1 = ?, paras);jt = new JTable(em);jsp = new JScrollPane(jt);this.setLayout(new BorderLayout(); this.add(jp,BorderLayout.NORTH);this.add(jsp,BorderLayout.CENTER);(8) Examine/* * 員工考核界面 */package com.Manager;import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.util.Vector;import java.sql.*;import javax.swing.*;public class Examine extends Panel implements ActionListener JLabel jl1, jl2, jl3, jl4;JTable jt;JScrollPane jsp;JTextField jtf1, jtf2;Choice ch;JButton jb1, jb2;JPanel jp1, jp2, jp3, jp4;AppraisalModel am;SqlHelper sqh;public Examine() / 北部 為標題文字jp4 = new JPanel();jl1 = new JLabel(員工考核, JLabel.CENTER);jl1.setFont(new Font(黑體, Font.BOLD, 30);jp4.add(jl1);/ 中部am = new AppraisalModel();am.queryAppraisal(select E.Empno,E.Ename,A.Consequence,A.RegDate from + Employinfo as E,Appraisal as A where E.Empno=A.Empno);jt = new JTable(am);jsp = new JScrollPane(jt);/ 監(jiān)聽jtable 點擊表格時獲取點擊的行數(shù) 并通過鼠標點擊事件給 jtf1,jtf2 賦值jt.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) int rowNum = jt.getSelectedRow();jtf1.setText(String) am.getValueAt(rowNum, 0);jtf2.setText(String) am.getValueAt(rowNum, 1););jl2 = new JLabel(工號:);jl3 = new JLabel(姓名:);jl4 = new JLabel(考核);jtf1 = new JTextField(10);jtf2 = new JTextField(10);jtf1.setEditable(false);jtf2.setEditable(false);/ 實例單選框組件,并賦值ch = new Choice();ch.add(未考核);ch.add(不合格);ch.add(合格);ch.add(優(yōu)秀);jp1 = new JPanel();jp1.add(jl2);jp1.add(jtf1);jp1.add(jl3);jp1.add(jtf2);jp1.add(jl4);jp1.add(ch);jp2 = new JPanel(new BorderLayout();jp2.add(jsp, BorderLayout.CENTER);jp2.add(jp1, BorderLayout.SOUTH);/ 南部jb1 = new JButton(確認);jb2 = new JButton(刷新);jp3 = new JPanel();jb1.addActionListener(this);jb2.addActionListener(this);jp3.add(jb1);jp3.add(jb2);this.setLayout(new BorderLayout();this.add(jp4, BorderLayout.NORTH);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);public void actionPerformed(ActionEvent e) if (e.getSource() = jb1) String Empno = jtf1.getText();String Ename = jtf2.getText();String Consequence = ch.getSelectedItem();/ 先獲取上次考核記錄String sql = select Consequence from Appraisal where Empno =?;String paras = Empno ;String OldInfo = ;try sqh = new SqlHelper();ResultSet rs = sqh.queryExecute(sql, paras);rs.next();OldInfo = rs.getString(1); catch (Exception e1) e1.printStackTrace(); finally sqh.close();/ 對考核表進行修改 修改考核記錄的sql語句String sql1 = update Appraisal set Consequence = ? where Empno =?;String paras1 = Consequence, Empno ;AppraisalModel temp = new AppraisalModel();if (temp.updAppraisal(sql1, paras1) JOptionPane.showMessageDialog(this, 考核成功);/ 再把上次考核記錄以及本次操作記錄 插入到 history表中String sql2 = insert into History(Empno,Ename,OldInfo,NewInfo) values(?,?,?,?);String paras2 = Empno, Ename, OldInfo, Consequence ;AppraisalModel temp1 = new AppraisalModel();temp1.updAppraisal(sql2, paras2); else if (e.g- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- java 課程設計 人事管理系統(tǒng)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
相關搜索
鏈接地址:http://italysoccerbets.com/p-9339686.html