考勤管理系統(tǒng)_第1頁
考勤管理系統(tǒng)_第2頁
考勤管理系統(tǒng)_第3頁
考勤管理系統(tǒng)_第4頁
考勤管理系統(tǒng)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華科學(xué)院數(shù)據(jù)庫系統(tǒng)課程設(shè)計PAGE PAGE 47第一章系統(tǒng)概述1.1系統(tǒng)開發(fā)的背景與意義1.1.1系統(tǒng)開發(fā)背景現(xiàn)在不論哪個企業(yè),都要進行考勤,一些企業(yè)在考勤管理方面用了大量的人力和財力,不說準確度和可信度如何,其效率很低,而且容易出錯,不利于管理。所以人工考勤已經(jīng)很難再滿足企業(yè)規(guī)范化管理的要求,隨著數(shù)據(jù)庫技術(shù)的發(fā)展和企業(yè)信息化建設(shè)的進行,使用計算機管理考勤成為一種主流趨勢,它不僅為企業(yè)減少了人力財力的付出,而且也大大減輕了考勤工作人員的工作量。本文系統(tǒng)的闡述了企業(yè)考勤管理設(shè)計開發(fā)的全過程。包括系統(tǒng)需求調(diào)查分析,概念結(jié)構(gòu)設(shè)計,邏輯結(jié)構(gòu)設(shè)計等部分。1.1.2 系統(tǒng)開發(fā)意義開發(fā)本系統(tǒng)的目的,就是要

2、解決目前企業(yè)中關(guān)于員工出勤管理中所面臨的一系列問題。開發(fā)出企業(yè)考勤管理系統(tǒng)能有效地提高企業(yè)辦事效率,解決目前員工出勤管理問題,實現(xiàn)員工請出勤信息和缺勤信息對企業(yè)領(lǐng)導(dǎo)透明,使管理人員及時把握員工的情況,及時與員工溝通,提高生產(chǎn)質(zhì)量。第二章系統(tǒng)需求分析2.1系統(tǒng)功能要求(1)記錄每個員工每天所有進入公司的時刻和離開公司的時刻。(2)每天結(jié)束時自動統(tǒng)計當(dāng)天的工作時間(3)每天結(jié)束時自動統(tǒng)計當(dāng)天遲到或早退的次數(shù)。(4)對于彈性工作制,每天結(jié)束時自動統(tǒng)計當(dāng)月的工時,并自動算出當(dāng)月欠缺或富余的時間(5)每個月末統(tǒng)計該月的工作時間判斷是否足夠(6)每個月末統(tǒng)計該月的工作天數(shù)并判斷是否足夠(7)管理人員查詢并

3、修改工作時間(特殊情況下修改)(8)管理人員賬戶管理(如設(shè)置密碼等)(9)管理人員設(shè)定早退及遲到的條件,每個月的工作時間(10)管理人員設(shè)定每個月的工作日期及放假日期22 需求分析概述實際的管理和記錄工作非常需要快速獲知各個部門員工的每日出勤情況,以便于及時向高層管理者反映員工的出勤,缺勤情況。目前,由于負責(zé)考勤的員工,工作任務(wù)比較多,而且還都是重復(fù)數(shù)據(jù),讓工作者沒有辦法及時的向上報告。工作問題不能及時處理。針對以上的情況,我們提出企業(yè)考勤管理系統(tǒng),實現(xiàn)網(wǎng)上考勤任務(wù),以減輕考勤人員的工作量。我公司準備開發(fā)員工考勤管理系統(tǒng),完成員工基本信息維護、企業(yè)的部門信息維護、企業(yè)基本考勤類型的維護、員工考

4、勤的管理、員工考勤的查詢與分析。實現(xiàn)人事考勤的需要,包括員工遲到、早退的情況的記錄,在每個月底計算工資對員工和對員工進行績效評估的時候,對員工整個月的考勤記錄進行查詢和統(tǒng)計。23系統(tǒng)層次劃分設(shè)定工作放假日期統(tǒng)計工作時間記錄時刻統(tǒng)計遲到早退次數(shù)統(tǒng)計工時設(shè)置密碼設(shè)定遲到早退條件判斷工作天數(shù)足夠判斷工作時間足夠查詢修改工作時間考勤系統(tǒng)管理管理系統(tǒng)整合系統(tǒng)考勤系統(tǒng)設(shè)定工作放假日期統(tǒng)計工作時間記錄時刻統(tǒng)計遲到早退次數(shù)統(tǒng)計工時設(shè)置密碼設(shè)定遲到早退條件判斷工作天數(shù)足夠判斷工作時間足夠查詢修改工作時間考勤系統(tǒng)管理管理系統(tǒng)整合系統(tǒng)考勤系統(tǒng)畢業(yè)設(shè)計代做 QQ9361235 80634579博士碩士學(xué)生研究生留學(xué)生

5、論文代寫 程序代做 軟件制作 網(wǎng)站開發(fā)圖2.1 系統(tǒng)層次圖員工刷卡24 系統(tǒng)數(shù)據(jù)流圖員工刷卡產(chǎn)生數(shù)據(jù)進出時間信息錄入進出情況 進出記錄分析數(shù)據(jù) 傳送 統(tǒng)分析數(shù)據(jù)數(shù)據(jù)統(tǒng)計 錄入遲到情況 遲到記錄統(tǒng) 計數(shù)據(jù)統(tǒng)計 錄入早退情況計 進早退記錄統(tǒng) 遲 出錄入 準備數(shù)據(jù)錄入工作時間情況 計 到 記考勤管理系統(tǒng)時間記錄 早 記 錄考勤管理系統(tǒng) 退 錄統(tǒng)計信息工作日期 放假日期 統(tǒng)計工作時間記錄統(tǒng)計信息評 估參照已統(tǒng)計信息評 估職稱表 完整的考勤數(shù)據(jù) 月度考勤統(tǒng)計 圖2.2系統(tǒng)數(shù)據(jù)流程圖登陸員工考勤管理系統(tǒng)帳號和 核對密碼 查詢考勤統(tǒng)計登陸員工考勤管理系統(tǒng) 月度考勤統(tǒng)計密碼 查詢?nèi)掌谇闆r工作日期 放假日期圖2

6、.3 系統(tǒng)查詢數(shù)據(jù)流程圖25 數(shù)據(jù)字典(1),數(shù)據(jù)項描述數(shù)據(jù)項別名類型長度取值范圍 取值含義含義說明員工編號ynobigint0000000至9999999前三位為部門編號,后四位為順序編號唯一標識每個員工員工姓名ynamechar3規(guī)范化唯一標識每個員工員工性別ysexchar“男”或“女”規(guī)范化性別是區(qū)分員工的一個大致范圍職位yzhibigint標識員工工作性質(zhì)入職時間ytimebigint2000至2050日期進入職位時間員工年齡yageint20至70員工年齡的允許范圍唯一標識員工年齡密碼ysecretint000000至9999996位登陸密碼唯一標識每個人的信息表2-1 數(shù)據(jù)項描述

7、表(2)數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)結(jié)構(gòu)說明組成員工信息是考勤管理子系統(tǒng)的主體數(shù)據(jù)結(jié)構(gòu),定義了一個員工的有關(guān)信息員工編號,員工姓名,員工性別,出生日期,職位,密碼部門信息是考勤管理子系統(tǒng)的主體數(shù)據(jù)結(jié)構(gòu),定義了一個部門的有關(guān)信息部門編號,部門名稱表2-2數(shù)據(jù)結(jié)構(gòu)描述(3)數(shù)據(jù)流描述數(shù)據(jù)流說明數(shù)據(jù)流來源數(shù)據(jù)流去向組成平均流量高峰期流量核對密碼根據(jù)不同人員相應(yīng)的權(quán)限登錄時的信息考勤管理系統(tǒng)管理員的帳號密碼與普通員工的帳號密碼每天傳輸1000次1500次完整的考勤數(shù)據(jù)員工的考勤數(shù)據(jù)月度考勤統(tǒng)計工資評估月度考勤編號、員工編號、日期、累計正常工作時間遲到次數(shù)、早退次數(shù)、曠工次數(shù)每月傳輸1500次1500次表3-3數(shù)據(jù)

8、流描述(4)數(shù)據(jù)存儲數(shù)據(jù)存儲說明流入數(shù)據(jù)流流出數(shù)據(jù)流組成數(shù)據(jù)量存取方式月度考勤統(tǒng)計記錄員工每月的考勤情況一個月的信息統(tǒng)計統(tǒng)計好的考勤數(shù)據(jù)月度考勤編號、員工編號、日期、正常工作時間、遲到次數(shù)、早退次數(shù)、曠工次數(shù)每月1500次更新,順序檢索表3-4數(shù)據(jù)存儲(5)處理過程處理過程說明輸入數(shù)據(jù)流輸出數(shù)據(jù)流處理登錄用正確的賬號登錄賬號和密碼核對密碼要求密碼正確,并且根據(jù)賬戶名來區(qū)分管理員和普通員工錄入數(shù)據(jù)將準備的數(shù)據(jù)依次錄入 準備的出差,請假,加班,出勤的數(shù)據(jù)錄入正常工作,遲到早退,出勤的情況要求數(shù)據(jù)根據(jù)其內(nèi)容分別編入不同的記錄中修改數(shù)據(jù)根據(jù)相應(yīng)的評估方法來修改數(shù)據(jù)完整的考勤數(shù)據(jù)修改數(shù)據(jù)單把錯誤數(shù)據(jù)修改

9、成正確數(shù)據(jù)表3-5處理過程第三章系統(tǒng)總體設(shè)計3.1 系統(tǒng)總體設(shè)計目標經(jīng)過調(diào)查、信息流程分析、數(shù)據(jù)收集,并結(jié)合需求分析,明確了該子系統(tǒng)的功能:(1)給員工編號,登記其基本信息。(2)給員工配置信息,天下班時間,每天工作時間(3)對員工的考勤數(shù)據(jù)進行登記,并進行每日和月度考勤統(tǒng)計。(4)對員工的月度考勤統(tǒng)計的結(jié)果來核算員工工資和工作放假日期。3.2 系統(tǒng)概念設(shè)計3.2.1 概念模型(E-R圖)員 工員 工員工號員工姓名員工號員工姓名職 位密 碼員工年齡員工性別職 位密 碼員工年齡員工性別圖3.1 員工屬性圖刷 卡 機刷 卡 機規(guī) 格刷卡機名稱刷卡機號規(guī) 格刷卡機名稱刷卡機號圖3.2刷卡機屬性圖管理

10、員號性 別管理員管理員號性 別管理員姓 名年 齡姓 名年 齡圖3.3管理員屬性圖員工姓名員工號員工姓名員工號密 碼員 工密 碼員 工職 位職 位員工性別員工年齡員工性別員工年齡上班的時 間 m上班的時 間每天工作時間每天工作時間記錄記錄早退的次數(shù)遲到的次數(shù)下班的時 間早退的次數(shù)遲到的次數(shù)下班的時 間管理員號剩余的時間管理員號剩余的時間姓 名刷卡機號統(tǒng)計 n姓 名刷卡機號統(tǒng)計 管理員刷卡機 m n管理員刷卡機工作天數(shù)性 別年 齡規(guī) 格刷卡機名稱工作天數(shù)性 別年 齡規(guī) 格刷卡機名稱圖4.4 系統(tǒng)E-R圖3.2.2 關(guān)系模式員工(員工號,姓名,性別,年齡,職位,密碼,入職時間)記錄數(shù)據(jù)(員工號,刷卡

11、機號,上班的時間,下班的時間,每天工作時間)刷卡機(刷卡機號,刷卡機名稱,規(guī)格)統(tǒng)計數(shù)據(jù)(員工號,刷卡機號,剩余的時間,遲到的次數(shù),早退的次數(shù),工作天數(shù))管理員(管理員號,姓名,性別,年齡)員工表(employee)列名別名類型長度備注員工號ynobigint6設(shè)為主碼員工姓名ynamechar20員工性別ysexchar2年齡ygageint3職位ygzhwchar6密碼secretint6入職時間ygrzhtime8表3-1 員工表記錄數(shù)據(jù)表(data_record):列名別名類型長度備注員工號ynobigint6設(shè)為主碼刷卡機號sknobigint15設(shè)為主碼上班的時間ondutytim

12、edatatime4下班的時間offdutytimedatatime4每天工作時間worktimechar4表3-2記錄數(shù)據(jù)表刷卡機表(skj):列名別名類型長度備注刷卡機號sknobigint15設(shè)為主碼刷卡機名稱sknamechar8規(guī)格skggchar10表3-3刷卡機表統(tǒng)計數(shù)據(jù)表(statistics_data):列名別名類型長度備注員工號ynobigint6設(shè)為主碼刷卡機號sknobigint15設(shè)為主碼剩余的時間ljworktimechar10遲到的次數(shù)latetimesint2早退的次數(shù)leavetimesint2工作天數(shù)workdaybigint2表3-4統(tǒng)計數(shù)據(jù)表管理員表(A

13、dministrator)列名別名類型長度備注管理員號anobigint6設(shè)為主碼姓名anamechar20性別asexchar2年齡aageint3表3-5管理員表第四章 數(shù)據(jù)庫系統(tǒng)實現(xiàn)4.1 系統(tǒng)實現(xiàn)工具簡介4.1.1 PowerDesigner 建模工具簡介提高軟件質(zhì)量,開發(fā)周期, 并且使軟件更能夠適應(yīng)業(yè)務(wù)需求的變化,以提高投資回報率,是每個企業(yè)所面臨的、需要解決的關(guān)鍵問題。軟件建模為是提高與有效控制軟件質(zhì)量的解決之道。近些年來為大家關(guān)注的主要是數(shù)據(jù)設(shè)計模型、對象模型、和業(yè)務(wù)流程模型。由于歷史原因,面向數(shù)據(jù)架構(gòu),開發(fā)以及業(yè)務(wù)分析的建模工作總是被單獨購買,彼此之間沒有集成或共享信息。但是,

14、企業(yè)不斷需要更集成的建模套件,即集成化企業(yè)級建模工具,來支持在共享環(huán)境下,企業(yè)整個架構(gòu)的不同方面的全面建模。 目前各主要的建模工具廠商如Sybase PowerDesigner, IBM Rational Rose, Computer Associates的ERWin等都在加強各自建模工具的融合與集成。PowerDesigner經(jīng)過近20年的發(fā)展,已經(jīng)在原有的數(shù)據(jù)建模上,形成一套完整的集成化企業(yè)級建模解決方案。PowerDesigner系列產(chǎn)品提供了一個完整的建模解決方案,業(yè)務(wù)或系統(tǒng)分析人員,設(shè)計人員,數(shù)據(jù)庫管理員BA和開發(fā)人員可以對其裁剪以滿足他們的特定的需要;而其模塊化的結(jié)構(gòu)為購買和擴展提

15、供了極大的靈活性,從而使開發(fā)單位可以根據(jù)其項目的規(guī)模和范圍來使用他們所需要的工具。PowerDesigner靈活的分析和設(shè)計特性允許使用一種結(jié)構(gòu)化的方法有效地創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)倉庫,而不要求嚴格遵循一個特定的方法學(xué)。PowerDesigner提供了直觀的符號表示使數(shù)據(jù)庫的創(chuàng)建更加容易,并使項目組內(nèi)的交流和通訊標準化,同時能更加簡單地向非技術(shù)人員展示數(shù)據(jù)庫和應(yīng)用的設(shè)計。 PowerDesigner不僅加速了開發(fā)的過程,也向最終用戶提供了管理和訪問項目的信息的一個有效的結(jié)構(gòu)。它允許設(shè)計人員不僅創(chuàng)建和管理數(shù)據(jù)的結(jié)構(gòu),而且開發(fā)和利用數(shù)據(jù)的結(jié)構(gòu)針對領(lǐng)先的開發(fā)工具環(huán)境快速地生成應(yīng)用對象和數(shù)據(jù)敏感的組件。開發(fā)

16、人員可以使用同樣的物理數(shù)據(jù)模型查看數(shù)據(jù)庫的結(jié)構(gòu)和整理文檔,以及生成應(yīng)用對象和在開發(fā)過程中使用的組件。應(yīng)用對象生成有助于在整個開發(fā)生命周期提供更多的控制和更高的生產(chǎn)率。 PowerDesigner是一個功能強大而使用簡單工具集,提供了一個復(fù)雜的交互環(huán)境,支持開發(fā)生命周期的所有階段,從處理流程建模到對象和組件的生成。PowerDesigner產(chǎn)生的模型和應(yīng)用可以不斷地增長,適應(yīng)并隨著你的組織的變化而變化。 PowerDesigner包含六個緊密集成的模塊,允許個人和開發(fā)組的成員以合算的方式最好地滿足他們的需要。這六個模塊是: PowerDesigner ProcessAnalyst,用于數(shù)據(jù)發(fā)現(xiàn)。

17、 PowerDesigner DataArchitect,用于雙層,交互式的數(shù)據(jù)庫設(shè)計和構(gòu)造。 PowerDesigner AppModeler,用于物理建模和應(yīng)用對象及數(shù)據(jù)敏感組件的生成。 PowerDesigner MetaWorks,用于高級的團隊開發(fā),信息的共享和模型的管理。 PowerDesigner WarehouseArchitect,用于數(shù)據(jù)倉庫的設(shè)計和實現(xiàn)。 PowerDesigner Viewer,用于以只讀的、圖形化方式訪問整個企業(yè)的模型信息。 PowerDesigner 主要包括以下幾個功能部分(1) DataArchitect 這是一個強大的數(shù)據(jù)庫設(shè)計工具,使用Dat

18、aArchitect 可利用實體-關(guān)系圖為一個信息系統(tǒng)創(chuàng)建概念數(shù)據(jù)模型CDM(Conceptual Data Model)。并且可根據(jù)CDM 產(chǎn)生基于某一特定 數(shù)據(jù)庫管理系統(tǒng)(例如:Sybase System 11)的物理數(shù)據(jù)模型-PDM(Physical Data Model)。 還可優(yōu)化PDM,產(chǎn)生為特定DBMS 創(chuàng)建數(shù)據(jù)庫的SQL 語句并可以文件形式存儲以便在其他時 刻運行這些SQL 語句創(chuàng)建數(shù)據(jù)庫。另外,DataArchitect還可根據(jù)已存在的數(shù)據(jù)庫反向生成 PDM,CDM 及創(chuàng)建數(shù)據(jù)庫的SQL腳本。 (2) ProcessAnalyst 這部分用于創(chuàng)建功能模型和數(shù)據(jù)流圖,創(chuàng)建處理層

19、次關(guān)系。 (3) AppModeler 為客戶/服務(wù)器應(yīng)用程序創(chuàng)建應(yīng)用模型。 (4) ODBC Administrator 此部分用來管理系統(tǒng)的各種數(shù)據(jù)源。 (5)XML文件 可以使用工具生成相應(yīng)的XML文件,或者用XML文件生成相關(guān)模型4.1.2 SQL Server 2000簡介SQL Server 是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng),它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開發(fā)的,于1988 年推出了第一個OS/2 版本。在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚鑣了。Microsoft 將SQ

20、L Server 移植到Windows NT系統(tǒng)上,專注于開發(fā)推廣SQL Server 的Windows NT 版本;Sybase 則較專注于SQL Server在UNIX 操作系統(tǒng)上的應(yīng)用。在本書中介紹的是Microsoft SQL Server 以后簡稱為SQL ServerSQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng)的一個版本。該版本繼承了SQL Server 7.0 版本的優(yōu)點同時又比它增加了許多更先進的功能,具有使用方便,可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運

21、行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺使用。 SQL Server 2000 的特性Microsoft SQL Server? 2000 的特性包括: (1).Internet 集成。SQL Server 2000 數(shù)據(jù)庫引擎提供完整的XML 支持。它還具有構(gòu)成最大的Web 站點的數(shù)據(jù)存儲組件所需的可伸縮性、可用性和安全功能。(2).可伸縮性和可用性。同一個數(shù)據(jù)庫引擎可以在不同的平臺上使用,從運行 Microsoft Windows 98 的便攜式電腦,到運行 Microsoft Windows 2000 數(shù)據(jù)中心版的大型多處理器服務(wù)器。 (3).企業(yè)

22、級數(shù)據(jù)庫功能。SQL Server 2000 關(guān)系數(shù)據(jù)庫引擎支持當(dāng)今苛刻的數(shù)據(jù)處理環(huán)境所需的功能。數(shù)據(jù)庫引擎充分保護數(shù)據(jù)完整性,同時將管理上千個并發(fā)修改數(shù)據(jù)庫的用戶的開銷減到最小。 (4).易于安裝、部署和使用。 SQL Server 2000 中包括一系列管理和開發(fā)工具,這些工具可改進在多個站點上安裝、部署、管理和使用 SQL Server 的過程。SQL Server 2000 還支持基于標準的、與 Windows DNA 集成的程序設(shè)計模型,使 SQL Server 數(shù)據(jù)庫和數(shù)據(jù)倉庫的使用成為生成強大的可伸縮系統(tǒng)的無縫部分。這些功能使您得以快速交付 SQL Server 應(yīng)用程序,使客戶

23、只需最少的安裝和管理開銷即可實現(xiàn)這些應(yīng)用程序。4.1.2企業(yè)考勤管理系統(tǒng)的實現(xiàn)#include#include#include#includeprocess.h#include#define MAX_COUNT 30 struct employee int id;char name20;char department20;struct date /int year;int month;int day;struct attendance int id;int late;int early;char name20;struct date dat;struct statistic int id;in

24、t late_count;int early_count;char name20;int COUNT=0; intFLAG_pause=1;system(“pause”)struct employee personMAX_COUNT;struct data BASE_DATA=2010,3,1; voidinput_employee() system(cls); FILE *fp1,*fp2;struct employee temp;fp1=fopen(information1.txt,w);fp2=fopen(information2.txt,w);printf(tttt 員工信息n);pr

25、intf(nttttIDt姓名t部門ntttt);fprintf(fp1,tttt 輸入員工信息n);fprintf(fp1,nttttIDt姓名t部門n);scanf(%d%s%s,&temp.id,,temp.department);while(temp.id!=0) personCOUNT=temp; printf(%d,temp.id); COUNT+;fprintf(fp1,tttt%dt%st%sn,temp.id,,temp.department);fprintf(fp2,%dt%st%sn,temp.id,,temp.dep

26、artment); printf(tttt);scanf(%d%s%s,&temp.id,,temp.department); fclose(fp1); fclose(fp2);voidread_file() FILE *fp; COUNT=0;if(fp=fopen(information2.txt,r)=NULL) printf(cant not open filen); exit(1); while(!feof(fp) fscanf(fp,%d%s%s,&personCOUNT.id,personCOUNT.name,personCOUNT.department); C

27、OUNT+; COUNT-; fclose(fp);void write_file() int i; FILE *fp1,*fp2;fp1=fopen(information1.txt,w+);fp2=fopen(information2.txt,w+);if(fp1=NULL | fp2=NULL) printf(cant not open filen); exit(1); fprintf(fp1,tttt 輸入員工信息n);printf(fp1,nttttIDt姓名t部門n); for(i=0;iCOUNT;i+) fprintf(fp1,tttt%dt%st%sn,personi.id,

28、,personi.department);fprintf(fp2,%dt%st%sn,personi.id,,personi.department); fclose(fp1); fclose(fp2);void output_employee()int i;int id;int choice;char temp20; system(cls);read_file(); printf(nttttt輸出員工信息n);printf(nt1.輸出全體員工信息t);printf(2.按姓名輸出員工信息t);printf(3.按ID輸出員工信息t);print

29、f(4.按部門員工信息t);printf(5.返回主菜單n);printf(nt請選擇(15):t); start:scanf(%d,&choice);if(choice5) printf(t輸入錯誤,請重輸:t);goto start; switch(choice) case(1): printf(tttIDt姓名t部門n);for(i=0;iCOUNT;i+)printf(ttt%dt%st%sn,personi.id,,personi.department);break; case(2): printf(ttt輸入姓名:); scanf(%s,temp);prin

30、tf(tttIDt姓名t部門n);for(i=0;iCOUNT;i+)if(strcmp(,temp)=0)printf(ttt%dt%st%sn,personi.id,,personi.department); break; case(3): printf(ttt輸入ID:); scanf(%d,&id);printf(tttIDt姓名t部門n);for(i=0;iCOUNT;i+) if(personi.id=id) printf(ttt%dt%st%sn,personi.id,,personi.department)

31、;break; break; case(4): printf(ttt輸入部門:); scanf(%s,temp);printf(tttIDt姓名t部門n);for(i=0;inew_person.id) personi=personi-1; i-; personi=new_person; COUNT+; write_file();if(FLAG_pause=0) system(pause);voiddelete_employee(int id) int i;int j; read_file(); system(cls);for(i=0;iCOUNT;i+)if(personi.id=id)br

32、eak;for(j=i;jCOUNT;j+) personj=personj+1; COUNT-; write_file();if(FLAG_pause=0) system(pause);voidedit_employee(intid)struct employee someone; system(cls); FLAG_pause=1; delete_employee(id);printf(t請輸入新的員工信息:ntttIDt姓名t部門nttt);scanf(%d%s%s,&someone.id,,someone.department); insert_employee

33、(someone); write_file(); FLAG_pause=0; system(pause);void management_employee() int choice;int id;struct employee someone;printf(nttttt員工信息管理n);printf(nt1.輸入員工信息t);printf(2.輸出員工信息t);printf(3.插入員工信息t);printf(4.修改員工信息t);printf(5.刪除員工t);printf(6.返回主菜單n);printf(nt請選擇(16):t); start:scanf(%d,&choice);if(c

34、hoice6) printf(t輸入錯誤,請重輸:t);goto start; switch(choice) case(1): input_employee();break; case(2): output_employee();break; case(3): printf(ttt插入新員工信息n);printf(ttt請輸入員工的:ntttIDt姓名t部門n);printf(ttt);scanf(%d%s%s,&someone.id,,someone.department); insert_employee(someone);break; case(4): print

35、f(ttt修改員工信息n);printf(t請輸入要修改的員工ID:t); scanf(%d,&id); edit_employee(id);break; case(5): printf(ttt刪除員工信息n);printf(t請輸入要刪除的員工ID:t); scanf(%d,&id); delete_employee(id);break; case(6):break; int computer(struct data someday) int i;int days=0;if(someday.month=BASE_DATA.month) days=someday.day-BASE_DATA.d

36、ay+1;else for(i=BASE_DATA.month+1;isomeday.month;i+)switch(i) case 2: days=days+28;case 3: days=days+31;case 4: days=days+30;case 5: days=days+31;case 6: days=days+30;case 7: days=days+31;case 8: days=days+31;case 9: days=days+30;case 10: days=days+31;case 11: days=days+30; days=days+someday.day; re

37、turn days;void recorder() int i;int late;int early;int id;int days;char name20;char filename40; FILE *fp; struct date current_date; system(cls); read_file();printf(ntttt考勤記錄n);printf(ntt日期:);scanf(%d%d%d,¤t_date.year,¤t_date.month,¤t_date.day); days=computer(current_date); itoa(day

38、s,filename, 10); strcat(filename,.txt); fp=fopen(filename,w);fprintf(fp,%dt%dt%dn,current_data.year,current_data.month,current_data.day);printf(nttIDt姓名t遲到t早退n);fprintf(fp,IDt姓名t遲到t早退n);for(i=0;iCOUNT;i+) id=personi.id; strcpy(name,);printf(ntt%dt%st,id,name);scanf(%d%d,&late,&early); fp

39、rintf(fp,%dt%st%dt%dn,id,name,late,early); fprintf(fp,n); fclose(fp); system(pause);void statistic() int i;int j;int k=0;intstatus=0; /int begin_page;int end_page;char save; char filename40; int year;int month;int day;char ID20;char name20;char late20;char early20; FILE *fp; struct date begin;struct

40、 date end;struct statistic temp; struct statistic stat30; for(i=0;i30;i+) stati.early_count=0; stati.late_count=0; system(cls);printf(ttt統(tǒng)計員工考勤n);printf(nt請輸入起止日期n);printf(ntt起始日期:);scanf(%d%d%d,&begin.year,&begin.month,&begin.day);printf(ntt終止日期:);scanf(%d%d%d,&end.year,&end.month,&end.day); begin_

41、page=computer(begin); end_page=computer(end);for(i=begin_page;i=end_page;i+) itoa(i,filename, 10); strcat(filename,.txt); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);if(i=begin_page) while(!feof(fp) fscanf(fp,%d%s%d%d,&statk.id,,&statk.late_count,&st

42、atk.early_count); k+; k-; else while(!feof(fp) fscanf(fp,%d%s%d%d,&temp.id,,&temp.late_count,&temp.early_count);for(j=0;jk;j+) if(temp.id=statj.id) status=1;if(temp.late_count=1) statj.late_count+;if(temp.early_count=1) statj.early_count+;break; if(status=0) statk.id=temp.id; strcpy(statk.n

43、ame,); statk.late_count=temp.late_count; statk.early_count=temp.early_count; k+; status=0; printf(n); fclose(fp); printf(ntt考勤統(tǒng)計n);printf(tIDt姓名t遲到次數(shù)t早退次數(shù)n);for(j=0;jk;j+)printf(t%dt%st%dtt%dn,statj.id,,statj.late_count,statj.early_count);printf(ttt是否保存(y/n):t); save=getch();if(sa

44、ve=y) printf(請輸入文件名;t);scanf(%s,filename); fp=fopen(filename,w); fprintf(fp,t考勤統(tǒng)計n);fprintf(fp,IDt姓名t遲到次數(shù)t早退次數(shù)n);for(j=0;jk;j+)fprintf(fp,%dt%st%dtt%dn,statj.id,,statj.late_count,statj.early_count); fclose(fp); system(pause);void single_quire() int key;int id;int flag=0; int choice;int yea

45、r,month,day;char ID20;char name20;char late20;char early20;char filename20;struct date oneday;struct attendance atten; FILE *fp; system(cls);printf(ttt查詢某一天的考勤n);printf(nt請輸入日期:t);scanf(%d%d%d,&oneday.year,&oneday.month,&oneday.day); key=computer(oneday); itoa(key,filename, 10); strcat(filename,.txt

46、); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);printf(nt1.查詢?nèi)w員工考勤t);printf(2.按ID查詢t);printf(3.按姓名查詢t);printf(4.返回主菜單n);printf(nt請選擇(14):t); start:scanf(%d,&choice);if(choice4) printf(t輸入錯誤,請重輸:t);goto start; switch(choice) case(1): printf(tttIDt姓名t遲到t早退n);whi

47、le(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); break; case(2): printf(t請輸入ID:t); scanf(%d,&id);printf(tttIDt姓名t遲到t早退n);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early)

48、;if(atten.id=id) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early);break; if(flag=0)printf(t對不起,沒有此ID 的員工,謝謝!n);break; case(3): printf(t請輸入姓名:t); scanf(%s,name);printf(tttIDt姓名t遲到t早退n);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);if(strcmp

49、(,name)=0) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early);break; if(flag=0) printf(t對不起,沒有此姓名的員工,謝謝!n); break; case(4):break; fclose(fp); system(pause);void multi_quire() int begin_page,end_page,id;int i;int k;int flag=0;int choice;int year,month,day;char ID20;ch

50、ar name20;char late20;char early20;char filename20;struct date begin,end;struct attendance atten; FILE *fp; system(cls);printf(ttttt查詢某一段時間的考勤n);printf(nt請輸入起止日期n);printf(ntt起始日期:);scanf(%d%d%d,&begin.year,&begin.month,&begin.day);printf(ntt終止日期:);scanf(%d%d%d,&end.year,&end.month,&end.day); begin_p

51、age=computer(begin); end_page=computer(end);printf(nt1.查詢?nèi)w員工考勤t);printf(2.按ID查詢t);printf(3.按姓名查詢t);printf(4.返回主菜單n);printf(nt請選擇(14):t); start:scanf(%d,&choice);if(choice4) printf(t輸入錯誤,請重輸:t);goto start; switch(choice) case(1): for(i=begin_page;i=end_page;i+) itoa(i,filename, 10); strcat(filename,

52、.txt); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);printf(ttt%dt%dt%dnttt%st%st%st%sn,year,month,day,ID,name,late,early);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.id,,&atten.late,&atten.early);printf(ttt%dt%st%dt%dn,atten.id,,atten.late,att

53、en.early); fclose(fp); break; case(2): printf(nt請輸入ID:t); scanf(%d,&id);printf(tttIDt姓名t遲到t早退n);for(k=begin_page;k=end_page;k+) itoa(k,filename, 10); strcat(filename,.txt); fp=fopen(filename,r);fscanf(fp,n%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early);while(!feof(fp) fscanf(fp,%d%s%d%d,&atten.

54、id,,&atten.late,&atten.early);if(atten.id=id) flag=1;printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); fclose(fp); if(flag=0) printf(t對不起,沒有此ID的員工,謝謝!n);break; case(3): printf(nt請輸入姓名:t); scanf(%s,name);printf(tttIDt姓名t遲到t早退n);for(k=begin_page;k=end_page;k+) itoa(k,filena

55、me, 10); strcat(filename,.txt); fp=fopen(filename,r);fscanf(fp,%d%d%d%s%s%s%s,&year,&month,&day,ID,name,late,early); while(!feof(fp) fscanf(fp,%d%s%d%d,atten.id,,&atten.late,&atten.early);if(strcmp(,name)=0) flag=1; printf(ttt%dt%st%dt%dn,atten.id,,atten.late,atten.early); fclose(fp); if(flag=0) printf(t對不起,沒有此姓名的員工,謝謝!n);break; case(4)

溫馨提示

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

評論

0/150

提交評論