第一篇:?jiǎn)T工信息管理系統(tǒng)
員工信息管理系統(tǒng) 系統(tǒng)的功能描述 設(shè)計(jì)一個(gè)員工信息管理系統(tǒng),使之具有以下功能(1)系統(tǒng)以菜單方式工作,應(yīng)為用戶(hù)提供清晰的使用提示,依據(jù)用戶(hù)的選擇來(lái)進(jìn)行各種處理并且在此過(guò)程中能夠盡可能地兼容用戶(hù)使用過(guò)程中的輸入異常情況(2)員工信息錄入功能(員工信息用文件保存),注意員工按員工號(hào)進(jìn)行區(qū)分,即每個(gè)員工的員工號(hào)都是唯一的,不允許出現(xiàn)兩個(gè)員工或員工號(hào)相同的情況(3)可對(duì)員工信息進(jìn)行查詢(xún),具體分為:按姓名查詢(xún)、按員工號(hào)查詢(xún)、按職務(wù)查詢(xún)。(4)可對(duì)員工信息進(jìn)行刪除(5)可對(duì)員工信息進(jìn)行修改,注意員工號(hào)不可修改,修改應(yīng)逐個(gè)地進(jìn)行,一個(gè)員工記錄的更改不應(yīng)影響其他的員工記錄(6)可對(duì)全部員工信息進(jìn)行顯示(員工信息瀏覽),注意員工信息的顯示要規(guī)范。其中員工信息應(yīng)包括姓名、員工號(hào)、性別、年齡、最高學(xué)歷、職務(wù)、薪水、聯(lián)系電話(huà)、住址 系統(tǒng)的總體設(shè)計(jì) 本系統(tǒng)可以按功能進(jìn)行模塊劃分,系統(tǒng)的總體設(shè)計(jì)如圖如下所示。“系統(tǒng)功能菜單” 選擇模塊完成用戶(hù)命令的接收,此模塊也是員工信息管理系統(tǒng)的入口,用戶(hù)所要進(jìn)行的各種操作均需在此模塊中進(jìn)行選擇并進(jìn)而調(diào)用其他模塊實(shí)現(xiàn)相應(yīng)的功能?!疤砑有畔ⅰ?模塊完成員工信息的錄入功能,錄入的信息包括姓名、員工號(hào)、性別、年齡、最高學(xué)歷、職務(wù)、薪水、聯(lián)系電話(huà)、住址(這里可以根據(jù)需要加入其他信息)“查詢(xún)信息”
模塊完成員工信息的查詢(xún),查詢(xún)可分為三種方式:按姓名查詢(xún)、按員工號(hào)查詢(xún)、按職務(wù)查詢(xún)(這里也可以根據(jù)需要根據(jù)其他方式進(jìn)行查詢(xún))“修改信息” 模塊完成員工信息的修改功能
“刪除信息” 模塊完成員工信息的刪除功能
“顯示信息” 模塊完成所有員工的顯示功能
第二篇:?jiǎn)T工信息管理系統(tǒng)
摘要
企業(yè)員工信息管理是企業(yè)管理中的一個(gè)重要內(nèi)容,隨著時(shí)代的進(jìn)步,企業(yè)人員數(shù)量也不斷增加、分工的不斷細(xì)化、各個(gè)行業(yè)間聯(lián)系的不斷密切,對(duì)人事管理的要求也不斷提高。如何管理好企業(yè)內(nèi)部員工的信息,對(duì)員工實(shí)施高效的宏觀管理,對(duì)企事業(yè)單位的人員構(gòu)成情況和發(fā)展趨勢(shì)進(jìn)行統(tǒng)計(jì)、規(guī)劃、分析并制定切實(shí)可行的人事政策,是一項(xiàng)繁重而艱巨的任務(wù)。
本文以企業(yè)管理信息系統(tǒng)建設(shè)中的員工信息管理子系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)為目標(biāo),利用軟件工程中系統(tǒng)開(kāi)發(fā)的原理和方法,詳細(xì)論述了系統(tǒng)的設(shè)計(jì)方案、開(kāi)發(fā)、測(cè)試等過(guò)程。系統(tǒng)在Linux平臺(tái)下,以O(shè)racle10g為后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng),實(shí)現(xiàn)了以員工信息管理,考勤信息管理、工資管理及綜合查詢(xún)模塊為主要功能的系統(tǒng)開(kāi)發(fā)。為企業(yè)人事管理提供信息咨詢(xún),信息檢索,信息存取等服務(wù),系統(tǒng)的實(shí)施基本上能夠滿(mǎn)足現(xiàn)代企業(yè)對(duì)人事管理的需要,為提高企業(yè)人事管理效率提供了行之有效的手段。6
第一章 職工管理的背景
借助現(xiàn)代信息技術(shù)和管理理論,建立員工管理信息系統(tǒng)是當(dāng)今社會(huì)的重要趨勢(shì)。黨和政府根據(jù)知識(shí)經(jīng)濟(jì)時(shí)代的特點(diǎn),對(duì)國(guó)民經(jīng)濟(jì)建設(shè)提出了“用信息化帶動(dòng)工業(yè)化”的指導(dǎo)思想。對(duì)企業(yè)而言,全面開(kāi)發(fā)和應(yīng)用計(jì)算機(jī)管理信息系統(tǒng)就是近期不能回避的問(wèn)題。在企業(yè)管理中,人力資源是企業(yè)最寶貴的資源,也是企業(yè)的“生命線(xiàn)”,因此職工管理是企業(yè)的計(jì)算機(jī)管理信息系統(tǒng)重要組成部分。而職工管理又是人力資源管理的重中之重。實(shí)行電子化的職工管理,可以讓人力資源管理人員從繁重瑣碎的案頭工作解脫出來(lái),去完成更重要的工作。職工管理信息系統(tǒng)的實(shí)現(xiàn)可以減輕比較繁瑣的手工職工管理。
現(xiàn)在應(yīng)用在大中型企業(yè)的管理信息系統(tǒng)中,幾乎都包括了職工管理模塊。有些環(huán)境中是由作為大型ERP軟件中的一個(gè)模塊引進(jìn)的,有些是作為企業(yè)的財(cái)務(wù)系統(tǒng)的一部分。這些根據(jù)規(guī)范的西方的管理制度設(shè)計(jì)的職工管理軟件,在很多時(shí)候還不能完全解決中國(guó)特色的中小企業(yè)的問(wèn)題,所以我們?cè)O(shè)計(jì)了一個(gè)簡(jiǎn)單的職工管理系統(tǒng),為這些具有中國(guó)特色的中小企業(yè)解決他們?cè)诼毠す芾矸矫娴膯?wèn)題。
1.2設(shè)計(jì)工具簡(jiǎn)介SQL Developer Oracle SQL Developer是針對(duì)Oracle數(shù)據(jù)庫(kù)的交互式開(kāi)發(fā)環(huán)境(IDE)。
Oracle SQL Developer簡(jiǎn)化了Oracle數(shù)據(jù)庫(kù)的開(kāi)發(fā)和管理。SQL Developer可以連接到任何Oracle 10g及其后續(xù)版本的數(shù)據(jù)庫(kù),并且能在Windows,Linux和Mac OSX上運(yùn)行。最新版本的Oracle SQL Developer提供了PL / SQL單元測(cè)試,集成了數(shù)據(jù)模型瀏覽器和Subversion源代碼版本控制系統(tǒng),CVS(并行版本系統(tǒng)),還包括了許多更新功能,如SQL格式化,模式比較,復(fù)制、導(dǎo)出向?qū)Ш瓦w移支持。1.3主要內(nèi)容及目標(biāo)
主要內(nèi)容:創(chuàng)建人事信息管理系統(tǒng),主要實(shí)現(xiàn)系統(tǒng)管理,員工基本信息管理、考勤管理、員工評(píng)價(jià)信息、員工工資管理等功能。
系統(tǒng)設(shè)計(jì)的目標(biāo)是:從操作簡(jiǎn)便、界面友好、靈活、實(shí)用、安全的要求出發(fā),完成人事、工資管理的全過(guò)程。
可行性分析
1、經(jīng)濟(jì)可行性 由于早期職工信息管理完全采用純?nèi)斯し绞酵瓿晒ぷ?,且上傳下遞極不方便、快捷,所以耗用工時(shí)較多,且效率低下。后來(lái)設(shè)計(jì)一些簡(jiǎn)單的應(yīng)用表格,能 通過(guò)計(jì)算機(jī)報(bào)表,但只是人工去登記、查找、計(jì)算大量數(shù)據(jù)后,人工輸入計(jì)算機(jī),制成表格,也很容易統(tǒng)計(jì)差錯(cuò),輸入過(guò)程差錯(cuò),正確率無(wú)法保證,而且還會(huì)耗費(fèi)大量的人力和物力;長(zhǎng)年累月積攢起來(lái)的材料過(guò)多,不易保存,也容易丟失和損壞。目前,市場(chǎng)上“職工管理信息系統(tǒng)”類(lèi)的軟件開(kāi)發(fā)出產(chǎn)品的比較少,且價(jià)格高,單機(jī)版價(jià)格在萬(wàn)元以上,網(wǎng)絡(luò)版價(jià)格要幾萬(wàn)元。一般公司的經(jīng)費(fèi)緊張根無(wú)法接受這樣的價(jià)格。而軟件的規(guī)模太大,有些模塊根本用不到,所以購(gòu)進(jìn)之后部分功能閑置也構(gòu)成了浪費(fèi)。
2、操作可行性 一般公司的職工管理人員具有高學(xué)歷、高水平、對(duì)外來(lái)的新事物接受能力快的特點(diǎn),并且接受過(guò)教育系統(tǒng)的計(jì)算機(jī)等級(jí)培訓(xùn),對(duì)Windows有基本的了解,所以,如果開(kāi)發(fā)一套操作簡(jiǎn)單的職工管理信息系統(tǒng),完全可以幫助他們從繁瑣的重復(fù)性勞動(dòng)中解脫出來(lái),以提高的工作效率。
3、技術(shù)可行性(1).開(kāi)發(fā)的軟件可行性 從目前市場(chǎng)上比較流行的數(shù)據(jù)庫(kù)開(kāi)發(fā)、管理軟件來(lái)看,對(duì)于比較簡(jiǎn)單的中小型數(shù)據(jù)庫(kù),SQL Server2008是在實(shí)際應(yīng)用中較為成功的一種解決方案。并為用戶(hù)提供了Windows所一貫堅(jiān)持的非常友好、操作簡(jiǎn)單的用戶(hù)界面、完善而強(qiáng)大的數(shù)據(jù)庫(kù)操作功能,簡(jiǎn)潔明了的數(shù)據(jù)庫(kù),進(jìn)而可對(duì)數(shù)據(jù)庫(kù)實(shí)施操作、維護(hù)和權(quán)限識(shí)別功能。
4、可行性結(jié)論 系統(tǒng)的成功開(kāi)發(fā)將進(jìn)一步促進(jìn)學(xué)校管理的現(xiàn)化化和科學(xué)化,培養(yǎng)了人才,也為職工信息管理系統(tǒng)體系積累了經(jīng)驗(yàn),從長(zhǎng)遠(yuǎn)來(lái)看,其經(jīng)濟(jì)和社會(huì)效益是肯定的,根據(jù)以上分析,我們認(rèn)為本系統(tǒng)開(kāi)發(fā)條件成熟,實(shí)施方案可行。
第二章 需求分析
2.1需求分析
模塊為系統(tǒng)的基本模塊,具備企業(yè)人力資源管理部門(mén)的日常事務(wù)處理功能,其中包括:人員基本信息管理、合同管理、統(tǒng)計(jì)分析、綜合查詢(xún)、花名冊(cè)等等。為管理者全方位地了解企業(yè)擁有的人力資源,并對(duì)這一資源進(jìn)行開(kāi)發(fā)提供決策支持??筛鶕?jù)企業(yè)實(shí)際需要自定義員工人事檔案項(xiàng)目;員工人事信息的錄入、增、刪、修改等; 強(qiáng)大、靈活的查詢(xún)功能,可以自定義查詢(xún)、組合條件查詢(xún)、快速定位查詢(xún)及模糊查詢(xún),使用快捷方便、充分滿(mǎn)足用戶(hù)對(duì)人事信息的各種查詢(xún)要求。步驟如下:
1.根據(jù)現(xiàn)有條件,設(shè)計(jì)出當(dāng)前系統(tǒng)的具體模型。
2.分析當(dāng)前系統(tǒng)與目標(biāo)系統(tǒng)的差別,并做出相應(yīng)調(diào)整方案。
3.對(duì)目標(biāo)進(jìn)行完善和補(bǔ)充,找到相關(guān)文獻(xiàn),安裝試驗(yàn)環(huán)境和可用軟件。
4.確認(rèn)所用資料齊全,盡量滿(mǎn)足用戶(hù)需求。
2.2系統(tǒng)業(yè)務(wù)流程分析
2.2.1企業(yè)人事信息管理系統(tǒng)業(yè)務(wù)流程圖
企業(yè)人事信息管理系統(tǒng)的業(yè)務(wù)流程圖是對(duì)整個(gè)系統(tǒng)的職能的總體描述。根據(jù)對(duì)整體系統(tǒng)的一個(gè)了解和分析得出了以下的業(yè)務(wù)流程圖。
如圖2-2所示:
人力資源部聘用信息表基本信息管理員工信息管理員工考勤管理人力資源部人員需求信息各部門(mén)員工基本信息員工檔案列表員工考勤考勤信息列表各部門(mén)員工評(píng)價(jià)列表員工評(píng)價(jià)員工評(píng)價(jià)管理員工工資管理員工工資信息工資信息表財(cái)務(wù)部工資總表代扣清單工資信息查詢(xún)表
圖2-2 員工信息管理系統(tǒng)總體業(yè)務(wù)流程圖
2.3系統(tǒng)數(shù)據(jù)流圖分析
22.3.2企業(yè)人事信息管理系統(tǒng)軟件數(shù)據(jù)流程圖
企業(yè)人事信息管理系統(tǒng)的數(shù)據(jù)流圖。如圖2-8所示:
各部門(mén)F2評(píng)價(jià)信息列表F1出勤信息列表P1出勤信息錄入人力資源部F3人員信息表F4工資信息單財(cái)務(wù)部管理員F5出勤記錄P2評(píng)價(jià)信息錄入F3評(píng)價(jià)信息列表D1月出勤表F6月出勤信息表P3員工基本信息錄入處理F7員工信息列表D2工作評(píng)價(jià)信息表F8員工評(píng)價(jià)信息表P4計(jì)算工資F11查P5F10員員工詢(xún)信息F9員工基表D3員工信息表工信息信息本信息表表查詢(xún)F12工資信息D4工資表F15工資信息表人力資源部F13代扣清單D5代扣項(xiàng)目財(cái)務(wù)部管理員各部門(mén)F14代扣信息表F18員工工資列表F19員工檔案列表P6F16工資信息員工工匯總單工資信息資列表F17工資信息D6匯總表生成匯總單P7工資匯總
圖2-8 人事管理信息系統(tǒng)數(shù)據(jù)流程圖
第三章 系統(tǒng)詳細(xì)設(shè)計(jì) 3.1系統(tǒng)總體設(shè)計(jì)目標(biāo)
根據(jù)企業(yè)人事信息管理系統(tǒng)網(wǎng)絡(luò)化的迫切需要,按著總體規(guī)劃、集中實(shí)施的原則,考慮到系統(tǒng)的穩(wěn)定性、安全性及數(shù)據(jù)的安全性和一致性要求,在系統(tǒng)設(shè)計(jì)過(guò)程中,堅(jiān)持開(kāi)放性和標(biāo)準(zhǔn)化的原則,以整個(gè)系統(tǒng)具有先進(jìn)性、實(shí)用性、可靠性、擴(kuò)展性和靈活性為設(shè)計(jì)目標(biāo),主要完成人員基本信息的管理、員工工作評(píng)價(jià)的管理、員工考勤信息的管理、員工工資的管理和系統(tǒng)擁護(hù)的管理。
3.2系統(tǒng)功能描述
系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)企業(yè)人事信息管理,系統(tǒng)應(yīng)包括以下的幾個(gè)
方面內(nèi)容: 3.2.1員工信息管理
實(shí)現(xiàn)對(duì)員工的基本信息的管理,如員工資本信息的添加、修改、刪除和查詢(xún)。員工基本信息主要包括:?jiǎn)T工編號(hào)、姓名、所在部門(mén)、生日籍貫等員工基本情況的一個(gè)信息的錄入查詢(xún)修改以及刪除。3.2.2考勤信息管理
包括正常出勤、異常出勤和加班處理3個(gè)功能模塊。正常出勤是對(duì)員工的遲到和早退進(jìn)行管理,同時(shí)能夠查詢(xún)?nèi)藛T信息,并對(duì)查詢(xún)的人員信息進(jìn)行添加。異常出勤是對(duì)員工的病假和事假進(jìn)行管理。加班處理包括加班管理、人員信息和加班費(fèi)率設(shè)置3部分。主要對(duì)員工的加班進(jìn)行管理。對(duì)員工的加班費(fèi)用進(jìn)行匯總統(tǒng)計(jì),為后續(xù)的功能模塊提供數(shù)據(jù)。3.3.3工資管理
包括工資匯總、數(shù)據(jù)輸入(可變動(dòng)數(shù)據(jù))、工資分配和工資查詢(xún)4個(gè)功能模塊。工資匯總是由系統(tǒng)自動(dòng)進(jìn)行,每月進(jìn)行一次,該功能主要實(shí)現(xiàn)對(duì)員工的基本工資、福利、考勤進(jìn)行匯總,為后續(xù)功能提供服務(wù)。數(shù)據(jù)輸入主要是處理某員工的月度獎(jiǎng)金和其他應(yīng)扣、應(yīng)發(fā)的數(shù)據(jù)。工資分配是對(duì)工資進(jìn)行分配處理,記錄工資的歷史記錄便于以后查詢(xún)。工資查詢(xún)功能主要實(shí)現(xiàn)按員工基本信息、部門(mén)信息和部門(mén)匯總進(jìn)行查詢(xún)、統(tǒng)計(jì)工資的詳細(xì)信息。3.2.4評(píng)價(jià)信息管理
主要是員工的獎(jiǎng)罰管理,其主要功能是添加員工獎(jiǎng)罰信息、如員工編號(hào)獎(jiǎng)罰類(lèi)別、記錄人員記錄時(shí)間和備注等信息;刪除員工的獎(jiǎng)罰信息查看員工獎(jiǎng)罰信息。3.2.5系統(tǒng)管理
主要是對(duì)用戶(hù)和密碼的管理。包括:添加系統(tǒng)用戶(hù)信息,如用戶(hù)名、密碼和用戶(hù)類(lèi)型等信息;修改系統(tǒng)用戶(hù)信息,如密碼和用戶(hù)類(lèi)型等信息;刪除系統(tǒng)用戶(hù)信息;查看系統(tǒng)用戶(hù)信息。3.3總體功能模塊設(shè)計(jì):功能層次圖
根據(jù)前面的需求分析以及系統(tǒng)功能的分析可用以下圖形來(lái)描述系統(tǒng)總體的功能模塊。
企業(yè)人事信息管理系統(tǒng)員工基本信息員工考勤管理員工工資管理員工評(píng)價(jià)信息系統(tǒng)管理添加員工基本信息修改員工基本信息查詢(xún)員工基本信息添加員工考勤信息修改員工考勤信息查詢(xún)員工考勤信息添加工資基本信息修改工資基本信息查詢(xún)員工基本信息添加員工評(píng)價(jià)信息修改員工評(píng)價(jià)信息查詢(xún)員工評(píng)價(jià)信息添加用戶(hù)修改用戶(hù)密碼
圖3-1 功能模塊圖
3.4系統(tǒng)流程分析
所謂系統(tǒng)流程分析,就是用戶(hù)使用系統(tǒng)時(shí)的工作過(guò)程。不同的用戶(hù)有著不同的工作流程和使用權(quán)限。但是所有的用戶(hù)都是從用戶(hù)登錄模塊開(kāi)始的。登錄主要是判斷是否是合法的用戶(hù),在數(shù)據(jù)庫(kù)設(shè)計(jì)中用戶(hù)的登錄名是固定的,如果要添加用戶(hù)則在用戶(hù)主界面進(jìn)行添加用戶(hù)信息。本系統(tǒng)的系統(tǒng)流程分析如圖3-2所示:
系統(tǒng)結(jié)構(gòu)圖
圖3-2 系統(tǒng)流程分析圖8
2.3.3系統(tǒng)功能提出
根據(jù)詳細(xì)的需求分析,明確系統(tǒng)功能如下:
1.員工基本信息管理:主要完成職工基本信息的管理,如員工基本信息的添加、修改、刪除和查詢(xún);
2.員工考勤信息管理:主要完成職工考勤信息的管理,管理員工基本信息的考勤添加、修改、刪除和考勤信息的查詢(xún)
3.員工評(píng)價(jià)信息管理:主要完成員工評(píng)價(jià)信息的管理,管理員工基本工作信息的添加、修改、刪除和查詢(xún);
4.員工工資信息管理:主要完成員工工資信息的管理,主要是進(jìn)行員工工資信息的添加、修改刪除和查詢(xún)
5.數(shù)據(jù)庫(kù)管理部分:主要完成數(shù)據(jù)庫(kù)的管理與維護(hù);
6.系統(tǒng)管理部分:主要是完成用戶(hù)的添加、密碼信息的修改等。[4]
第四章 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開(kāi)發(fā)和建設(shè)中的核心技術(shù),具體說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)數(shù)據(jù),滿(mǎn)足各種用戶(hù)的應(yīng)用需求。合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。另外,合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)將非常有利于程序的實(shí)現(xiàn)。
4.1數(shù)據(jù)庫(kù)設(shè)計(jì)的一般性原則
數(shù)據(jù)庫(kù)設(shè)計(jì)的一般性原則如下所示:
第一個(gè)基本規(guī)則:對(duì)于每一個(gè)要存儲(chǔ)其信息的實(shí)體(或事物),我們都應(yīng)該給他一個(gè)自己的表;
第二個(gè)處理規(guī)則了:如果你需要在一個(gè)列中存儲(chǔ)多個(gè)值,那證明你的設(shè)計(jì)可能是有缺陷的。
簡(jiǎn)單的數(shù)據(jù)關(guān)系:一對(duì)一;一對(duì)多;多對(duì)一;多對(duì)多
在數(shù)據(jù)庫(kù)的設(shè)計(jì)中:要做到數(shù)據(jù)規(guī)范化、完整性、數(shù)據(jù)冗于和規(guī)范實(shí)例化。
4.2數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟
數(shù)據(jù)庫(kù)設(shè)計(jì)分五個(gè)階段:
1.規(guī)劃;
2.需求分析;
3.概念結(jié)構(gòu)設(shè)計(jì);
4.邏輯結(jié)構(gòu)設(shè)計(jì);
5.數(shù)據(jù)庫(kù)物理設(shè)計(jì)。4.3數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)庫(kù)概念設(shè)計(jì)的目標(biāo)就是要產(chǎn)生反映企業(yè)組織信息需求的數(shù)據(jù)庫(kù)概念結(jié)構(gòu),即概念模型。
4.3.1概念模型
概念模式是獨(dú)立與數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu),獨(dú)立與支持?jǐn)?shù)據(jù)庫(kù)的DBMS,不依賴(lài)于計(jì)算機(jī)系統(tǒng)的。概念模型是表達(dá)概念設(shè)計(jì)結(jié)果的工具。它應(yīng)該能夠真實(shí)、充分地反映現(xiàn)實(shí)世界中事物和事物之間的聯(lián)系;應(yīng)該簡(jiǎn)潔、明晰、獨(dú)立于機(jī)器,容易理解,方便數(shù)據(jù)庫(kù)設(shè)計(jì)人員和應(yīng)用人員進(jìn)行交流;應(yīng)該易于變動(dòng),便于修改;應(yīng)該很容易向關(guān)系、層次或網(wǎng)狀等各種數(shù)據(jù)模型轉(zhuǎn)變,方便地導(dǎo)出與DBMS有關(guān)的邏輯模型。從而使概念模型成為現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)過(guò)渡的中間層次。
概念模型有很多模型,其中最常用的方法之一是“實(shí)體—聯(lián)系模型”(entity relationship model),即使用E-R圖來(lái)描述某一組織的概念模型。
4.3.2 E-R圖
E-R模型是指直接從現(xiàn)實(shí)世界中抽象出實(shí)體類(lèi)型及實(shí)體間聯(lián)系,是一種描述靜態(tài)數(shù)據(jù)結(jié)構(gòu)的概念模型。它的主要成分是實(shí)體、聯(lián)系和屬性??衫肊-R模型進(jìn)行數(shù)據(jù)庫(kù)概念設(shè)計(jì)。E-R圖是直觀表示概念模型的工具,再圖中有四個(gè)基本成分如圖4-1:
4.3.3系統(tǒng)E-R圖
圖4-5 E-R圖
5.3心得體會(huì)
通過(guò)做這個(gè)系統(tǒng)設(shè)計(jì),讓我在實(shí)踐上得到了很好的鍛煉。由于本人是初次開(kāi)發(fā)一個(gè)系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù),無(wú)論是在知識(shí)、還是經(jīng)驗(yàn)方面都存在著大大的不足。通過(guò)開(kāi)發(fā)這個(gè)系統(tǒng),我掌握了的項(xiàng)目過(guò)程,即開(kāi)發(fā)一個(gè)管理信息系統(tǒng)需要運(yùn)用系統(tǒng)的思想,使用系統(tǒng)的方法,進(jìn)行系統(tǒng)的調(diào)查,以便完成管理信息系統(tǒng)的規(guī)劃、分析、設(shè)計(jì)、實(shí)施等步驟。在整個(gè)過(guò)程中,絕對(duì)不能脫離實(shí)際,同時(shí),應(yīng)該重視軟件開(kāi)發(fā)中的易使用性、可操作性和可移植性等。
第三篇:JAVA課程設(shè)計(jì)員工信息管理系統(tǒng)
JAVA員工管理系統(tǒng)
實(shí)驗(yàn)報(bào)告
姓名:張旭冉
學(xué)號(hào):10105010117
班級(jí):信10-1
北方工業(yè)大學(xué)理學(xué)院信息與計(jì)算科學(xué)系
2013年 12月 17日
員工管理系統(tǒng)一、實(shí)驗(yàn)?zāi)康?/p>
通過(guò)該課程設(shè)計(jì),使同學(xué)們進(jìn)一步理解概JAVA的基本概念、理論和方法,初步掌握J(rèn)DK、Eclipse的調(diào)試和應(yīng)用,以及程序中錯(cuò)誤的解決方法,明確JAVA在實(shí)際程序設(shè)計(jì)中的應(yīng)用。使課堂中學(xué)習(xí)到理論得到應(yīng)用,練習(xí)文件形式在JAVA程序設(shè)計(jì)中的應(yīng)用。
二、實(shí)驗(yàn)內(nèi)容
A.設(shè)計(jì)題目:?jiǎn)T工管理系統(tǒng)
設(shè)計(jì)要求:(1)完成員工信息的添加、刪除、查詢(xún)、修改功能
(2)使用用戶(hù)界面操作
(3)使用文件形式完成
設(shè)計(jì)思路:首先設(shè)計(jì)界面進(jìn)入面板,在面板中添加菜單選項(xiàng),并將要實(shí)現(xiàn)的功能選項(xiàng)添加其中,然后對(duì)這些選項(xiàng)實(shí)施監(jiān)聽(tīng),實(shí)現(xiàn)其功能。通過(guò)文件類(lèi)型知識(shí)的應(yīng)用,實(shí)現(xiàn)對(duì)員工信息的管理。B.概要設(shè)計(jì)
面板設(shè)計(jì):首先設(shè)計(jì)一個(gè)容器,然后再容器中添加菜單,在菜單中添加選項(xiàng),并在容器中加入面板,面板布局設(shè)置為CardLayout,最后將面板添加進(jìn)容器。
功能實(shí)現(xiàn):在錄入、查詢(xún)、修改和刪除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice為界面中加入相應(yīng)的組件,并對(duì)其進(jìn)行監(jiān)聽(tīng),同時(shí)附加了文件流的處理。C.詳細(xì)設(shè)計(jì)
1、定義員工類(lèi):
public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex;public Employee(){ } public void setNumber(String number){ this.number=number;} public String getNumber(){ return number;
} public void setName(String name){ this.name=name;} public String getName(){ return name;} public void setDiscipling(String discipling){ this.discipling=discipling;} public String getDisciping(){ return discipling;} public void setGrade(String grade){ this.grade=grade;} public String getGrade(){ return grade;} public void setBorth(String borth){ this.borth=borth;} public String getBorth(){ return borth;} public void setSex(String sex){ this.sex=sex;} public String getSex(){ return sex;}}
2、主程序:
import java.awt.*;
import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息錄入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查詢(xún)=null;Delete 基本信息刪除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 錄入,修改,查詢(xún),刪除;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label=null;JPanel pCenter;public EmployeeManager(){ 錄入=new JMenuItem(“錄入員工基本信息”);修改=new JMenuItem(“修改員工基本信息”);查詢(xún)=new JMenuItem(“查詢(xún)員工基本信息”);刪除=new JMenuItem(“刪除員工基本信息”);bar=new JMenuBar();fileMenu=new JMenu(“菜單選項(xiàng)”);fileMenu.add(錄入);fileMenu.add(修改);fileMenu.add(查詢(xún));fileMenu.add(刪除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“歡迎進(jìn)入員工信息管理系統(tǒng)”,JLabel.CENTER);label.setFont(new Font(“SansSerif”,Font.BOLD+Font.ITALIC,25));label.setForeground(Color.red);基本信息=new Hashtable();錄入.addActionListener(this);修改.addActionListener(this);查詢(xún).addActionListener(this);刪除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();
pCenter.setLayout(card);pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt”);if(!file.exists()){
try
{
FileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);
objectOut.writeObject(基本信息);
objectOut.close();
out.close();
}
catch(IOException e)
{
} } 基本信息錄入=new EmployeeSituation(file);基本信息修改=new ModifySituation(file);基本信息查詢(xún)=new Inquest(this,file);基本信息刪除=new Delete(file);pCenter.add(“歡迎語(yǔ)界面”,label);pCenter.add(“錄入界面”,基本信息錄入);pCenter.add(“修改界面”,基本信息修改);pCenter.add(“刪除界面”,基本信息刪除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ card.show(pCenter,“錄入界面”);} else if(e.getSource()==修改)
{ card.show(pCenter,“修改界面”);} else if(e.getSource()==查詢(xún)){ 基本信息查詢(xún).setVisible(true);} else if(e.getSource()==刪除){ card.show(pCenter,“刪除界面”);} } public static void main(String args[]){ new EmployeeManager();}}
3、實(shí)現(xiàn)員工信息的錄入: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門(mén);JRadioButton 男,女;Employee 員工=null;ButtonGroup group=null;JButton 錄入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public EmployeeSituation(File file){
this.file=file;
員工號(hào)=new JTextField(10);
姓名=new JTextField(10);
部門(mén)=new Choice();部門(mén).add(“請(qǐng)選擇”);部門(mén).add(“研發(fā)部”);部門(mén).add(“銷(xiāo)售部”);部門(mén).add(“人事部”);部門(mén).add(“安全部”);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男”,true);女=new JRadioButton(“女”,false);group.add(男);group.add(女);錄入=new JButton(“錄入”);重置=new JButton(“重置”);錄入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(“員工號(hào):”,JLabel.CENTER));box1.add(員工號(hào));Box box2=Box.createHorizontalBox();box2.add(new JLabel(“姓名:”,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(“性別:”,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(“部門(mén):”,JLabel.CENTER));box4.add(部門(mén));Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ ”,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(“工資:”,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);
pCenter.setBackground(Color.yellow);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
JPanel pSouth=new JPanel();
pSouth.add(錄入);
pSouth.add(重置);
pSouth.setBackground(Color.yellow);
add(pSouth,BorderLayout.SOUTH);
validate();
} public void actionPerformed(ActionEvent e){ if(e.getSource()==錄入){ String number=“";number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String warning=”該員工基本信息已存在,請(qǐng)到修改頁(yè)面修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);} else { String m=”基本信息將被錄入!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();
String discipling=部門(mén).getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} 員工=new Employee();員工.setNumber(number);員工.setName(name);員工.setDiscipling(discipling);員工.setGrade(grade);員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);
基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();
員工號(hào).setText(null);
姓名.setText(null);
工資.setText(null);} catch(Exception ee){ System.out.println(ee);}}}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}
if(e.getSource()==重置)
{
員工號(hào).setText(null);
姓名.setText(null);
部門(mén).remove(部門(mén).getSelectedIndex());
工資.setText(null);}}}
4、實(shí)現(xiàn)員工信息的修改: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,工資;Choice 部門(mén);JRadioButton 男,女;ButtonGroup group=null;JButton 開(kāi)始修改,錄入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file)
{ this.file=file;員工號(hào)=new JTextField(10);姓名=new JTextField(10);部門(mén)=new Choice();部門(mén).add(”請(qǐng)選擇“);部門(mén).add(”研發(fā)部“);部門(mén).add(”銷(xiāo)售部“);部門(mén).add(”人事部“);部門(mén).add(”安全部“);工資=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(”男“,true);女=new JRadioButton(”女“,false);group.add(男);group.add(女);開(kāi)始修改=new JButton(”開(kāi)始修改“);錄入修改=new JButton(”錄入修改“);錄入修改.setEnabled(false);重置=new JButton(”重置“);員工號(hào).addActionListener(this);開(kāi)始修改.addActionListener(this);錄入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要修改信息的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(開(kāi)始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門(mén):“,JLabel.CENTER));box4.add(部門(mén));Box box6=Box.createHorizontalBox();box6.add(new JLabel(” “,JLabel.CENTER));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();
boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(錄入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate();
} public void actionPerformed(ActionEvent e){
if(e.getSource()==開(kāi)始修改||e.getSource()==員工號(hào))
{
String number=”“;
number=員工號(hào).getText();
if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ 錄入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門(mén).getSelectedItem();工資.setText(stu.getGrade());
if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} }
else
{
錄入修改.setEnabled(false);String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門(mén).remove(部門(mén).getSelectedItem());工資.setText(null);
} }
else { 錄入修改.setEnabled(false);String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);員工號(hào).setText(null);姓名.setText(null);部門(mén).remove(部門(mén).getSelectedItem());工資.setText(null);}
}
else if(e.getSource()==錄入修改)
{
String number=”“;
number=員工號(hào).getText();
if(number.length()>0)
{
try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();
inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ String question=”該員工基本信息已存在,您想修改他(她)的基本信息嗎?“;JOptionPane.showMessageDialog(this,question,”警告“,JOptionPane.QUESTION_MESSAGE);String m=”基本信息將被修改!“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)“,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText();String discipling=部門(mén).getSelectedItem();String grade=工資.getText();String sex=null;if(男.isSelected()){ sex=男.getText();} else { sex=女.getText();} Employee 員工=new Employee();
員工.setNumber(number);
員工.setName(name);
員工.setDiscipling(discipling);
員工.setGrade(grade);
員工.setSex(sex);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,員工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();
員工號(hào).setText(null);姓名.setText(null);部門(mén).remove(部門(mén).getSelectedItem());工資.setText(null);} catch(Exception ee){ System.out.println(ee);} 錄入修改.setEnabled(false);} else if(ok==JOptionPane.NO_OPTION){ 錄入修改.setEnabled(true);} }
else
{ String warning=”該員工號(hào)沒(méi)有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);錄入修改.setEnabled(false);
}
}
else
{
String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);
錄入修改.setEnabled(false);
}
}
if(e.getSource()==重置)
{
員工號(hào).setText(null);
姓名.setText(null);
部門(mén).remove(部門(mén).getSelectedItem());
工資.setText(null);}}}
5、實(shí)現(xiàn)員工信息的查詢(xún): import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener { Hashtable 基本信息表=null;JTextField 員工號(hào),姓名,部門(mén),工資;JRadioButton 男,女;JButton 查詢(xún);ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){
super(f,”查詢(xún)對(duì)話(huà)框“,false);
this.file=file;
員工號(hào)=new JTextField(10);
查詢(xún)=new JButton(”查詢(xún)“);
員工號(hào).addActionListener(this);
查詢(xún).addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部門(mén)=new JTextField(10);部門(mén).setEditable(false);工資=new JTextField(10);工資.setEditable(false);男=new JRadioButton(”男“,false);女=new JRadioButton(”女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel(”輸入要查詢(xún)的員工號(hào):“,JLabel.CENTER));box1.add(員工號(hào));box1.add(查詢(xún));Box box2=Box.createHorizontalBox();box2.add(new JLabel(”姓名:“,JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel(”性別:“,JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel(”部門(mén):“,JLabel.CENTER));box4.add(部門(mén));Box box5=Box.createHorizontalBox();box5.add(new JLabel(”工資:“,JLabel.CENTER));box5.add(工資);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270);
addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false);} });} public void actionPerformed(ActionEvent e){ 姓名.setText(null);部門(mén).setText(null);工資.setText(null);if(e.getSource()==查詢(xún)||e.getSource()==員工號(hào)){ String number=”“;number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){ } if(基本信息表.containsKey(number)){ Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName());部門(mén).setText(stu.getDisciping());工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} } else {
String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}} else { String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告“,JOptionPane.WARNING_MESSAGE);}}}}
6、實(shí)現(xiàn)員工信息的刪除: import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener {
Hashtable 基本信息表=null;
JTextField 員工號(hào),姓名,部門(mén),工資;
JRadioButton 男,女;
JButton 刪除;
ButtonGroup group=null;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File file=null;
public Delete(File file)
{
this.file=file;
員工號(hào)=new JTextField(10);
刪除=new JButton(”刪除“);
員工號(hào).addActionListener(this);
刪除.addActionListener(this);
姓名=new JTextField(10);
姓名.setEditable(false);
部門(mén)=new JTextField(10);
部門(mén).setEditable(false);
工資=new JTextField(10);
工資.setEditable(false);
男=new JRadioButton(”男“,false);
女=new JRadioButton(”女“,false);
group=new ButtonGroup();
group.add(男);
group.add(女);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel(”輸入要?jiǎng)h除的學(xué)號(hào):“,JLabel.CENTER));
box1.add(員工號(hào));
box1.add(刪除);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel(”姓名:“,JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel(”性別:“,JLabel.CENTER));
box3.add(男);
box3.add(女);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel(”部門(mén):“,JLabel.CENTER));
box4.add(部門(mén));
Box box6=Box.createHorizontalBox();
box6.add(new JLabel(” “,JLabel.CENTER));
Box box5=Box.createHorizontalBox();
box5.add(new JLabel(”工資:“,JLabel.CENTER));
box5.add(工資);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box5);
boxH.add(box6);
boxH.add(box4);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
pCenter.setBackground(Color.yellow);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==刪除||e.getSource()==員工號(hào))
{
String number=”“;
number=員工號(hào).getText();if(number.length()>0){ try { inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();} catch(Exception ee){
} if(基本信息表.containsKey(number)){
Employee stu=(Employee)基本信息表.get(number);
姓名.setText(stu.getName());
部門(mén).setText(stu.getDisciping());
工資.setText(stu.getGrade());if(stu.getSex().equals(”男“)){ 男.setSelected(true);} else { 女.setSelected(true);} String m=”確定要?jiǎng)h除該員工號(hào)及全部信息嗎?“;int ok=JOptionPane.showConfirmDialog(this,m,”確認(rèn)
“,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ 基本信息表.remove(number);try { outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();員工號(hào).setText(null);姓名.setText(null);部門(mén).setText(null);工資.setText(null);} catch(Exception ee){ System.out.println(ee);} } else if(ok==JOptionPane.NO_OPTION){ 員工號(hào).setText(null);姓名.setText(null);部門(mén).setText(null);
工資.setText(null);} } else {
String warning=”該員工號(hào)不存在!“;JOptionPane.showMessageDialog(this,warning,”警告
“,JOptionPane.WARNING_MESSAGE);} } else {
String warning=”必須要輸入員工號(hào)!“;JOptionPane.showMessageDialog(this,warning,”警告",JOptionPane.WARNING_MESSAGE);}}}}
三、實(shí)驗(yàn)結(jié)果體會(huì)
本次JAVA課程設(shè)計(jì)我所編寫(xiě)的程序是員工信息管理系統(tǒng),程序中實(shí)現(xiàn)了對(duì)員工信息的添加、查詢(xún)、修改、刪除的功能,我是應(yīng)用文件的形式完成的,其中還應(yīng)用到了圖形用戶(hù)界面。我設(shè)計(jì)的程序簡(jiǎn)單易懂,操作簡(jiǎn)單,且 適用于不同的單位使用,只需按照自己的需要將所要錄入的信息名稱(chēng)做添加或修改就可以實(shí)現(xiàn)。通過(guò)這次JAVA的程序設(shè)計(jì),使我對(duì)JAVA有了更加深入的了解,鞏固了我對(duì)JAVA基礎(chǔ)知識(shí)的掌握。
第四篇:《員工信息管理系統(tǒng)》詳細(xì)設(shè)計(jì)說(shuō)明書(shū)
《員工信息管理系統(tǒng)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)》
一、引言
1.1編寫(xiě)目的
根據(jù)需求規(guī)格說(shuō)明書(shū)、概要設(shè)計(jì)說(shuō)明書(shū),在仔細(xì)考慮討論之后,我們對(duì)員工信息管理系統(tǒng)軟件功能的劃分、數(shù)據(jù)結(jié)構(gòu)、軟件總體結(jié)構(gòu)的實(shí)現(xiàn)有了進(jìn)一步的想法。本說(shuō)明書(shū)的預(yù)期讀者是與員工信息管理系統(tǒng)軟件開(kāi)發(fā)有聯(lián)系的決策人,開(kāi)發(fā)組成人員,扶助開(kāi)發(fā)者,支持本項(xiàng)目的領(lǐng)導(dǎo)和公司人員,軟件驗(yàn)證者。
1.2背景
利用先進(jìn)的管理手段,提高人事信息的管理水平,是每一現(xiàn)代公司所面臨的重要課題。為了解決這一重要課題,就必須有一套科學(xué),高效,嚴(yán)密,實(shí)用的人事信息管理系統(tǒng)?,F(xiàn)代公司的人事信息管理都是在計(jì)算機(jī)上實(shí)現(xiàn)的,采用現(xiàn)代計(jì)算機(jī)管理系統(tǒng)來(lái)進(jìn)行管理,提供規(guī)范,統(tǒng)一的服務(wù),它在管理系統(tǒng)中的應(yīng)用不僅可以簡(jiǎn)化,規(guī)范各機(jī)構(gòu)的日常操作,而且可以使企業(yè)人事信息管理更加方便,簡(jiǎn)單,快捷,清晰,從而減輕工作人員的勞動(dòng)強(qiáng)度,減少企業(yè)的財(cái)政消耗。
1.3定義
SQL Server:所用的數(shù)據(jù)庫(kù)管理系統(tǒng) VS 2010:所用的開(kāi)發(fā)軟件
二、程序
(一)設(shè)計(jì)說(shuō)明
2.1程序描述
主模塊
2.2功能
建立與數(shù)據(jù)庫(kù)連接 獲取系統(tǒng)設(shè)置
能夠跳轉(zhuǎn)至子模塊:登陸、注冊(cè)等模塊。
2.3輸入、輸出項(xiàng)
用戶(hù)鼠標(biāo)點(diǎn)擊登陸、注冊(cè)按鈕 跳轉(zhuǎn)至相應(yīng)模塊界面
2.5流程邏輯
選擇項(xiàng)登陸系統(tǒng)注冊(cè)系統(tǒng)查詢(xún)系統(tǒng)管理系統(tǒng) 2.6界面設(shè)計(jì)
2.7功能實(shí)現(xiàn)方法
'跳轉(zhuǎn)登陸頁(yè)面
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As EventArgs)Handles lbtnLogin.Click If Request.Cookies(“UserName”)Is Nothing Then Response.Redirect(“Login.aspx”)Else
Page.ClientScript.RegisterStartupScript(Page.GetType(), “", ”“)End If
End Sub
'跳轉(zhuǎn)注冊(cè)頁(yè)面
Protected Sub lbtnRegister_Click(ByVal sender As Object, ByVal e As EventArgs)Handles lbtnRegister.Click Response.Redirect(”Register.aspx“)End Sub
三、程序
(二)設(shè)計(jì)說(shuō)明
3.1程序描述
登陸模塊
3.2功能
實(shí)現(xiàn)管理員賬號(hào)登陸,以便繼續(xù)后面操作
3.3輸人項(xiàng)
輸入:管理員賬號(hào)、密碼。輸出:登陸成功界面
3.4流程邏輯
登陸輸入帳號(hào)密碼NO判斷信息是否正確YES登陸成功
2.6界面設(shè)計(jì)
登陸界面
登陸成功界面
2.7功能實(shí)現(xiàn)方法
'登錄
Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As EventArgs)Handles btnLogin.Click Dim Count As Integer'返回受影響的行數(shù)
Dim cookies As New HttpCookie(”UserName“)managemodel.ManageId = txtName.Text.Trim()managemodel.ManagePassword = txtPassWord.Text.Trim()Count = managebll.Login(managemodel)'注銷(xiāo)登錄
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load If Not IsPostBack Then
If Not Request.Cookies(”UserName“)Is Nothing Then '如果Cookie中有值則把值賦給標(biāo)簽并顯示一些登陸后才顯示的控件
lblUser.Text = Request.Cookies(”UserName“).Value lbtnSearch.Visible = True lblSucces.Visible = True lbtnOut.Visible = True lblWelcome.Visible = False
End If End If End Sub
四、程序
(三)設(shè)計(jì)說(shuō)明
4.1程序描述
注冊(cè)模塊
4.2功能
提供管理員賬號(hào)注冊(cè)功能
4.3輸入項(xiàng)
輸入:新管理員賬號(hào)、密碼信息 輸出:注冊(cè)成功提示
4.4流程邏輯
注冊(cè)填寫(xiě)新帳號(hào)密碼并確認(rèn)判斷密碼是否有誤NONOYES判斷帳號(hào)是否已被注冊(cè)YES注冊(cè)成功
2.6界面設(shè)計(jì)
2.7功能實(shí)現(xiàn)方法 '注冊(cè)
Check = managebll.Check(managemodel)'執(zhí)行判定
If Check = 0 Then '若表括中無(wú)同名用戶(hù)則行添加用戶(hù) Count = managebll.Register(managemodel)If Count > 0 Then '若受影響行數(shù)大于0說(shuō)明添加成功
Page.ClientScript.RegisterStartupScript(Page.GetType(), ”“)Else '否則添加不成功
Page.ClientScript.RegisterStartupScript(Page.GetType(), ”“)End If
Else '有同名用戶(hù)時(shí)彈出提示
Page.ClientScript.RegisterStartupScript(Page.GetType(), ”“, ”“)End If
”“, ”“,五、程序
(四)設(shè)計(jì)說(shuō)明
5.1程序描述
查詢(xún)模塊
5.2功能
提供員工信息查詢(xún)
全部查詢(xún):顯示所有員工信息
按員工ID查詢(xún):顯示指定ID的員工信息 按性別查詢(xún):顯示指定性別的員工信息
5.3輸人、輸出項(xiàng)
輸入:選擇查詢(xún)條件,如員工ID或性別等。輸出:顯示滿(mǎn)足條件的員工。
5.4流程邏輯
查詢(xún)?nèi)坎樵?xún)按員工ID查詢(xún)按性別查詢(xún)輸入員工ID選擇性別顯示輸出結(jié)果
2.6界面設(shè)計(jì)
全部查詢(xún)
按員工ID查詢(xún)
按性別查詢(xún)
2.7功能實(shí)現(xiàn)方法
Protected Sub btnOk_Click(ByVal sender As Object, ByVal e As EventArgs)Handles btnOk.Click If rblSelect.SelectedValue = ”0“ Then '全部查詢(xún) SelectAllInfo()ElseIf rblSelect.SelectedValue = ”1“ Then '按員工ID查詢(xún) SelectIdInfo()ElseIf rblSelect.SelectedValue = ”2“ Then '按性別查詢(xún) SelectSexInfo()End If
End Sub
六、程序
(五)設(shè)計(jì)說(shuō)明
6.1程序描述
管理模塊
6.2功能
實(shí)現(xiàn)員工信息的添加、刪除、修改
6.3輸入、輸出項(xiàng)
輸入:?jiǎn)T工信息
輸出:變更后的員工信息
6.4流程邏輯
管理添加查詢(xún)輸入新員工信息YES顯示輸出結(jié)果判斷ID是否重復(fù)修改員工信息刪除員工信息顯示輸出結(jié)果 2.6界面設(shè)計(jì)
添加員工信息
修改員工信息
2.7功能實(shí)現(xiàn)方法
'刪除數(shù)據(jù)
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs)Handles GridView1.RowDeleting Dim
index
As
Integer
= Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Value.ToString)'獲得主鍵
Dim Count As Integer
'調(diào)用業(yè)務(wù)邏輯層
Count = staffbll.DeleteInfo(index)'刷新頁(yè)面? Bind()End Sub
'更新
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)Handles GridView1.RowUpdating Dim index As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Value.ToString)'獲取主鍵 staffmodel.StfId = index staffmodel.StfName =(CType((GridView1.Rows(e.RowIndex).Cells(2).Controls(0)), TextBox)).Text.Trim()staffmodel.StfSex =(CType((GridView1.Rows(e.RowIndex).Cells(3).Controls(0)), TextBox)).Text.Trim()staffmodel.StfAge =(CType((GridView1.Rows(e.RowIndex).Cells(4).Controls(0)), TextBox)).Text.Trim()staffmodel.StfJob =(CType((GridView1.Rows(e.RowIndex).Cells(5).Controls(0)), TextBox)).Text.Trim()staffmodel.StfTime =(CType((GridView1.Rows(e.RowIndex).Cells(6).Controls(0)), TextBox)).Text.Trim()staffbll.UpdataInfo(staffmodel)GridView1.EditIndex =-1 Bind()End Sub '執(zhí)行添加
staffmodel.StfId = txtId.Text.Trim()staffmodel.StfName = txtName.Text.Trim()staffmodel.StfSex = txtSex.Text.Trim()staffmodel.StfAge = txtAge.Text.Trim()staffmodel.StfJob = txtJob.Text.Trim()staffmodel.StfTime = txtTime.Text.Trim()Check = staffbll.Check(staffmodel)'執(zhí)行判定
If Check = 0 Then ' 如果表括中無(wú)值 則可進(jìn)行添加
'調(diào)用業(yè)務(wù)邏輯層
staffbll.AddInfo(staffmodel)Bind()Else '如果有值則不能添加
Page.ClientScript.RegisterStartupScript(Page.GetType(), ”“)End If
”",七、參考資料
(1)張俊蘭等?!盾浖こ獭肺靼搽娮涌萍即髮W(xué)出版社,2003年8月。(2)薩師煊等?!稊?shù)據(jù)庫(kù)系統(tǒng)概論(第三版)》高等教育出版社,2000年。(3)郝興偉?!禬eb開(kāi)發(fā)技術(shù)》清華大學(xué)出版社,2004年。
第五篇:學(xué)生信息管理系統(tǒng)
摘 要
隨著網(wǎng)絡(luò)通信技術(shù)的迅速發(fā)展和信息技術(shù)的廣泛應(yīng)用,計(jì)算機(jī)的應(yīng)用已普及到經(jīng)濟(jì)和社會(huì)生活的各個(gè)領(lǐng)域。教育領(lǐng)域也不例外,現(xiàn)今已經(jīng)出現(xiàn)了各種遠(yuǎn)程網(wǎng)絡(luò)在線(xiàn)教育系統(tǒng)、圖書(shū)館管理系統(tǒng)、學(xué)生信息管理系統(tǒng)等。其中學(xué)生信息管理是任一院校都不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和教學(xué)管理者來(lái)說(shuō)都至關(guān)重要,而傳統(tǒng)的人工管理方式效率較低,為數(shù)據(jù)的查詢(xún)、更新和維護(hù)帶來(lái)了極大的不便。所以學(xué)生信息管理信息系統(tǒng)的開(kāi)發(fā)和應(yīng)用是必要的,它能夠?yàn)楣芾砣藛T提供充足的信息和快捷的查詢(xún)手段,提高學(xué)校對(duì)學(xué)生信息的管理效率。
本文的學(xué)生信息管理系統(tǒng)是基于java語(yǔ)言的,它能夠提供學(xué)生信息管理功能,方便系統(tǒng)管理員對(duì)學(xué)生學(xué)號(hào)、班級(jí)等信息的添加、修改、刪除、查詢(xún)等操作,同時(shí)可以一樣方便的對(duì)學(xué)生的信息進(jìn)行查詢(xún)。本系統(tǒng)也主要利用java語(yǔ)言和access實(shí)現(xiàn),因此它具有很強(qiáng)的可移植性,很方便。
關(guān)鍵字: 學(xué)生信息 管理系統(tǒng)
添加 刪除 查詢(xún) 修改
Abstract With the rapid development of network communication technology and extensive application of information technology, computer applications have spread to the economic and social life in various fields.The field of education is no exception, now there have been a variety of remote network online education system, library management system, student information management system.Which is either a student information management schools are an indispensable part of its contents and teaching for school managers, policy-makers are essential, and the traditional manual management inefficient for data query, update and maintenance brought great inconvenience.So the student information management system development and application of information is necessary, it is able to provide managers with sufficient information and quick inquiry means to improve school student information management efficiency.This student information management system is based on the java language, it is able to provide students with information management function to facilitate system administrators to students student number, class and other information to add, modify, delete, query and other operations, but can be just as convenient for students information to search.This system is mainly achieved using java language and access, so it is very portable, very convenient.Keywords: Student Information Management System add delet revise
前言
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,信息時(shí)代的到來(lái),信息改變了我們這個(gè)社會(huì)。學(xué)校在管理、教學(xué)、辦公各個(gè)方面也在悄悄地變化。一個(gè)學(xué)校的信息化程度體現(xiàn)在將計(jì)算器與信息技術(shù)應(yīng)用于教學(xué)與管理,以現(xiàn)代化工具代替?zhèn)鹘y(tǒng)手工作業(yè)。無(wú)疑,使用信息化管理使教學(xué)更先進(jìn)、辦公更高效、管理更科學(xué),信息交流更迅速。
學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要,所以學(xué)生成績(jī)信息管理系統(tǒng)應(yīng)該能夠?yàn)橛脩?hù)提供充足的信息和快捷的查詢(xún)手段。但一直以來(lái)人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少的困難。
作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)信息進(jìn)行管理,具有著手工管理所無(wú)法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生檔案管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。
因此,開(kāi)發(fā)這樣一套管理軟件成為很有必要的事情,故決定選擇學(xué)生成績(jī)管理系統(tǒng)來(lái)作為本人的畢業(yè)設(shè)計(jì),在很短的時(shí)間里開(kāi)發(fā)出一套界面友好,功能強(qiáng)大,使用簡(jiǎn)單的適用于各規(guī)模學(xué)院的學(xué)生成績(jī)管理系統(tǒng)。該學(xué)生成績(jī)管理系統(tǒng)能有效的處理在校學(xué)生的成績(jī)管理,具有成績(jī)輸入、成績(jī)查詢(xún)、成績(jī)統(tǒng)計(jì)及打印功能。
學(xué)生成績(jī)管理系統(tǒng)可以實(shí)施應(yīng)用在各中、大、小院校中,適用范圍很廣,應(yīng)用性強(qiáng)。隨著系統(tǒng)實(shí)施的日益成熟,最終會(huì)使單機(jī)作業(yè)為主的教學(xué)管理活動(dòng)提高到這個(gè)平臺(tái)上來(lái),從而實(shí)現(xiàn)學(xué)校學(xué)生成績(jī)信息管理的辦公自動(dòng)化,籍以提高辦學(xué)效率和質(zhì)量。使學(xué)校充分利用計(jì)算機(jī)所帶來(lái)的新技術(shù),為培養(yǎng)人才打下堅(jiān)實(shí)的基礎(chǔ)。
第一章 相關(guān)技術(shù)簡(jiǎn)介
1.1 java語(yǔ)言簡(jiǎn)介
Java語(yǔ)言是sun公司與1995年5月正式發(fā)布的程序設(shè)計(jì)語(yǔ)言,他的前身是sun公司為智能消費(fèi)類(lèi)家用電器研究而開(kāi)發(fā)的項(xiàng)目的一部分。
Java程序設(shè)計(jì)語(yǔ)言是新一代語(yǔ)言的代表,他強(qiáng)調(diào)了面向?qū)ο蟮奶匦?,可以用?lái)開(kāi)發(fā)范圍廣泛的軟件,它具有支持圖形化的用戶(hù)界面,網(wǎng)格以及數(shù)據(jù)庫(kù)連接等復(fù)雜功能。Java語(yǔ)言的主要特點(diǎn): 1)易于學(xué)習(xí)
Java語(yǔ)言很簡(jiǎn)單,對(duì)于熟悉C++的程序設(shè)計(jì)人員更不會(huì)對(duì)其感到陌生,因 為它的語(yǔ)法非常接近于C++,但他同時(shí)摒棄了C++許多的復(fù)雜易混淆的功能。利用java同樣可以變質(zhì)出非常復(fù)雜的系統(tǒng),且運(yùn)行占用很少的內(nèi)存資源。2)高效率的執(zhí)行方式
Java語(yǔ)言的執(zhí)行方式是采用先經(jīng)過(guò)編譯器編譯,在通過(guò)解釋器解釋執(zhí)行的 方式來(lái)運(yùn)行的。他綜合了解釋性語(yǔ)言與編譯語(yǔ)言的眾多有點(diǎn),使其執(zhí)行效率較以往的程序設(shè)計(jì)語(yǔ)言有了大幅度的提高。3)與平臺(tái)的無(wú)關(guān)性
由于iava語(yǔ)言是解釋執(zhí)行的,他會(huì)被轉(zhuǎn)換成一種字節(jié)碼的“目標(biāo)程序”。因此它可以跨平臺(tái)運(yùn)行 4)分布式安全性
Java從誕生之日起就與網(wǎng)絡(luò)聯(lián)系在了一起,他強(qiáng)調(diào)網(wǎng)絡(luò)特性,內(nèi)置TCPIP,HTTP,F(xiàn)TP協(xié)議庫(kù),便于開(kāi)發(fā)網(wǎng)上應(yīng)用系統(tǒng)。5)豐富的API文檔和類(lèi)庫(kù)
Java為用戶(hù)提供了詳盡的API(Application Program Interface)文檔說(shuō)明。
1.2 access數(shù)據(jù)庫(kù)簡(jiǎn)介
Microsoft Office Access是微軟把數(shù)據(jù)庫(kù)引擎的圖形用戶(hù)界面和軟件開(kāi)發(fā)工具結(jié)合在一起的一個(gè)數(shù)據(jù)庫(kù)管理。他擁有邏輯、流程處理,即VBA語(yǔ)言(VB也可以用來(lái)做邏輯處理);又可以存儲(chǔ)數(shù)據(jù),即在“表”中存儲(chǔ)數(shù)據(jù)。
第二章 系統(tǒng)分析
2.1 系統(tǒng)分析
學(xué)生信息管理系統(tǒng),可用于學(xué)校等機(jī)構(gòu)的學(xué)生信息管理,查詢(xún),更新與維護(hù),使用方便,易用性強(qiáng),圖形界面清晰明了。該軟件用java語(yǔ)言編寫(xiě),用access數(shù)據(jù)庫(kù)作為后臺(tái)的數(shù)據(jù)庫(kù)進(jìn)行信息的存儲(chǔ),用SQL語(yǔ)句完成學(xué)生學(xué)籍信息的添加,查詢(xún),修改,刪除的操作以及成績(jī)的錄入,修改,刪除等。用ODBC驅(qū)動(dòng)實(shí)現(xiàn)前臺(tái)Java與后臺(tái)SQL數(shù)據(jù)庫(kù)的連接。Java語(yǔ)言跨平臺(tái)性強(qiáng),可以在windows,linux,ubuntu等系統(tǒng)下使用,方便簡(jiǎn)單,安全性好。
本《學(xué)生管理系統(tǒng)》具有對(duì)學(xué)生進(jìn)行學(xué)籍管理的功能。并于數(shù)據(jù)庫(kù)相連接,能夠?qū)W(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)、專(zhuān)業(yè)進(jìn)行查詢(xún)、添加和刪除等,簡(jiǎn)捷方便,容易使用。2.2 應(yīng)解決的問(wèn)題
2.2.1合理的設(shè)計(jì)數(shù)據(jù)庫(kù)
盡量合理地減少數(shù)據(jù)庫(kù)數(shù)據(jù)的冗余,使重復(fù)的數(shù)據(jù)保持在最小限度,這樣將不必要的多占用存儲(chǔ)空間,減少產(chǎn)生混亂影響的危險(xiǎn),還能提高計(jì)算機(jī)的運(yùn)行速度。作為學(xué)生成績(jī)管理系統(tǒng),必須能解決以下方面的問(wèn)題:能錄入信息。
在開(kāi)發(fā)學(xué)生信息管理系統(tǒng)時(shí),最重要的就是學(xué)生的基本信息,其學(xué)生信息表E-R圖如圖2.1所示。
圖 2.1 學(xué)生信息E-R圖
2.2.2設(shè)計(jì)出友好的界面
界面的友好與否是用戶(hù)評(píng)價(jià)一個(gè)軟件優(yōu)劣的重要方面。因?yàn)樵撓到y(tǒng)涉及到
學(xué)生成績(jī)的真實(shí)性,所以該系統(tǒng)要具有一定的保密性和權(quán)限控制,首先應(yīng)設(shè)計(jì)一個(gè)用戶(hù)的登陸窗口界面,要求只能由特定的人員對(duì)該系統(tǒng)進(jìn)行操作。此外還應(yīng)設(shè)計(jì)登陸后系統(tǒng)的主窗口,要求能夠顯示學(xué)生成績(jī)的基本信息,可以實(shí)現(xiàn)數(shù)據(jù)的錄入,更新,刪除、查詢(xún)、統(tǒng)計(jì)等功能。
另外窗口界面要多用按鈕,少用菜單,窗口的各個(gè)控鍵布局要合理,美觀。要充分的利用java.awt和java.swing提供的強(qiáng)大的功能,多用窗口和控件,充分體現(xiàn)窗口的多元化格局。
2.2.3實(shí)現(xiàn)的基本功能
該系統(tǒng)要求除了能實(shí)現(xiàn)信息的錄入,刪除,插入,更新,數(shù)據(jù)導(dǎo)出excel文件等基本功能之外,還要求能夠根據(jù)用戶(hù)的需要進(jìn)行操作。例如要查詢(xún)學(xué)生成績(jī),要求可以按照專(zhuān)業(yè)、班級(jí)等多種方式查詢(xún)。這些功能基本上能滿(mǎn)足用戶(hù)操作的需要,這樣用戶(hù)操作起來(lái)就更簡(jiǎn)單方便。部分文本框使用了下拉式,使用戶(hù)可以不用花費(fèi)大量的時(shí)間去輸入信息。
2.3 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 1.1.1 3.3.1數(shù)據(jù)庫(kù)物理設(shè)計(jì)
本系統(tǒng)采用Access數(shù)據(jù)庫(kù)管理系統(tǒng)作為后臺(tái)數(shù)據(jù)庫(kù)的開(kāi)發(fā)工具,設(shè)計(jì)的表結(jié)構(gòu)如下:
第三章 程序代碼及運(yùn)行效果
3.1主類(lèi)代碼:
/*主類(lèi)代碼*/ package kcsj;import java.awt.*;import javax.swing.*;import java.awt.event.*;
import javax.swing.border.*;import javax.swing.JOptionPane;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import java.sql.*;import java.awt.GridLayout;public class myStudent { public myStudent(){
}
public static void main(String[] args){ // TODO code application logic here loginFrame lf=new loginFrame();Font ft=new Font(“Serif”,Font.BOLD,18);lf.setVisible(true);lf.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){
System.exit(0);} });} }
3.2 登陸: public loginFrame(){
p=new JPanel();
user=new JTextField(10);
pass=new JPasswordField(10);
login=new JButton(“登錄”);
cancel=new JButton(“退出”);
p.setBackground(Color.lightGray);
//user.setText(“王明玉”);
//pass.setText(“123456”);
login.addActionListener(this);
cancel.addActionListener(this);
p.add(new JLabel(“學(xué)生信息管理系統(tǒng)登錄”));
p.add(new JLabel(“賬號(hào):”));
p.add(user);
p.add(new JLabel(“密碼:”));
p.add(pass);
p.add(login);
p.add(cancel);
this.add(p);
this.setTitle(“學(xué)生管理系統(tǒng)登錄界面”);
this.setSize(180,160);}
public void actionPerformed(ActionEvent e){
//查找
if(e.getSource()==login){
if(user.getText().toString().equals(“")){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入用戶(hù)名“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(pass.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入密碼“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else{
myConnection conn=new myConnection();
ResultSet rs;
String sql=”select * from admin where 用戶(hù)名 = '“+user.getText().toString()+”' and 密碼 = '“+pass.getText().toString()+”'“;
try{
rs=conn.getResult(sql);
if(rs.next()){
this.dispose();
//JOptionPane.showMessageDialog(null, ”此用戶(hù)已經(jīng)存在“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
sql=”select * from student“;
mainFrame mf=new mainFrame();
mf.setTitle(”西北師范大學(xué)學(xué)生信息管理系統(tǒng)“);
mf.setSize(600,486);
mf.freshTable(sql);
mf.setVisible(true);
mf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}else{
JOptionPane.showMessageDialog(null, ”用戶(hù)名或密碼錯(cuò)誤“, ”登錄失敗“, JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception er){
System.out.println(er.toString());
}
}
//全部顯示
}if(e.getSource()==cancel){
System.exit(0);
} } } 登陸界面:
3.3 修改數(shù)據(jù):
/*修改數(shù)據(jù)*/ class editFrame extends JDialog implements ActionListener{ public static final int WIDTH = 400;public static final int HEIGHT = 400;
JLabel 學(xué)號(hào)1,姓名1,性別1,民族1,年齡1,年級(jí)1,班級(jí)1,專(zhuān)業(yè)1;JTextField 學(xué)號(hào),姓名,性別,民族,年齡,年級(jí),班級(jí),專(zhuān)業(yè);JButton b;JPanel p;
mainFrame mf;
public editFrame(mainFrame mmf){ setTitle(”修改學(xué)生信息“);setSize(WIDTH,HEIGHT);setLocation(120,180);
Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout());
學(xué)號(hào)1=new JLabel(”學(xué)號(hào)“);姓名1=new JLabel(”姓名“);性別1=new JLabel(”性別“);民族1=new JLabel(”民族“);年齡1=new JLabel(”年齡“);年級(jí)1=new JLabel(”年級(jí)“);班級(jí)1=new JLabel(”班級(jí)“);
專(zhuān)業(yè)1=new JLabel(”專(zhuān)業(yè)“);
學(xué)號(hào)=new JTextField(5);姓名=new JTextField(5);性別=new JTextField(5);民族=new JTextField(5);年齡=new JTextField(5);年級(jí)=new JTextField(5);班級(jí)=new JTextField(10);專(zhuān)業(yè)=new JTextField(10);學(xué)號(hào).setEnabled(false);b=new JButton(”確定“);p=new JPanel();p.setLayout(new GridLayout(10,2,5,5));p.add(學(xué)號(hào)1);p.add(學(xué)號(hào));p.add(姓名1);p.add(姓名);p.add(性別1);p.add(性別);p.add(民族1);p.add(民族);p.add(年齡1);p.add(年齡);p.add(年級(jí)1);p.add(年級(jí));p.add(班級(jí)1);p.add(班級(jí));p.add(專(zhuān)業(yè)1);p.add(專(zhuān)業(yè));p.add(new Label(”“));p.add(new Label(”“));p.add(b);contentPane.add(p);//添加按鈕監(jiān)聽(tīng)器
b.addActionListener(this);mf=mmf;}
public void actionPerformed(ActionEvent e){
if(學(xué)號(hào).getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null,”請(qǐng)輸入學(xué)號(hào)“,”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(姓名.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null,”請(qǐng)輸入姓名“,”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(年齡.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null,”請(qǐng)輸入年齡“,”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else{
String sql=”update student set 姓名='“+姓名.getText()+”',性別='“+性別.getText()+”',年齡=“+年齡.getText()+”,年級(jí)='“+年級(jí).getText()+”',班級(jí)='“+班級(jí).getText()+”',專(zhuān)業(yè)='“+專(zhuān)業(yè).getText()+”',民族='“+民族.getText()+”' where 學(xué)號(hào)='“ + 學(xué)號(hào).getText()+ ”'“;
myConnection conn=new myConnection();
try{
//JOptionPane.showMessageDialog(null, sql, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
if(conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, ”修改成功“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
mf.freshTable(”select * from student“);
this.dispose();
}else{
JOptionPane.showMessageDialog(null, ”修改失敗“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception er){
System.out.println(er.toString());
}
}
}
}
3.4 查找數(shù)據(jù):
class findFrame extends JDialog implements ActionListener{
mainFrame mf;JPanel p;JComboBox c;JTextField t;JButton b;JButton fAll;String sql=”select * from student“;String[] colStr={”學(xué)號(hào)“,”姓名“,”性別“,”民族“,”年齡“,”年級(jí)“,”班級(jí)“,”專(zhuān)業(yè)“};
public findFrame(mainFrame mmf){
mf=mmf;
p=new JPanel();
c=new JComboBox(colStr);
t=new JTextField(10);
b=new JButton(”查找“);
fAll=new JButton(”全部顯示“);
b.addActionListener(this);
fAll.addActionListener(this);
p.add(new JLabel(”選擇“));
p.add(c);
p.add(new JLabel(”查找內(nèi)容“));
p.add(t);
p.add(b);
p.add(fAll);
this.add(p);
this.setTitle(”查找“);
this.setSize(450,80);}
public void actionPerformed(ActionEvent e){
//查找
if(e.getSource()==b){
String selectStr=c.getSelectedItem().toString();
if(selectStr==”年齡“){
sql=”select * from student where “+selectStr+” “+t.getText().toString();
}
else {
sql=”select * from student where “+selectStr+” '“+t.getText().toString()+”'“;
= = 12
}
mf.freshTable(sql);
//全部顯示
}if(e.getSource()==fAll){
sql=”select * from student“;
mf.freshTable(sql);
} } }
3.5 添加數(shù)據(jù):
class addFrame extends JDialog implements ActionListener{ public static final int WIDTH = 400;public static final int HEIGHT = 400;
JLabel 學(xué)號(hào)1,姓名1,性別1,民族1,年齡1,年級(jí)1,班級(jí)1,專(zhuān)業(yè)1;JTextField 學(xué)號(hào),姓名,性別,民族,年齡,年級(jí),班級(jí),專(zhuān)業(yè);JButton b;JPanel p;
mainFrame mf;
public addFrame(mainFrame mmf){ setTitle(”修改學(xué)生信息“);setSize(WIDTH,HEIGHT);setLocation(120,180);
Container contentPane = getContentPane();//contentPane.setBackground(Color.BLACK);//設(shè)置窗口顏色
contentPane.setLayout(new FlowLayout());
學(xué)號(hào)1=new JLabel(”學(xué)號(hào)“);
姓名1=new JLabel(”姓名“);
性別1=new JLabel(”性別“);
民族1=new JLabel(”民族“);
年齡1=new JLabel(”年齡“);
年級(jí)1=new JLabel(”年級(jí)“);
班級(jí)1=new JLabel(”班級(jí)“);
專(zhuān)業(yè)1=new JLabel(”專(zhuān)業(yè)“);
學(xué)號(hào)=new JTextField(”201071030240“,5);
姓名=new JTextField(5);
性別=new JTextField(”女“,5);
民族=new JTextField(5);
年齡=new JTextField(5);
年級(jí)=new JTextField(5);
班級(jí)=new JTextField(10);
專(zhuān)業(yè)=new JTextField(10);
b=new JButton(”確定“);p=new JPanel();p.setLayout(new GridLayout(10,2,5,5));p.add(學(xué)號(hào)1);p.add(學(xué)號(hào));p.add(姓名1);p.add(姓名);p.add(性別1);p.add(性別);p.add(民族1);p.add(民族);p.add(年齡1);p.add(年齡);p.add(年級(jí)1);p.add(年級(jí));p.add(班級(jí)1);p.add(班級(jí));p.add(專(zhuān)業(yè)1);p.add(專(zhuān)業(yè));p.add(new Label(”“));p.add(new Label(”“));p.add(b);contentPane.add(p);//添加按鈕監(jiān)聽(tīng)器
b.addActionListener(this);mf=mmf;}
public void actionPerformed(ActionEvent e){
if(學(xué)號(hào).getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入學(xué)號(hào)“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(姓名.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入姓名“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(年齡.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入年齡“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else{
String sql=”select * from student where 學(xué)號(hào)='“ + 學(xué)號(hào).getText()+ ”'“;
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(sql);
try{
//System.out.println(rs.getRow());
if(rs.next()){
JOptionPane.showMessageDialog(null, ”此學(xué)號(hào)已經(jīng)存在“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else{
sql=”insert into student values('“ +學(xué)號(hào).getText()+”','“+ 姓名.getText()+”','“+ 性別.getText()+”','“+ 民族.getText()+”',“+ 年齡.getText()+”,'“+ 年級(jí).getText()+”','“+ 班級(jí).getText()+”','“+ 專(zhuān)業(yè).getText()+”')“;
if(conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, ”添加成功“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
mf.freshTable(”select * from student“);
學(xué)號(hào).setText(”“);
姓名.setText(”“);
性別.setText(”“);
民族.setText(”“);
年齡.setText(”“);
年級(jí).setText(”“);
班級(jí).setText(”“);
專(zhuān)業(yè).setText(”“);
}else{
JOptionPane.showMessageDialog(null, ”添加失敗“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}
}
}catch(Exception er){
System.out.println(er.toString());
}
}
}
}
3.6 修改數(shù)據(jù):
class editFrame extends JDialog implements ActionListener{ public static final int WIDTH = 400;public static final int HEIGHT = 400;
JLabel 學(xué)號(hào)1,姓名1,性別1,民族1,年齡1,年級(jí)1,班級(jí)1,專(zhuān)業(yè)1;JTextField 學(xué)號(hào),姓名,性別,民族,年齡,年級(jí),班級(jí),專(zhuān)業(yè);JButton b;JPanel p;
mainFrame mf;
public editFrame(mainFrame mmf){ setTitle(”修改學(xué)生信息“);setSize(WIDTH,HEIGHT);setLocation(120,180);
Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout());
學(xué)號(hào)1=new JLabel(”學(xué)號(hào)“);
姓名1=new JLabel(”姓名“);
性別1=new JLabel(”性別“);
民族1=new JLabel(”民族“);
年齡1=new JLabel(”年齡“);
年級(jí)1=new JLabel(”年級(jí)“);
班級(jí)1=new JLabel(”班級(jí)“);
專(zhuān)業(yè)1=new JLabel(”專(zhuān)業(yè)“);
學(xué)號(hào)=new JTextField(5);
姓名=new JTextField(5);
性別=new JTextField(5);
民族=new JTextField(5);
年齡=new JTextField(5);
年級(jí)=new JTextField(5);
班級(jí)=new JTextField(10);
專(zhuān)業(yè)=new JTextField(10);
學(xué)號(hào).setEnabled(false);
b=new JButton(”確定“);p=new JPanel();p.setLayout(new GridLayout(10,2,5,5));p.add(學(xué)號(hào)1);p.add(學(xué)號(hào));
p.add(姓名1);p.add(姓名);p.add(性別1);p.add(性別);p.add(民族1);p.add(民族);p.add(年齡1);p.add(年齡);p.add(年級(jí)1);p.add(年級(jí));p.add(班級(jí)1);p.add(班級(jí));p.add(專(zhuān)業(yè)1);p.add(專(zhuān)業(yè));p.add(new Label(”“));p.add(new Label(”“));p.add(b);contentPane.add(p);//添加按鈕監(jiān)聽(tīng)器
b.addActionListener(this);mf=mmf;}
public void actionPerformed(ActionEvent e){
if(學(xué)號(hào).getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入學(xué)號(hào)“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(姓名.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入姓名“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else if(年齡.getText().toString().equals(”“)){
JOptionPane.showMessageDialog(null, ”請(qǐng)輸入年齡“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
}else{
String sql=”update student set 姓名='“+姓名.getText()+”',性別='“+性別.getText()+”',年齡=“+年齡.getText()+”,年級(jí)='“+年級(jí).getText()+”',班級(jí)='“+班級(jí).getText()+”',專(zhuān)業(yè)='“+專(zhuān)業(yè).getText()+”',民族='“+民族.getText()+”' where 學(xué)號(hào)='“ + 學(xué)號(hào).getText()+ ”'“;
myConnection conn=new myConnection();
try{
//JOptionPane.showMessageDialog(null, sql, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
if(conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, ”修改成功“, ”溫馨提示“, JOptionPane.INFORMATION_MESSAGE);
mf.freshTable(”select * from student“);
this.dispose();
}else{
JOptionPane.showMessageDialog(null, ”修改失敗“, ”溫馨提示", JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception er){
System.out.println(er.toString());
}
} } }
運(yùn)行效果:
第四章 總結(jié)
通過(guò)本次課程設(shè)計(jì),不僅讓我更深入的了解JAVA這門(mén)學(xué)科,更使自己有了繼續(xù)探索的興趣。
對(duì)我來(lái)說(shuō),在之前的學(xué)習(xí)過(guò)程中沒(méi)有能夠很好的掌握J(rèn)AVA語(yǔ)言的學(xué)習(xí),在很多地方還有生疏和遺漏,并且在此次課程設(shè)計(jì)過(guò)程中也遇到困難不能自己獨(dú)立解決。但是,通過(guò)這次程序設(shè)計(jì),除了增加了自己的編程能力,提高了我對(duì)JAVA的應(yīng)用能力,同時(shí)我也深感“認(rèn)真嚴(yán)謹(jǐn)”這個(gè)詞的重要性,一點(diǎn)點(diǎn)小的馬虎,便會(huì)導(dǎo)致整個(gè)程序不能正常運(yùn)行。在今后的學(xué)習(xí)中,我將繼續(xù)保持嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)態(tài)度。與此同時(shí),在同學(xué)的幫助下,讓我體會(huì)到了相互學(xué)習(xí)的重要性,而更讓人難以忘懷的是在熱烈討論問(wèn)題時(shí),那激情橫溢的場(chǎng)面??傊?,此次課程設(shè)計(jì)讓我獲益匪淺。
第五章 總結(jié)
課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程.本次課程設(shè)計(jì)雖然很辛苦,實(shí)在是受益匪淺。本來(lái)這門(mén)課的知識(shí)學(xué)的就不夠扎實(shí),本次課程設(shè)計(jì),在設(shè)計(jì)過(guò)程中碰到了很多問(wèn)題,剛開(kāi)始要設(shè)計(jì)的時(shí)候,還真不知道從哪里下手但最終在圖書(shū)、同學(xué)和老師的幫助下都得到了解決,讓我學(xué)會(huì)了好多書(shū)本上沒(méi)有的東西,通過(guò)本次課程設(shè)計(jì)我也能將課本上的知識(shí)融會(huì)貫通,起到了很好的輔助學(xué)習(xí)的效果,但是我發(fā)現(xiàn)我學(xué)到的知識(shí)比整整一個(gè)學(xué)期學(xué)到的都多。理
論和實(shí)踐的相結(jié)合是學(xué)習(xí)最有效的方法。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過(guò)這次課程設(shè)計(jì)之后,一定把以前所學(xué)過(guò)的知識(shí)重新溫故。
通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。
第六章 參考文獻(xiàn)