數(shù)據(jù)庫課程設計 工資管理系統(tǒng)
《數(shù)據(jù)庫課程設計 工資管理系統(tǒng)》由會員分享,可在線閱讀,更多相關《數(shù)據(jù)庫課程設計 工資管理系統(tǒng)(35頁珍藏版)》請在裝配圖網上搜索。
1、編號: 時間:2021年x月x日 書山有路勤為徑,學海無涯苦作舟 頁碼:第- 34 -頁 共35頁 中北大學 課 程 設 計 說 明 書 學生姓名: 陳 松 學 號: 0606054112 學 院: 電子與計算機科學技術學院 專 業(yè): 軟件工程 題 目: 工資管理系統(tǒng) ----職工考勤管理系統(tǒng) 指導教師: 韓燮 職稱: 教授 ? 2008 年 6 月 27 日
2、 1 系統(tǒng)設計 1.1 目標設計 在工資管理中,需要從公司管理方式以及實際情況中提取相關信息,以反映工資管理情況。傳統(tǒng)的手工操作方式,易發(fā)生數(shù)據(jù)丟失,統(tǒng)計錯誤,勞動強度高,且速度慢。使用計算機可以高速,快捷地完成以上工作。避免重復勞動,規(guī)范工資管理行為,從而提高了管理效率和水平。讓人們的效率大大提高. 不難想象,正是資訊的迅速發(fā)展使得人們從過去繁復的手工勞作中得以解脫,從而使這種服務在現(xiàn)在才可能迅速普及。同時,編寫一套完整的工資管理系統(tǒng)的任務就顯得尤為重要。 開發(fā)設計思想 本系統(tǒng)開發(fā)設計思想: l 對公司軟硬件調查,從實際環(huán)境出發(fā),以便充分利用公司現(xiàn)在資源,提高系統(tǒng)開發(fā)水平
3、和應用效果。 l 了解公司的需要及相關方面的規(guī)定,根據(jù)需要做出符合要求的軟件,并達到操作過程中的直觀、方便、實用、安全等要求。 l 將系統(tǒng)按模塊分工到人,提高效率,且模塊化設計便于系統(tǒng)功能的各種組合和修改及日后的維護 l 系統(tǒng)應具備數(shù)據(jù)庫維護功能,及時根據(jù)用戶需求進行數(shù)據(jù)的添加、刪除、修改、等操作。 1.3 開發(fā)和運行環(huán)境選擇 開發(fā)工具:SQL2000, java語言。 運行環(huán)境: Windows XP,Windows 2000或VISTA操作系統(tǒng)。 1.4 系統(tǒng)功能分析 本系統(tǒng)主要用于員工基本信息的管理,對員工以及其他信息的添加、修改、刪除、查詢等基本操作。對于數(shù)據(jù)庫的保護
4、有數(shù)據(jù)備份和數(shù)據(jù)恢復的功能。針對這些要求,設計本月工資信息管理系統(tǒng)。該系統(tǒng)主要包括職工信息、職工考勤信息、職工津貼信息。 1) 職工信息管理系統(tǒng) 功能為:財務部門相關人員錄入、修改、刪除、查詢員工個人信息;員工本人能通過用戶名和密碼查詢自己的信息以及修改自己的密碼; 2) 職工工資管理系統(tǒng) 功能為:根據(jù)工資生成公式,按照員工的考勤情況及各種表現(xiàn)按月生成相應的工資;財務部門相關人員能錄入、修改、刪除、查詢每個月每個員工的工資信息以及工資匯總;員工本人能查詢自己的工資信息以及工資匯總; 3) 職工津貼管理系統(tǒng) 功能為:財務部門相關人員錄入、修改、刪除、
5、查詢職工津貼信息;職工本人能查詢自己的津貼; 4) 職工考勤管理系統(tǒng) 功能為:后勤管理人員錄入、修改、刪除、查詢職工考勤信息;職工本人能查詢自己的考勤情況。 采用模塊化設計思想,可以大大提高設計的效率,并且可以最大限度地減少不必要的錯誤。其系統(tǒng)結構框圖如圖所示: 工資管理系統(tǒng) 員工管理模塊 考勤管理模塊 津貼管理模塊 工資生成模塊 系統(tǒng)模塊 圖1.1 系統(tǒng)功能模塊圖 2. 數(shù)據(jù)庫設計 2.1 數(shù)據(jù)庫需求分析 根據(jù)工資管理要求及用戶需求調查分析,得到以下數(shù)據(jù)流圖 數(shù)據(jù)庫操作 操作數(shù)據(jù)
6、 系統(tǒng)操作 工資信息 考勤信息 進入基本界面 職工信息 津貼管理 圖2.1第一層數(shù)據(jù)流圖 修改職工信息 刪除職工記錄 輸入職工基本信息 職工表 添加操作 修改操作 刪除操作 用戶 查詢操作 職工號 圖2.2職工信息的載入 用戶 修改工資信息 刪除工資信息 輸入工資基本信息 工資表 添加操作 修改操作 刪除操作 查詢操作 圖2.3工資的信息載入 修改考勤信息 刪除考勤信息 輸入考勤基本信息 考勤表 添加操作 修改操作 刪除操作 查詢操作 用戶 圖2.4考勤的信息載入 修改津貼信息 刪除
7、津貼信息 輸入津貼基本信息 津貼表 添加操作 修改操作 刪除操作 查詢操作 用戶 圖2.5津貼的信息載入 職工管理員進入系統(tǒng) 進入員工(工資,考勤,津貼)表 津貼表 職工表 考勤表 工資表 進行錄入,修改,刪除,查詢操作 圖2.6信息查詢及管理的流程圖 2.2 數(shù)據(jù)庫概念設計 有了數(shù)據(jù)流圖,用E-R圖來說明工資信息管理系統(tǒng)的數(shù)據(jù)庫概念模式,如圖2-2所示 基本工資 其他獎金 加班獎金 年終獎金 職工號 時間 缺勤類別 缺勤天數(shù) 職工號 醫(yī)療保險 個人
8、所得稅 職工號 部門崗位 工齡 姓名 職工號 考勤 工資 津貼 員工 領取 1 n 電話號碼 m 缺勤扣除 影響 n 1 n m 密碼 影響 n 領取 1 n 圖2.7 實體之間關系E-R圖 2.3 數(shù)據(jù)庫邏輯設計 將以上E-R轉換成如下關系模式 員工(職工號,姓名,工齡,部門崗位,電話號碼,密碼) 工資(職工號,個人所得
9、稅,基本工資,醫(yī)療保險,缺勤扣除) 考勤(職工號,缺勤天數(shù),缺勤類別,時間) 津貼(職工號,年終獎金,加班獎金,其他獎金) 其中,標有下劃線的字段表示為該數(shù)據(jù)表的主碼,即主關鍵字。在上面的實體以及實體之間關系的基礎上,形成數(shù)據(jù)庫中的表格以及各個表格之間的關系。 工資信息管理系統(tǒng)數(shù)據(jù)庫中各個表格的設計結果如下面的幾個表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。 表一:員工信息表: 列名 數(shù)據(jù)類型 可否取空 備注說明 no Char ( 8 ) NOT NULL 職工號(主鍵) name Char(10) NOT NULL 職工姓名 gw Cha
10、r(20) NOT NULL 部門崗位 gl Smallint NOT NULL 工齡 hm Char(11) NULL 電話號碼 mi Smallint NOT NULL 登錄密碼 表二:工資表: 列名 數(shù)據(jù)類型 可否取空 備注說明 no Char ( 8 ) NOT NULL 職工號(主鍵) Jb money NOT NULL 基本工資 yl money NULL 醫(yī)療保險 Sw money NULL 個人所得稅 kc money NULL 缺勤扣除 Jt money NULL 津貼 yz
11、 money NOT NULL 月總工資 表三:員工考勤信息表 列名 數(shù)據(jù)類型 可否取空 備注說明 no Char ( 8 ) NOT NULL 職工號(主鍵) ts Int(4) NULL 缺勤天數(shù) lb Char(30) NULL 缺勤類別 Sj Char(10) NULL 缺勤時間 表四:津貼信息表 列名 數(shù)據(jù)類型 可否為空 備注說明 no Char ( 8 ) NOT NULL 職工號(主鍵) Jiaban money NULL 月加班獎金 nz money NULL 年終獎金 qt mo
12、ney NULL 其他獎金 3.功能模塊詳細設計 3.1主界面及工資基本信息界面的設計 圖2.8 歡迎畫面 圖2.9登錄界面 圖3.0 系統(tǒng)主界面 圖3.1 考勤信息錄入,修改,刪除,查詢界面 3.2功能描述 1主界面 通過菜單將各個模塊連接起來 2.工資基本信息模塊 工資基本信息的添加、修改和刪除等基本操作 3.3主要源代碼 import java.awt.*; import java.awt.event.*; import javax.swing.*; impor
13、t java.awt.*; import java.sql.*; import java.lang.*; import java.util.*; import javax.swing.table.*; import java.math.*; class zzlc implements ActionListener{ JFrame frame=new JFrame("歡迎進入ZZLC工資管理系統(tǒng)"); JLabel label=new JLabel("制作人:陳松 張淑靜 張虎 黎成",JLabel.CENTER); JButton button1=new
14、 JButton("進入系統(tǒng)"); JButton button2=new JButton("退出系統(tǒng)"); ImageIcon im=new ImageIcon("1.jpg"); JLabel a1=new JLabel(im); void Create(){ JPanel pcontentPane=(JPanel)frame.getContentPane(); JPanel pcontentPane1=new JPanel(); pcontentPane.add(label); pcontentPane.setLayout(new Flo
15、wLayout()); pcontentPane.add(button1); pcontentPane.add(button2); pcontentPane.add(new Label(" ")); pcontentPane.add(a1); pcontentPane.setBackground(Color.pink); pcontentPane.setVisible(true); button1.addActionListener(this); button2.addActionListener(this); fra
16、me.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setBounds(200,100,550,600); frame.setVisible(true); } public static void main(String[] args){ zzlc dome=new zzlc(); dome.Create(); } public void actionPerformed(ActionEvent e){ if(button1.equals(e.g
17、etSource())){ DL dl=new DL(); dl.create(); } if(button2.equals(e.getSource())){//退出 System.exit(0); } } } class DL implements ActionListener{ JFrame frame=new JFrame("職工/管理員登陸"); JLabel label1=new JLabel("用戶名"); JLabel label2=new JLabel("密碼"
18、); JButton logonButton1=new JButton("管理員登錄"); JButton logonButton2=new JButton("職工登錄"); JButton cancelButton=new JButton("退出"); JTextField t1=new JTextField(0); JTextField t2=new JTextField(0); ImageIcon im=new ImageIcon("2.jpg"); JLabel a2=new JLabel(im); JTextField username=new J
19、TextField(9); JPasswordField password=new JPasswordField(9); void create(){ JPanel p=(JPanel)frame.getContentPane(); JPanel p1=new JPanel(); p.setLayout(new FlowLayout()); p.add(label1); p.setSize(5,5); p.setLocation(4,8); p.add(username); p.setSize(100,200); p.setLoca
20、tion(800,800); p.add(label2); p.setSize(50,20); p.setLocation(40,80); p.add(password); p.setSize(100,20); p.setLocation(80,120); p.add(logonButton1); p.add(new JLabel(" ")); p.add(logonButton2); p.add(new JLabel(" ")); p.add(cancelButton); p.add(new
21、JLabel(" ")); p.add(a2); p.add(t1); p.add(t2); p.setBackground(Color.red); p.setVisible(true); logonButton1.addActionListener(this); logonButton2.addActionListener(this); cancelButton.addActionListener(this); frame.setDefaultCloseOperation(JFrame.EXIT_ON_C
22、LOSE); frame.pack(); frame.setBounds(200,100,750,550); frame.setVisible(true); } public void actionPerformed(ActionEvent e){ if(logonButton1.equals(e.getSource())&&(username.getText().equals("123")==true)&&(password.getText().equals("123")==true)){ GZGLZJM gz=
23、new GZGLZJM(); gz.create(); } else{JOptionPane.showMessageDialog(null,"對不起,你輸入的密碼錯誤!"); }; if(logonButton2.equals(e.getSource())&&(username.getText().equals(t1.getText())==true)&&(password.getText().equals(t2.getText())==true)){ XK xk=new XK(); xk.create(); Conn
24、ection con; Statement sql; ResultSet rs; Vector vector=new Vector(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e1) { System.out.println("" + e1); } try { con = DriverManager.getConnection("jdbc
25、:odbc:123", "", ""); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); sql.executeQuery("SELECT Gno,mm FROM Y WHERE Gno="+t1.getText() +"AND mm="+t2.getText()); }catch (SQLException e1) { System.out.println(e1); } } if(
26、cancelButton.equals(e.getSource())){ System.exit(0); } } } class GZGLZJM extends JFrame implements ActionListener{ JFrame f=new JFrame("工資管理系統(tǒng)"); JButton b1=new JButton("津貼管理"); JButton b2=new JButton("總查詢"); JButton b3=new JButton("工資管理"); JButton b4=new
27、 JButton("后勤管理"); JButton b6=new JButton("員工個人信息管理"); JButton b5=new JButton("返回"); ImageIcon im=new ImageIcon("3.jpg"); JLabel a3=new JLabel(im); void create(){ JPanel p=(JPanel)f.getContentPane(); JPanel p1=new JPanel(); p.setLayout(new FlowLayout());
28、 p.add(b1); p.add(new JLabel(" ")); p.add(b6); p.add(new JLabel(" ")); p.add(b3); p.add(new JLabel(" ")); p.add(b4); p.add(new JLabel(" ")); p.add(b2); p.add(new JLabel(" ")); p.add(b
29、5); p.add(a3); p.setBackground(Color.red); p.setVisible(true); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this
30、); f.setBounds(200,100,800,600); f.setVisible(true); } public void actionPerformed(ActionEvent e){ if(b5.equals(e.getSource())){//返回 DL d=new DL(); f.dispose(); } if(b1.equals(e.getSource())){//津貼管理 JTGL jt=new JTGL(); jt.create();
31、 } if(b6.equals(e.getSource())){//員工個人信息管理 YGGL yg=new YGGL(); yg.create(); } if(b2.equals(e.getSource())){//查詢 XK xk=new XK(); xk.create(); } if(b4.equals(e.getSource())){//后勤管理 KQGL kq=new KQGL(); kq.create(); } if(b3.equals(e.getS
32、ource())){//工資管理 GZGL gz=new GZGL(); gz.create(); } } } class KQGL implements ActionListener{ JFrame f=new JFrame("錄入修改刪除考勤信息"); JButton b1=new JButton("錄入"); JButton b2=new JButton("修改"); JButton b3=new JButton("刪除"); JButton b4=new JButton("查詢所有"); JBut
33、ton b5=new JButton("返回"); JTextField tf1=new JTextField(4); JTextField tf2=new JTextField(4); JTextField tf3=new JTextField(4); JTextField tf4=new JTextField(4); JTextField tf5=new JTextField(6); JButton b6=new JButton("查詢單人考勤"); String[] cloum={"職工號","缺勤天數(shù)","缺勤類別","缺勤
34、時間"}; Object[][] row=new Object[50][4]; JTable table=new JTable(row,cloum); JScrollPane scrollpane=new JScrollPane(table); JSplitPane splitpane=new JSplitPane(JSplitPane.VERTICAL_SPLIT); void create() { JPanel p=(JPanel)f.getContentPane(); p.setLayout(new FlowL
35、ayout()); //p.add(scrollpane); p.add(splitpane); JPanel p1=new JPanel(); p1.add(b1); p1.add(b2); p1.add(b3); p1.add(b4); p1.add(b6); p1.add(b5); JPanel p2=new JPanel(); p2.setBackground(Color.red); p2.add(scrollpane);
36、 JPanel p3=new JPanel(); p.setLayout(new FlowLayout()); p.add(new JLabel("")); p.add(new JLabel("職工號")); p.add(tf1); p.add(new JLabel("缺勤天數(shù)")); p.add(tf2); p.add(new JLabel("缺勤類別")); p.add(tf3); p.add(new JLabel("")); p.add(new JLabel("缺勤時間"));
37、 p.add(tf4); p.add(new JLabel(" 在此處輸入職工號點擊查詢刪除")); p.add(tf5); splitpane.add(p1,splitpane.TOP); splitpane.add(p2,splitpane.BOTTOM); splitpane.setDividerLocation(50); p.setBackground(Color.CYAN); b1.addActionListener(this); b
38、2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); f.setBounds(200,100,500,600); f.setResizable(true);//可以調整界面大小 f.setVisible(true); }
39、 public void actionPerformed(ActionEvent e){ if(b1.equals(e.getSource())){ //添加 Connection con; Statement sql; ResultSet rs; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e1) { System.out.println("" + e1);
40、 } try { con = DriverManager.getConnection("jdbc:odbc:123", "", ""); sql = con.createStatement(); String insertStr = "INSERT INTO K VALUES " + "(" + "'" + tf1.getText() + "'" + "," + tf2.getText()+"," + "'" +tf3.getText()+"'" + ","+tf4.getText()+")";
41、 sql.executeUpdate(insertStr); con.close(); } catch (SQLException e1) { System.out.println(e1); } } if(b2.equals(e.getSource())){//修改 Connection con; Statement sql; ResultSet rs; try { Class.forName("sun.jdbc.odbc.Jdb
42、cOdbcDriver"); } catch (ClassNotFoundException e1) { System.out.println("" + e1); } try { con = DriverManager.getConnection("jdbc:odbc:123", "", ""); sql = con.createStatement(); sql.executeUpdate("UPDATE K SET ts="+tf2.getText()+"WHERE Kno="+tf1.get
43、Text()+""); sql.executeUpdate("UPDATE K SET lb="+tf3.getText()+"WHERE Kno="+tf1.getText()+""); sql.executeUpdate("UPDATE K SET sj="+tf4.getText()+"WHERE Kno="+tf1.getText()+""); con.close(); } catch (SQLException e1) { System.out
44、.println(e1); } } if(b3.equals(e.getSource())){//刪除 Connection con; Statement sql; ResultSet rs; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e1) { System.out.println("" + e1); }
45、try { con = DriverManager.getConnection("jdbc:odbc:123", "", ""); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); sql.executeUpdate("DELETE FROM K WHERE Kno="+tf5.getText()); con.close(); } catch (SQLEx
46、ception e1) { System.out.println(e1); } } if(b4.equals(e.getSource())){//查詢全部 Connection con; Statement sql; ResultSet rs; Vector vector=new Vector(); try { Class.forName("sun.jdbc.odbc.JdbcOd
47、bcDriver"); } catch (ClassNotFoundException e1) { System.out.println("" + e1); } try { con = DriverManager.getConnection("jdbc:odbc:123", "sa", ""); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); if(b4.equals(e.getSource())){
48、 for(int i=0;i<50;i++) for(int j=0;j<4;j++) table.setValueAt("",i,j) ; rs = sql.executeQuery("SELECT * FROM K ORDER BY Kno DESC"); int k=-1; while(rs.next()) { ++k; String Kno = rs.getString(1); String ts = rs
49、.getString(2); String lb = rs.getString(3); String sj = rs.getString(4); table.setValueAt(Kno,k,0); table.setValueAt(ts,k,1); table.setValueAt(lb,k,2); table.setValueAt(sj,k,3); } } }catch (SQLException
50、 e1) { System.out.println(e1); } } if(b6.equals(e.getSource())){ //查詢關鍵字 Connection con; Statement sql; ResultSet rs; Vector vector=new Vector(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e
51、1) { System.out.println("" + e1); } try { con = DriverManager.getConnection("jdbc:odbc:123", "sa", ""); sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); if(b6.equals(e.getSource())){ for(int i=0;i<50;i++)
52、 for(int j=0;j<4;j++) table.setValueAt("", i, j); rs = sql.executeQuery("SELECT * FROM K WHERE Kno="+tf5.getText()); int k=-1; while (rs.next()) { ++k; String Kno = rs.getString(1); String t
53、s = rs.getString(2); String lb = rs.getString(3); String sj = rs.getString(4); table.setValueAt(Kno,k,0); table.setValueAt(ts,k,1); table.setValueAt(lb,k,2); table.setValueAt(sj,k,3);
54、 } } }catch (SQLException e1) { System.out.println(e1); } } if(b5.equals(e.getSource())){//返回 DL dl=new DL(); f.dispose(); } } } 3.4系統(tǒng)測試 進入歡迎主界面之后,點擊進入系統(tǒng)—>輸入密碼點擊登錄->點擊所要進入的模塊管理
55、->對數(shù)據(jù)庫進行錄入修改刪除查詢操作,如數(shù)據(jù)庫中,如: 刪除:在右下角框內輸入 ,如職工號:030301 然后點擊刪除,可以在表中刪除其信息. 錄入:在表下面空內填入所對應的信息,如職工號:030301 缺勤天數(shù):6 缺勤類別:病假缺勤時間:2008-4-25,再點擊錄入,就可以錄入該職工的信息. 修改: 在表下面空內填入所對應的信息, 如職工號:030301 缺勤天數(shù):6 缺勤類別:病假缺勤時間:2008-4-25,再點擊修改,就可以修改此人信息. 查詢:點查詢所有可以查詢此表全部信息; 在右下角框內輸入 ,職工號:030301 然后點擊查詢單人…即可查詢單人信息. 3.5考勤表
56、的程序測試 1.查詢個人信息 2.查詢所有人的信息 3.插入一個人的信息,例如:030330 4.修改一個人的信息,例如修改030329的 5.刪除信息,例如刪除03030 3.6個人體會 通過課程設計讓我有機會把知識學以至用,而不單是停留在理論的基礎上,為以后的學習和工作提供了寶貴的經驗,打下了堅實的基礎,雖然課程設計時間短暫,但對我來說過的很充實,更重要的是學到了很多書本上沒有的東西,提高了自己的動手能力.在此過程中又學到了許多未知的代碼,大大的充實了自己的知識. 第 - 34 - 頁 共 35 頁
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。