【正文】
nt, SuggestionText, Status, Comments, WhenSent)圖屬于S u g g e s t i o n I DS e n d e r N a m eT o D e p a r t m e n tS u g g e s t i o n T e x t意見信息 n意見類型 1S u g g e s t i o n T y p eS t a t u sC o m m e n t sW h e n S e n t 員工信息 ER 圖 Employee Information ER diagram (4) 問題投票模塊中由 ER 圖轉換成的關系數據模式有:1 問題信息(QuestionID, SenderName, Suhject, Question, WhenSent, VoterNumber) ;2 投票信息(VoterID, VoterName, Vote) ; 數據庫物理設計為一個給定的邏輯數據模型選取一個最適合應用要求的物理結構的過程,就是數據庫的物理設計。使用數據庫開發(fā)軟件 SQLServer 2022 建立如下結構的數據庫。 系統(tǒng)用戶信息數據表 The table of system uesr’s information字段名 說明 類型 長度 可否為空 主鍵 外鍵ID 自動編號 int 4 否 是LoginID 用戶登陸名 varchar 50 是Name 用戶姓名 varchar 100 是Password 用戶密碼 varchar 100 是EmailAddress 電子郵件 varchar 100 是Department 用戶部門 varchar 50 是Position 用戶職位 varchar 50 是InternalPhone 內部分機號 varchar 50 是HomePhone 家庭電話 varchar 50 是MobilePhone 手機號 varchar 50 是MSN MSN varchar 50 是HomeAddress 家庭住址 varchar 100 是IsSyatem Manager 是否系統(tǒng)管理員 varchar 50 否Brithday 生日 datetime 8 是IsFinaneial Manager 是否財務管理員 varchar 50 否Sex 性別 varchar 50 是Education 教育程度 varchar 50 是Remark 備注 varchar 50 是 財務信息數據表 The table of Financial Record 字段名 說明 類型 長度 可否為空 主鍵 外鍵ID 自動編號 int 4 否 是Name 紀錄經手人 varchar 50 是Department 部門 varchar 50 是ProjectName 所屬財務項目 varchar 50 是FundTypeA 款項 A 的數額 int 4 是FundTypeB 款項 B 的數額 int 4 是FundTypeC 款項 C 的數額 int 4 是FundTypeD 款項 D 的數額 int 4 是Sum 各款項求和 int 4 是Summary 摘要 varchar 50 是Remark 備注 varchar 50 是AccountName 會計經手人 varchar 50 是AddDate 紀錄添加日期 datetime 8 是ModityDate 紀錄修改日期 datetime 8 是 財務項目信息數據表 The table of Financial Project字段名 說明 類型 長度 可否為空 主鍵 外鍵FinancialProjectID 自動編號 int 4 否 是FinancialProjectName 財務項目名稱 varchar 50 是AddDate 項目添加日期 datetime 8 是FinaneialManager 項目主管 varchar 50 是 通知公告牌數據表 The table of Message Board 字段名 說明 類型 長度 可否為空 主鍵 外鍵MessageID 自動編號 int 4 否 是MessageContent 通知內容 varchar 500 是MessageType 通知類型 varchar 50 是MessageSender 通知發(fā)送者 varchar 50 是MessageSendDate 通知發(fā)送日期 datetime 8 是MessageSendTime 通知發(fā)送時間 datetime 8 是MessageValidTime 通知有效天數 int 4 是 內部意見信息數據表 The table of Suggestion Records 字段名 說明 類型 長度 可否為空 主鍵 外鍵SuggestionID 自動編號 int 4 否 是SenderName 意見發(fā)送者 varchar 50 是ToDepartment 意見發(fā)往部門 varchar 50 是SuggestionType 意見類型 varchar 50 是SuggestionText 意見內容 varchar 500 是Status 意見處理狀態(tài) varchar 50 是Comments 意見處理評論 varchar 500 是WhenSent 意見發(fā)送日期 datetime 8 是 投票問題信息數據表 The table of Voting Questions 字段名 說明 類型 長度 可否為空 主鍵 外鍵QuestionID 自動編號 int 4 否 是SenderName 投票發(fā)起者 varchar 50 是Subject 投票主題 varchar 500 是Question 投票內容 varchar 500 是WhenSent 投票開始時間 datetime 8 是VoterNumber 總應投票人數 int 4 是 投票信息數據表 The table of Voting Votes 字段名 說明 類型 長度 可否為空 主鍵 外鍵QuestionID 投票問題 ID int 4 是VoterID 投票者 ID int 4 是VoterName 投票者姓名 varchar 100 是Vote 投票內容 varchar 100 是 部門信息數據表 The table of Departments 字段名 說明 類型 長度 可否為空 主鍵 外鍵DepartmentID 自動編號 int 4 否 是DepartmentName 部門名稱 varchar 50 是Remark 備注 varchar 50 是 職位信息數據表 The table of Positions 字段名 說明 類型 長度 可否為空 主鍵 外鍵ID 自動編號 Int 4 否 是PositionName 職位名稱 Varchar 50 是PositionID 職位 ID Int 4 是 內部意見類型數據表 The table of Suggestion Types 字段名 說明 類型 長度 可否為空 主鍵 外鍵SuggestionTypeID 自動編號 int 4 否 是SuggestionType 意見類型 varchar 50 是第 4 章 系統(tǒng)實現 登陸功能設計描述()圖 是整個公司辦公信息管理系統(tǒng)的登錄頁面,主要用于對用戶身份的鑒別。用戶通過表單提供登錄信息,系統(tǒng)根據用戶提供的信息對用戶進行查詢鑒別,如果身份合法,則將用戶導向系統(tǒng)主頁。通過創(chuàng)建 JSP 應用程序,我們指定系統(tǒng)登錄錯誤的次數,系統(tǒng)不再顯示登錄頁面,用戶只能重新建立和 WEB 服務器的連接來登錄,如圖 所示。另外,如果從系統(tǒng)里退出后,此時用戶的身份信息都會被清空。圖 用戶登陸頁面 The page of login 如果無法匹配用戶的登錄信息,那么就記錄用戶登錄次數(NumAttempts,new Integer(((Integer)(NumAttempts)).intValue()+ 1))。如果 session 里的 NumAtempts 的值不為 0,NumAtempts 是用來記錄登錄的次數,所以比較目前登錄次數和限制次數,并提示用戶。圖 用戶失敗頁面 The page of lost of login 系統(tǒng)主頁面()圖 顯示公司辦公信息管理系統(tǒng)的主目錄。主目錄上有 3 個主要鏈接。分別指向內部辦公管理系統(tǒng)的 3 個主要功能模塊,即員工信息管理子模塊,公司財務信息管理子系統(tǒng)和內部信息交流系統(tǒng)。在公司辦公信息管理系統(tǒng)的主頁面里,設置了一個導航條。這個導航條里詳細列出了用戶目前在系統(tǒng)里的位置,當前用戶名稱,其他相應頁面的鏈接以及系統(tǒng)提供給用戶的提示信息或反饋信息。這樣做的好處是可以讓用戶清楚的知道自己目前再同的未知和主要的操作或者系統(tǒng)反饋。圖 系統(tǒng)主頁面 The page of home用戶身份驗證進行判斷,如果用戶通過了系統(tǒng)登錄頁面驗證,那么在服務器分配給這個用戶的會話對象的 ID 字段里,便不會為空。如若不然,則表明用戶沒有通過登錄,系統(tǒng)便將用戶導向系統(tǒng)登錄頁面。在這個系統(tǒng)的大部分頁面都有這樣的代碼,主要是避免用戶直接調用相應的頁面而不直接登錄的 BUG。%String TheMessage = 請選擇您想進入的功能模塊。if ((ID) == null) {(../)。}%除了提供了到三個系統(tǒng)的鏈接外,還向用戶顯示了用戶名和系統(tǒng)時間等歡迎信息,用到時鐘 calendar 方法, 來記錄時間,用 pareTo 來進行比較。 公司員工信息管理子系統(tǒng)公司員工信息管理子系統(tǒng)主要包括員工信息管理子系統(tǒng)主頁面( ) ,修改個人信息頁面(),系統(tǒng)管理員管理頁面(),員工信息管理子系統(tǒng)添加用戶頁面()和修改用戶信息頁面() 。所用到的數據庫組件主要是系統(tǒng)用戶信息表(PSLoins),公司部門信息表(department)和職位信息表(positions ) 。 員工信息管理子系統(tǒng)主頁面()圖 是整個員工信息管理子系統(tǒng)的主頁面,我們可以通過選擇不同的單選按鈕,進行相應的用戶信息查詢或管理功能。此頁面據聽過能描述為:按照不同的排序查詢所有員工記錄;選擇查詢某一個部門全部員工信息;選擇查詢某個員工的信息;選擇查詢某個部門主管記錄;選擇修改用戶自己的員工記錄;選擇進入系統(tǒng)管理員選項。圖 是查詢結果頁面圖 員工信息管理子系統(tǒng)主頁面 The page of employee information圖 查詢結果頁面 The page of demand result代碼解釋:首先還是先進行身份鑒別,如果已經登錄,則可以瀏覽此頁面,否則重新導向系統(tǒng)登錄頁面,然后進行數據源連接。Connection conn = (new DBConnect()).getConnPoolConn(eims)。Statement stmt = ()。此頁面可分為兩種狀況,一種情況是用戶第一次進入系頁面,另一種為用戶已提交“進入選項”按鈕。我們可以通過對 request 對象的 form 集合里的表元素進行非空判斷。如果返回 false 值,則意味用戶第一次進入此頁面。如果返回 true值的話,意味著用戶還沒有單擊 Send 按鈕,即為用戶第一次進入此頁面。如果返回為 true 值的話,意味著用戶已經單擊 Send 按鈕,JSP 程序不需進行相應的相應,生成合理的頁面。語句如下:if ((Send) != null) {根據用戶提交表單是一并提交的表單元素 SendTo 參數,來進行相應員工信息查詢或管理。如果 SendTo 值為“allemployeeinformation”,表示用戶希望查詢所有的員工信息、則從用戶數據表 pslogins 里查詢所有的記錄,根據表單元素 AllOrder 的值進行排列,并將結果存儲到臨時記錄集 RSEnguiryResult 里,同時設置相應的字符串變量 TheMessage 作為系統(tǒng)反饋提示信息。在 頁面里的 HTML 部分里,有幾個地方需要提及:一個是 Select 型的表單元素 DepartmentName。我們在用戶第一次進入該頁面時從PSLogins 表里查詢出記錄集 RSDepartment 用來記錄所有部門的名稱,并轉存在Vector 型 VTDepartment 中,在 HTML 部分使用該向量來分別顯示各個部門的名稱。對于另一個 Select 型的表單元素 RoleName。在用戶第一次進入該頁面時從PSLogins 表里查詢出記錄集 RSRoles 用來記錄所有員工姓名,也存儲在 Vector型 VTDepartment 中,同上面的一樣。如果查詢了全體員工的信息,部門員工的信息或者某個員工的信息,其結果將在本頁面的結尾處顯示。在這部分的 JSP 代碼里,可以看到使