數據庫課程設計-中小型企業(yè)工資管理的設計與實現_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計說明書</b></p><p>  課程設計名稱 數據庫原理課程設計 </p><p>  專 業(yè) 計算機科學與技術 </p><p>  2017 年 1 月 9 日</p><p>  課 程 設 計 任 務 書</p>

2、<p>  注:此任務書由指導教師在課程設計前填寫,發(fā)給學生作為本課程設計的依據。</p><p><b>  課程設計成績考核表</b></p><p>  2017 年 1 月 13 日</p><p>  題目:中小型企業(yè)工資管理的設計與實現</p><p><b>  一、問題

3、描述:</b></p><p>  設計一套中小型企業(yè)工資管理方案,其中應具有一定的人事檔案管理功能。</p><p>  在考慮具體中小型企業(yè)工資管理的業(yè)務處理過程中,還需要重點考慮如下業(yè)務處理過程:</p><p> ?。?)工資管理系統(tǒng)是建立在人事檔案系統(tǒng)之上的,職能部門是財務處和會計室。</p><p> ?。?)通過對職

4、工建立人事檔案,根據其考勤情況以及相應的工資級別,算出其相應的工資。可以根據職工的考勤、職務、部門和各種稅費自動求出工資</p><p> ?。?)為了便于企業(yè)領導掌握本企業(yè)的工資信息,在系統(tǒng)中應加入各種查詢功能,包括個人信息、職工工資、本企業(yè)內某一個月或某一部門的工資情況查詢,系統(tǒng)應能輸出各類統(tǒng)計報表。</p><p><b>  二、需求分析:</b></p

5、><p><b>  數據流圖:</b></p><p><b>  數據字典:</b></p><p><b>  三、概念結構設計:</b></p><p><b>  局部E-R圖:</b></p><p><b>  

6、職工屬性:</b></p><p><b>  部門屬性:</b></p><p><b>  考勤屬性:</b></p><p><b>  工資屬性:</b></p><p><b>  每日情況屬性:</b></p><

7、;p><b>  全局E-R圖:</b></p><p>  用到的工具:E-R圖</p><p><b>  四、邏輯結構設計:</b></p><p><b>  初始的關系模式:</b></p><p>  職工:E(Eid, Ename, age, sex, jo

8、b, manage_id, department_id)</p><p>  工資:S(Sid, Sshould, Sreally, give_month, bonus_pct, Eid)</p><p>  部門:D(Did, Dname, manage_id)</p><p>  考勤:C(Cid, late_times, leave_times, vacate

9、_times, Eid, checking_date)</p><p>  每日情況:Daily(daily_id, daily_date, should_time, really_time, Cid)</p><p>  關系模式的規(guī)范化處理:</p><p>  因為沒有傳遞函數依賴和完全函數依賴,所以是第三范式</p><p><

10、b>  邏輯結構:</b></p><p><b>  職工表:</b></p><p><b>  工資表:</b></p><p><b>  部門表:</b></p><p><b>  考勤表:</b></p>&l

11、t;p><b>  每日情況表:</b></p><p><b>  物理結構設計:</b></p><p>  Employees表:</p><p>  CREATE TABLE `employees` (</p><p>  `employee_id` VARCHAR(10) NOT N

12、ULL COMMENT 'primary key',</p><p>  `manage_id` VARCHAR(10) NOT NULL COMMENT 'foreign key',</p><p>  `department_id` VARCHAR(10) NULL DEFAULT NULL COMMENT 'foreign key',&

13、lt;/p><p>  `employee_name` VARCHAR(10) NOT NULL COMMENT 'NOT NULL',</p><p>  `sex` TINYINT(2) NOT NULL DEFAULT '1' COMMENT '1表示男,2表示女',</p><p>  `age` INT(10)

14、NULL DEFAULT NULL COMMENT '大于0',</p><p>  `job` VARCHAR(10) NOT NULL COMMENT '職務',</p><p>  PRIMARY KEY (`employee_id`),</p><p>  INDEX `FK_employees_departments` (`

15、department_id`),</p><p>  INDEX `FK_employees_employees` (`manage_id`),</p><p>  CONSTRAINT `FK_employees_departments` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`),&l

16、t;/p><p>  CONSTRAINT `FK_employees_employees` FOREIGN KEY (`manage_id`) REFERENCES `employees` (`employee_id`)</p><p><b>  )</b></p><p>  COMMENT='職工表'</p>

17、<p>  COLLATE='utf8_general_ci'</p><p>  ENGINE=InnoDB</p><p><b>  ;</b></p><p>  Departments表:</p><p>  CREATE TABLE `departments` (</p>

18、<p>  `department_id` VARCHAR(10) NOT NULL COMMENT 'primary key',</p><p>  `manage_id` VARCHAR(10) NULL DEFAULT NULL COMMENT 'foreign key',</p><p>  `department_name` VARC

19、HAR(10) NULL DEFAULT NULL,</p><p>  PRIMARY KEY (`department_id`),</p><p>  INDEX `FK_departments_employees` (`manage_id`),</p><p>  CONSTRAINT `FK_departments_employees` FOREIGN KE

20、Y (`manage_id`) REFERENCES `employees` (`employee_id`)</p><p><b>  )</b></p><p>  COMMENT='部門'</p><p>  COLLATE='utf8_general_ci'</p><p>  E

21、NGINE=InnoDB</p><p><b>  ;</b></p><p>  Checking表:</p><p>  CREATE TABLE `checking` (</p><p>  `checking_id` VARCHAR(10) NOT NULL COMMENT 'primary key&#

22、39;,</p><p>  `employee_id` VARCHAR(10) NOT NULL COMMENT 'foreign key',</p><p>  `vacate_times` INT(2) NULL DEFAULT NULL,</p><p>  `late_times` INT(2) NULL DEFAULT NULL,<

23、/p><p>  `leave_times` INT(2) NULL DEFAULT NULL,</p><p>  `checking_date` DATE NULL DEFAULT NULL,</p><p>  PRIMARY KEY (`checking_id`),</p><p>  INDEX `FK_checking_employe

24、es` (`employee_id`),</p><p>  CONSTRAINT `FK_checking_employees` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`)</p><p><b>  )</b></p><p>  COMMENT=&#

25、39;考勤'</p><p>  COLLATE='utf8_general_ci'</p><p>  ENGINE=InnoDB</p><p><b>  ;</b></p><p>  Daily_satiation表:</p><p>  CREATE TABLE

26、 `daily_situation` (</p><p>  `daily_id` VARCHAR(10) NOT NULL COMMENT 'primary key',</p><p>  `checking_id` VARCHAR(10) NULL DEFAULT NULL COMMENT 'foreign key',</p><p&

27、gt;  `daily_date` DATE NULL DEFAULT NULL,</p><p>  `should_time` DATETIME NULL DEFAULT NULL,</p><p>  `really_time` DATETIME NULL DEFAULT NULL,</p><p>  PRIMARY KEY (`daily_id`),<

28、;/p><p>  INDEX `FK_daily_situation_checking` (`checking_id`),</p><p>  CONSTRAINT `FK_daily_situation_checking` FOREIGN KEY (`checking_id`) REFERENCES `checking` (`checking_id`)</p><p&g

29、t;<b>  )</b></p><p>  COMMENT='每日情況'</p><p>  COLLATE='utf8_general_ci'</p><p>  ENGINE=InnoDB</p><p><b>  ;</b></p><

30、p><b>  Salary表:</b></p><p>  CREATE TABLE `salary` (</p><p>  `salary_id` VARCHAR(10) NOT NULL COMMENT 'primary key',</p><p>  `employee_id` VARCHAR(10) NOT N

31、ULL COMMENT 'foreign key',</p><p>  `bonus_pct` DOUBLE NOT NULL DEFAULT '0.1' COMMENT '獎金率',</p><p>  `give_date` DATE NULL DEFAULT NULL,</p><p>  `should_sa

32、lary` INT(11) NULL DEFAULT NULL COMMENT '大于0',</p><p>  `really_salary` INT(11) NULL DEFAULT NULL COMMENT '大于0',</p><p>  PRIMARY KEY (`salary_id`),</p><p>  INDEX `

33、FK_salary_employees` (`employee_id`),</p><p>  CONSTRAINT `FK_salary_employees` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`employee_id`)</p><p><b>  )</b></p><p&

34、gt;  COMMENT='工資'</p><p>  COLLATE='utf8_general_ci'</p><p>  ENGINE=InnoDB</p><p><b>  ;</b></p><p><b>  觸發(fā)器設計:</b></p>

35、<p> ?。?)每日情況觸發(fā)器:</p><p>  當應到時間<實到時間時,遲到次數自動加1</p><p>  CREATE DEFINER=`root`@`localhost` TRIGGER `daily_situation_after_update` AFTER UPDATE ON `daily_situation` FOR EACH ROW BEGIN<

36、/p><p>  UPDATE checking c,daily_situation d</p><p>  SET c.late_times = c.late_times + 1</p><p>  WHERE d.should_time < d.really_time and d.checking_id = c.checking_id and date_for

37、mat(d.should_time,'%Y-%m-%d')=date_format(d.really_time,'%Y-%m-%d');</p><p><b>  END</b></p><p><b>  功能演示:</b></p><p>  第一個人1101的11月份考勤情況中,起初

38、沒有遲到</p><p>  現把他的第一天情況改成遲到</p><p>  觸發(fā)器響應,自動修改checking表,使得第一個人的遲到次數加1</p><p> ?。?) 考勤_工資觸發(fā)器:</p><p>  實發(fā)工資=應發(fā)工資+應發(fā)工資*獎金率-遲到次數*50-早退次數*20-請假次數*10</p><p>  

39、CREATE DEFINER=`root`@`localhost` TRIGGER `checking_salary` AFTER UPDATE ON `checking` FOR EACH ROW BEGIN</p><p>  update salary s,checking c</p><p>  set really_salary = 0.9*(should_salary+shou

40、ld_salary*bonus_pct-(select late_times from checking c where s.employee_id = c.employee_id)*50- (select leave_times from checking c where s.employee_id = c.employee_id)*20 - (select vacate_times from checking c where s.

41、employee_id = c.employee_id)*10)</p><p>  where s.give_date = c.checking_date;</p><p><b>  END</b></p><p><b>  功能演示:</b></p><p>  第一個人在11月份的考核中,

42、遲到了一次</p><p>  工資=0.9*(10000+10000*0.11-50)=9945</p><p>  現更改20141101李四的考勤表,遲到改為5次,早退改為3次</p><p>  李四的工資變?yōu)椋汗べY=(10000+10000*0.11-50*5-20*3)=9711</p><p><b>  六、程序:&

43、lt;/b></p><p><b>  個人信息查詢:</b></p><p>  在職工表中右鍵簡歷視圖:SELECT e1.employee_id "員工編號",e1.employee_name "姓名",e1.sex "性別",e1.age "年齡",e1.job &quo

44、t;工作",department_name "部門",e2.employee_name "經理"</p><p>  FROM employees e1,employees e2,departments d</p><p>  WHERE e1.manage_id = e2.employee_id and e1.department_id

45、= d.department_id </p><p><b>  職工工資查詢:</b></p><p>  在工資表中右鍵新建視圖,輸入查詢語句</p><p> ?。?)查詢11月份的工資</p><p>  SELECT e.employee_id "員工編號",employee_name &q

46、uot;姓名",job,department_name "部門",should_salary "應發(fā)工資",really_salary "實發(fā)工資",give_date "發(fā)放時間"</p><p>  FROM employees e,departments d,salary s</p><p> 

47、 WHERE e.department_id = d.department_id and e.employee_id = s.employee_id and date_format(s.give_date,'%Y-%m-%d') = '2016-11-30' </p><p><b>  查詢行政部的工資</b></p><p>  在

48、我錄入數據的時候,設定了以下規(guī)則:</p><p>  部門ID 部門編號 部門經理 獎金率 應發(fā)工資</p><p>  101 行政部 行政經理 11% 10000</p><p>  102 財務部 財務總監(jiān) 14% 25000</p><p>  103 策劃

49、部 策劃總監(jiān) 12% 18000</p><p>  104 研發(fā)部 研發(fā)總監(jiān) 15% 30000</p><p>  105 公關部 公關經理 11% 15000</p><p>  106 市場部 產品經理 13% 20000</p><p

50、>  SELECT e.employee_id "員工編號",employee_name "姓名",job,department_name "部門",should_salary "應發(fā)工資",really_salary "實發(fā)工資",give_date "發(fā)放時間"</p><p>  F

51、ROM employees e,departments d,salary s</p><p>  WHERE e.department_id = d.department_id and e.employee_id = s.employee_id and date_format(s.give_date,'%Y-%m-%d') = '2016-11-15' and d.departme

52、nt_id = '101' </p><p><b>  考勤表</b></p><p>  考勤表右鍵新建視圖,輸入查詢信息</p><p>  SELECT e.employee_id "員工編號",employee_name "姓名",department_name "部門

53、",late_times "遲到次數",leave_times "早退次數",vacate_times "請假次數",checking_date "日期"</p><p>  FROM employees e,departments d,checking c</p><p>  WHERE e.dep

54、artment_id = d.department_id and e.employee_id = c.employee_id </p><p><b>  七、設計小結:</b></p><p> ?。?)課程設計的總過程:</p><p>  1看懂問題描述,分析要實現哪些功能</p><p>  2根據問題描述,畫出

55、數據流圖,寫出詳細的數據字典</p><p>  找出每個實體,分析每個實體的屬性,以及實體之間的聯系并畫出E-R圖</p><p>  3從E-R圖中找到實體屬性之后,建立最初的關系模式,并將其進行規(guī)范化處理,處理成3NF的形式</p><p><b>  4創(chuàng)建各表</b></p><p>  根據E-R圖,創(chuàng)建各表

56、(包括職工表,部門表,工資表,考勤表,每日情況表),在每個表里添加它們的屬性</p><p>  再將表和表之間的聯系添加到表中</p><p>  例如:(1)部門和職工是一對多的關系,所以將部門的ID加到職工表中</p><p> ?。?)職工和考勤表是一對一的關系,所以把職工的ID加到考勤表中,或者將考勤表的ID加到職工表中。</p><p

57、>  (為了體現規(guī)范化,將這個聯系的ID放在原表中的ID之后)</p><p>  為每一個表中的屬性設置主碼(一般為其各自的ID號)以及外碼</p><p>  5在編寫SQL語句的時候,注意完整性約束</p><p>  Ex:姓名不能為空。用NOT NULL來約束</p><p>  職工的性別只能取’男’和’女’這兩個屬性che

58、ck(sex IN(’男’,’女’));</p><p>  6 為每一個表填寫數據</p><p>  7 建立一個觸發(fā)器,來計算員工工資</p><p>  員工工資=應發(fā)工資(底薪)+應發(fā)工資*獎金率-遲到次數*50-早退次數*20-請假次數*10</p><p>  8設計并撰寫實驗報告</p><p><

59、;b> ?。?)心得</b></p><p>  每一次的課程設計,都能學到很多知識,首先是要詳讀課程設計指導書和要求,按照整個步驟下去,真的能起到事半功倍的效果。</p><p>  只有把問題分析透徹了,才能找出有哪些實體和以及這些實體所對應的屬性,再結合實際生活中的情況,分析出實體和實體之間有什么聯系。實體其實就是我們要創(chuàng)建的表,屬性是表內部的屬性,填數據的環(huán)節(jié)是比

60、較耗時的(一個人的每日情況有一條數據,每人每月的考勤就是30條數據,23個員工,就是23*30=690條數據),然后才是實現功能的環(huán)節(jié),創(chuàng)建觸發(fā)器,通過嵌套寫查詢工資的語句,遇到困難的時候,研讀教科書,上網找資料,課下和在實驗室的同學一起交流,努力找到解決問題的辦法,受益良多 </p><p>  遇到的問題以及我的思考 </p><p>  如果表中的主碼的數據不唯一,

61、就設置不了主鍵;就拿每日情況表來說</p><p>  每日編號不唯一,所以設置不了主碼。原因:一天中對23個員工進行考勤,所以每日編號相同,考勤號不同

62、

63、 </p><p>  工資算法設定的原因:考慮到遲到和早退的性質不同,所以懲罰制度也不同。早退可能是提前完成了工作,也可能是把工作帶回家里來做,有很多的因素,所以懲罰程度較輕。另外,每日情況表的遲到時間僅供參考,可以作為一個遲到的依據來考勤一個員工的工作,如果遲到時間過長,次數過多,可考慮扣除當月獎金</p><p>  關于稅率,原本我想根據工資的多少來設定不統(tǒng)一的稅率,但是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論