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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

5、><p><b>  數(shù)據(jù)流圖:</b></p><p><b>  數(shù)據(jù)字典:</b></p><p><b>  三、概念結(jié)構(gòu)設(shè)計(jì):</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>  四、邏輯結(jié)構(gòu)設(shè)計(jì):</b></p><p><b>  初始的關(guān)系模式:</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ān)系模式的規(guī)范化處理:</p><p>  因?yàn)闆]有傳遞函數(shù)依賴和完全函數(shù)依賴,所以是第三范式</p><p><

10、b>  邏輯結(jié)構(gòu):</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>  物理結(jié)構(gòu)設(shè)計(jì):</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 '職務(wù)',</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 '獎(jiǎng)金率',</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ā)器設(shè)計(jì):</b></p>

35、<p> ?。?)每日情況觸發(fā)器:</p><p>  當(dāng)應(yīng)到時(shí)間<實(shí)到時(shí)間時(shí),遲到次數(shù)自動(dòng)加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>  第一個(gè)人1101的11月份考勤情況中,起初

38、沒有遲到</p><p>  現(xiàn)把他的第一天情況改成遲到</p><p>  觸發(fā)器響應(yīng),自動(dòng)修改checking表,使得第一個(gè)人的遲到次數(shù)加1</p><p> ?。?) 考勤_工資觸發(fā)器:</p><p>  實(shí)發(fā)工資=應(yīng)發(fā)工資+應(yīng)發(fā)工資*獎(jiǎng)金率-遲到次數(shù)*50-早退次數(shù)*20-請假次數(shù)*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>  第一個(gè)人在11月份的考核中,

42、遲到了一次</p><p>  工資=0.9*(10000+10000*0.11-50)=9945</p><p>  現(xiàn)更改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>  個(gè)人信息查詢:</b></p><p>  在職工表中右鍵簡歷視圖:SELECT e1.employee_id "員工編號",e1.employee_name "姓名",e1.sex "性別",e1.age "年齡",e1.job &quo

44、t;工作",department_name "部門",e2.employee_name "經(jīng)理"</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 "應(yīng)發(fā)工資",really_salary "實(shí)發(fā)工資",give_date "發(fā)放時(shí)間"</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、我錄入數(shù)據(jù)的時(shí)候,設(shè)定了以下規(guī)則:</p><p>  部門ID 部門編號 部門經(jīng)理 獎(jiǎng)金率 應(yīng)發(fā)工資</p><p>  101 行政部 行政經(jīng)理 11% 10000</p><p>  102 財(cái)務(wù)部 財(cái)務(wù)總監(jiān) 14% 25000</p><p>  103 策劃

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

50、>  SELECT e.employee_id "員工編號",employee_name "姓名",job,department_name "部門",should_salary "應(yīng)發(fā)工資",really_salary "實(shí)發(fā)工資",give_date "發(fā)放時(shí)間"</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 "遲到次數(shù)",leave_times "早退次數(shù)",vacate_times "請假次數(shù)",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>  七、設(shè)計(jì)小結(jié):</b></p><p>  (1)課程設(shè)計(jì)的總過程:</p><p>  1看懂問題描述,分析要實(shí)現(xiàn)哪些功能</p><p>  2根據(jù)問題描述,畫出

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

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

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

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

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

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

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

62、

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

溫馨提示

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

最新文檔

評論

0/150

提交評論