資料庫設計考勤系統
① 基於sql的考勤查詢系統----學習探討
卡機系統的數據結構一般分為:考勤一套,請假一套,加班一套。
考勤不會刻意每個欄位判斷一次是早上卡還是晚上卡,而是根據員工對應排班表來自行決定時間對應的考勤Type。
請假一般分帶薪、半薪、無薪,調休四類。然後帶薪假和半薪假一般會分順延和扣減兩類。
加班則分大,中,小三個類別,對應3工,2工,1.5工。調休則優先對應3工、2工類型扣減。
而且還需要處理跨天(我建議設置大於24小時,方便計算),調班等問題
② 如何設計學生考勤資料庫
1. MVC 設計模式設計模式概述
1.1 MVC 設計模式
MVC 設計模式是一種著名的軟體開發設計模式,它是模型、視圖、控制器( Mode1.View.Controller )縮寫.模型封裝了用戶數據和處理數據的業務邏輯;視圖提供了用戶界面,將用戶輸入數據傳遞給控制器或將模型數據顯示給用戶;控制器連接了模型和視圖,判斷請求交給哪個模型,調用視圖顯示模型處理用戶請求結果.
MVC 設計模式將應用程序進行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業務邏輯之間的耦合,使程序設計更加清晰、靈活,也提高了軟體的可擴展性、可維護性.
1.2 Struts 框架
Struts 是基於的MVC模式應用框架,遵守了 J2EE 的Servlet、JSP 等技術規范,並且根據J2EE的特點做了相應的變化和擴展,是J2EE 體系架構的一種輕量級實現.
在Struts 框架中,控制器由 ActionServlet 和Action 類以及 Struts.config.xml 配置文件實現.ActionServlet 是Struts 框架的核心控制組件, 所有的用戶請求都被映射到 ActionServlet, 由ActionServlet 根據配置文件中的定義將控制轉移到指定的 Action 類.Action 類是用戶請求與業務邏輯之間的橋梁,它執行一個 execute()方法並返回一個ActionForward對象,當ActionServlet 接收到該對象後,根據 Struts config.xml 中的配置信息將請求轉發.Struts 框架中的視圖主要由 JSP 頁面組成.ActionForm 是Struts 在視圖層的一個核心組件,它是專門用來在視圖層和控制層之間傳遞表單數據的 DTO(Dam Transfer Object,數據傳輸對象),它還包括了用於數據驗證的 validate()方法和用於數據復位的 reset()方法.在Struts 應用程序中,開發人員可以選擇 javaBean、Hibernate、EJB 等組件來實現 Struts 框架中的模型.
2.Hibernate 持久化技術
Hibernate 是一個基於 Java 的開放源代碼的 O/R Mapping (對象關系映射框架),它通過其強大的 O/R 映射功能 JAVA 對象同存於關系資料庫中的數據進行映射,並對 JDBC 進行了輕量級的對象封裝,可以使JAVA程序員方便地使用對象編程思維來操縱資料庫,它不僅提供 ORM 映射服務,還提供數據查詢和數據緩存的方法,可以提高查詢和處理數據的效率.它是一種提供面向對象的資料庫服務中間件.
3.基於 Struts 和Hibernate 的考勤管理系統的設計
隨著教育部對在校大學生出勤的相關規定出台,各大專院校加大了對學生考勤的管理力度,但大部份都採用手工處理的方法,工作量大且效率低.本系統能夠實現網上對學生考勤信息進行添加、刪除、修改、查詢和統計功能,管理人員能及時了解學生出勤情況和某課班級某課程的出勤情況.在開發的過程中,使用 PowerDesigner 作為 CASE 工具,採用對 Hibernate 和Struts 提供良好支持的 Myeclipse 6.0 作為系統的開發環境,資料庫採用 MYSQL5.0,WEB 伺服器採用 jakarta Tomcm6.0 並安裝了 JDK6.0.
3.1資料庫層的設計
Power Designer 是Sybase 公司的 CASE 工具集,使用它可以方便地對管理信息系統進行分析設計.DataArchitect 模塊是Power designer 的核心工具,它採用二級數據建模方式,即概念級和物理級.在概念級,概念數據模型 (CDM) 代表業務信息需求,不考慮在資料庫上的物理實現,通過它可以繪制系統的實體聯系圖(E.R圖),即系統的靜態特徵;在物理級,物理數據模型 (PDM) 指定了物理實現的目標RDBMS的特徵等細節.它可以生成資料庫腳本,通過選擇 ODBC 方式則可以直接連接到資料庫,從而直接產生資料庫表以及其他資料庫對象.它與其它設計軟體相配合使用可以縮短開發時間和使系統設計更優化.
在本系統的設計過程中,我們利用 Power Designer 來完成系統資料庫概念設計和 MYSQL 資料庫表的工作.首先,在PowerDesigner 中設計系統的概念層次的數據模型,通過它的CDM 功能創建實體關系圖來描述系統的數據組織結構.通過它的檢查模型功能,校驗概念數據模型中實體、實體屬性、實體標識和實體間關系等是否存在問題.接著,選擇 MYSQL 作為系統的目標資料庫,生成在MYSQL 上實現的資料庫的物理數據模型 (PDM) :最後,通過產生資料庫功能,並選擇 ODBC 方式連接到指定的資料庫,從而直接產生MYSQL 上的資料庫表以及其他資料庫對象.
3.2 持久化層的設計
數據持久層基於 Hibernate 架構,採用了 DAO 設計模式和抽象工廠設計模式.下面以學生類 (Student) 為例進行說明.首先,把學生信息封裝為 VO(Value Object) .VO 是一組值對象,只包含了一些屬性和 getter/setter 方法的 POJO(Plan Old Java Bean) .然後,採用 DAO 設計模式和抽象工廠設計模式,完成 DAO 工廠和 Hibernate 資料庫操作的具體實現.最後,利用 Hibernate 的配置文件完成從應用程序到資料庫的映射.
在Myeclipse 開發環境中,首先配置資料庫伺服器的連接,然後利用 Myeclipse 的Hibernate 的逆向工程,可以自動完成持久化層的設計任務.例如對學生表 (student) 進行逆向工程, 將會自動生成Student.iava、AbstractStudent.iava、StudentDAO.iava、Student.hbm.xml等文件.其中,Abstract Student.iava 就是一個封裝了 Student 信息的VO.Student DAO.java採用DAO模式封閉了資料庫操作.
在hibemate.cfg.xml 配置文件中,定義了符合 SQLServer 規范的 dialect 方言,連接池訪問資料庫的 URL 資源定位地址以及資料庫名稱kq, 資料庫連接驅動程序,Hibernate管理事務、是否顯示SQL語句.在mapping映射文件配置部分,定義了教師表 (Teacher)、學生表 (Student1、考勤表(Attendance) 等對應的映射文件等.在該層的設計中,VO 的信息封裝體現了面向對象設計編程思想; DAO 的設計模式和抽象工廠模式減弱了上層調用和具體實現之間的耦合;Hibemate 配置實現了資料庫高移植性,只需要改變 Hibemate 配置文件,不用修改程序設計就可以完成不同資料庫之間的更換.
3.3 業務邏輯層設計
業務邏輯層包含了供客戶端程序調用的業務邏輯規則,以幫助客戶端完成業務操作.該層採用業務代理、DAO和抽象工廠設計模式使用業務代理、DAO 和抽象工廠設計模式,可以使業務邏輯更加靈活,如果具體業務發生變化,在表示層和數據持久化層改變很小就可以完成改變,這種設計能夠增強系統的可維護性和靈活性.
3.4 表示層設計
③ 考勤管理系統的這個日常考勤模塊 資料庫表怎麼設計呢,是一張表,還是兩張表功能如下
用三張表來實現
第一張表記錄人員信息,包括工號、姓名、性別、適應考勤規則代碼
第二張表記錄人員上班明細記錄,包括工號、上班時間、下班時間
第三張表記錄考勤規則,報表考勤規則代碼、另外的欄位就是你上面的這些規則
做考勤處理的時候把這三種關聯起來
④ 設計一個關系資料庫,用於存儲學生的考勤記錄。
簡要說下,這個同學還是要自己動手:
資料庫設計為最少3個表:
1. Subjects(課程),包含 ID,任課老師,學生人數
2. Students, 包含ID, 姓名,班級,等相關人員信息的欄位;
3. Attendance(出勤表),包含ID, 課程的ID,出席的學生ID,出勤時間,等。
可以看到「出勤」表中將「課程」,「學生」共三個表聯系起來了,分別通過他們各自的ID進行關聯。
⑤ OA辦公考勤管理模塊的資料庫該怎麼設計分幾張表啊
一般是3到4張表
一張員工表,一張部門表,一張考勤表。
員工表
員工id,部門id,員工姓名
部門表
部門id,部門名稱
考勤表
考勤id,員工id,考勤時間(自動獲取伺服器時間)
如果員工的資料很復雜的話,你卡億考慮再加一張員工詳細信息表,不是很復雜的話就在員工表裡面直接加上就可以,有什麼疑問再問我把。
⑥ 如何用sql資料庫和c#程序設計設計一個考勤管理系統
template <typename DataType>
void AllSort<DataType>::InitArr(vector<DataType> &a,int len,int arrType)
{
if (arrType == 1)
{
for (int i=0;i<len;i++)
{
a.push_back(i);
}
}else if(arrType == 2)
{
for (int i=0;i < len;i++)
{
int key=i%countNum;
a.push_back(key);
}
}
}
⑦ 求考勤表的資料庫設計思路,要求方便統計出勤天數。我用的是SQL
如果你這個是最簡單的考勤記錄,不涉及到三班倒和加班之類的,那麼一個最簡單的表是這樣
員工表(不用說了吧,基本信息)
記錄表(日期、員工號、開始時間、結束時間、出勤情況)
如果自動打卡機,獲取的就是工號、日期、時間。你通過程序判斷每個人當天最小和最大時間,寫到記錄表裡面
如果當天開始時間和結束時間都有,而且你還能根據時間段判斷遲到、早退什麼的,然後在出勤情況中寫上相應信息
後面想怎麼統計都用這個表來完成
比如說每個月出勤天數 select sum(*) from 記錄表 where 日期在指定月范圍 and 出勤情況 = '出勤'
月報表等等都能通過語句加上適當的循環來實現
是不是給你說得有點復雜?那你就別考慮打卡機和遲到早退,更簡單了,呵呵
⑧ 編程開發設計:做一個考勤系統的設計
這個應該只是一方面的問題,考勤演算法不是那麼簡單的,有很多種情況,所以如果自己開發最少花很久的時間,不斷的完善,還不如直接買個考勤系統,像這些功能對於誒諾基人力資源管理系統都是小事了,完全可以實現.