




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分類(lèi)號(hào) 編 號(hào) 華北水利水電大學(xué) North China Institute of Water Conservancy and Hydroelectric Power 課 程 設(shè) 計(jì)題目 田徑運(yùn)動(dòng)會(huì)管理信息系統(tǒng) 學(xué) 院 信息工程學(xué)院 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 小組成員1 嚴(yán)晶(201114211) 小組成員2 張偉?。?01114213) 小組成員3 張浩(201114214) 小組成員4 張富源(201114217)指 導(dǎo) 教 師 王合闖 2014年 12 月 6 日華北水利水電大學(xué) 軟件工程 課程設(shè)計(jì)報(bào)告20132014學(xué)年 第 一 學(xué)期 2010級(jí) 計(jì)算機(jī)科學(xué)與技術(shù) 專(zhuān)業(yè)小組成員1:嚴(yán)晶
2、(201114211) 分工: 需求分析和數(shù)據(jù)庫(kù)創(chuàng)建 小組成員2:張偉健(201114213) 分工: 系統(tǒng)人員管理模塊 小組成員3:張浩(201114214) 分工: 運(yùn)動(dòng)員成績(jī)管理模 小組成員4:張富源(201114217) 分工: 運(yùn)動(dòng)員管理模塊 一系統(tǒng)描述 本系統(tǒng)采用軟件工程原理,使用面向?qū)ο蟮腏ava編程環(huán)境編寫(xiě)校級(jí)運(yùn)動(dòng)會(huì)管理系統(tǒng),利用MYSQL數(shù)據(jù)庫(kù)技術(shù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行了全面的開(kāi)發(fā)。系統(tǒng)主要包括前臺(tái)應(yīng)用程序的開(kāi)發(fā)以及后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)兩個(gè)方面,實(shí)現(xiàn)了運(yùn)動(dòng)員成績(jī)數(shù)據(jù)庫(kù)的創(chuàng)建及運(yùn)動(dòng)員成績(jī)的輸入、統(tǒng)計(jì)、瀏覽和維護(hù),使得系統(tǒng)具有界面友好,功能強(qiáng)大,易于維護(hù)的特點(diǎn)。本校級(jí)運(yùn)動(dòng)會(huì)管理系統(tǒng)在功
3、能實(shí)現(xiàn)方面主要分為以下幾點(diǎn):1) 運(yùn)動(dòng)員個(gè)人信息管理模塊。運(yùn)動(dòng)員管理與普通的用戶(hù)管理基本類(lèi)似,包括用戶(hù)的添加、修改、編輯和刪除功能,參賽項(xiàng)目的維護(hù)。例如有的運(yùn)動(dòng)員臨時(shí)因傷不能參寒,有的又調(diào)整為可以參加某個(gè)項(xiàng)目(雖然嚴(yán)格說(shuō)來(lái),不允許運(yùn)動(dòng)員臨時(shí)更改參賽項(xiàng)目,但需要在系統(tǒng)中留有余地)。2) 運(yùn)動(dòng)員成績(jī)管理模塊。操作員可以對(duì)成績(jī)進(jìn)行錄入,一旦提交則只能查看不能修改管理員可以查看成績(jī)并調(diào)整成績(jī),因?yàn)榍皥?chǎng)工作人員可能犯錯(cuò),需要管理員進(jìn)行更改,但日志中要對(duì)此更改進(jìn)行記錄。運(yùn)動(dòng)員可以通過(guò)終端查看運(yùn)動(dòng)成績(jī)。3) 權(quán)限管理模塊。管理員可以對(duì)操作人員進(jìn)行信息維護(hù),如增加前場(chǎng)成績(jī)錄入人員,或者某位成績(jī)錄入人員調(diào)離崗位
4、則取消其權(quán)限。對(duì)于運(yùn)動(dòng)員可以匿名查詢(xún)某個(gè)項(xiàng)目的成績(jī)。綜合以上情況,設(shè)計(jì)系統(tǒng)體系結(jié)構(gòu)如圖1所示。 應(yīng)用層 模塊 代理層 數(shù)據(jù)庫(kù)接口層 圖1 應(yīng)用層提供諸如GUI的顯示、事件的處理等;代理層是分離上層和具體數(shù)據(jù)庫(kù)訪問(wèn)層的,也可以稱(chēng)為業(yè)條層,這樣的目的是當(dāng)數(shù)據(jù)庫(kù)發(fā)生變更時(shí),可以將程序的改動(dòng)縮減到最小。數(shù)據(jù)庫(kù)接口層是與具體的數(shù)據(jù)庫(kù)進(jìn)行交互,對(duì)數(shù)據(jù)進(jìn)行提取、存入操作。模塊包是與數(shù)據(jù)庫(kù)實(shí)體相對(duì)應(yīng)的類(lèi)定義,也可以說(shuō)與數(shù)據(jù)庫(kù)中的每條記錄相對(duì)應(yīng)。二詳細(xì)設(shè)計(jì) 1、模塊功能 1.1、系統(tǒng)人員管理模塊 該模塊實(shí)現(xiàn)系統(tǒng)人員的添加、修改、查詢(xún)和刪除,先在數(shù)據(jù)庫(kù)中添加管理員帳戶(hù)。管理員在用戶(hù)管理方面擁有一切權(quán)限,而普通用戶(hù)
5、只有修改個(gè)人密碼、查詢(xún)個(gè)人信息、運(yùn)動(dòng)會(huì)比賽信息、比賽成績(jī)及獲獎(jiǎng)情況的權(quán)限。如圖2所示。 系統(tǒng)人員管理模塊系統(tǒng)操作員信息的輸入系統(tǒng)操作員信息的修改系統(tǒng)操作員信息的刪除系統(tǒng)操作員信息的查詢(xún) 圖2 1.2、運(yùn)動(dòng)員管理模塊 該模塊由管理員對(duì)運(yùn)動(dòng)員個(gè)人信息的錄入、修改及刪除功能。普通用戶(hù)可以實(shí)現(xiàn)對(duì)運(yùn)動(dòng)員個(gè)人信息的查詢(xún)功能。其功能層次如圖3所示。 運(yùn)動(dòng)員管理模塊運(yùn)動(dòng)員信息的輸入運(yùn)動(dòng)員信息的修改運(yùn)動(dòng)員信息的刪除運(yùn)動(dòng)員信息的查詢(xún) 圖3 1.3、運(yùn)動(dòng)員成績(jī)管理模塊 該模塊實(shí)現(xiàn)管理員錄入運(yùn)動(dòng)員的成績(jī)、查詢(xún)成績(jī)、修改成績(jī)刪除查詢(xún)到的成績(jī)信息以及普通用戶(hù)查詢(xún)成績(jī)。其功能層次圖如圖4所示。 運(yùn)動(dòng)員成績(jī)管理模塊運(yùn)動(dòng)員成績(jī)
6、的輸入運(yùn)動(dòng)員成績(jī)的修改運(yùn)動(dòng)員成績(jī)的刪除運(yùn)動(dòng)員成績(jī)的查詢(xún) 圖42、 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) 表1 運(yùn)動(dòng)會(huì)項(xiàng)目表(SportItems)列名數(shù)據(jù)類(lèi)型可否為空說(shuō)明ItemIdVARCHAR(20)NOT NULL體育項(xiàng)目編號(hào)ItemNameVARCHAR(50)NOT NULL項(xiàng)目名稱(chēng)ItemTypeVARCHAR(50)所屬的運(yùn)動(dòng)類(lèi)別voidVARCHAR(1)是否有效 表2 運(yùn)動(dòng)員參賽項(xiàng)目表(ItemAttend)列名數(shù)據(jù)類(lèi)型可否為空說(shuō)明SportorIdVARCHAR(20)NOT NULL運(yùn)動(dòng)員編號(hào)ItemIdVARCHAR(20)NOT NULL體育項(xiàng)目編號(hào)ScoreVARCHAR(50)成績(jī)vo
7、idVARCHAR(1)本條記錄是否有效表3 運(yùn)動(dòng)員個(gè)人信息表(Sportor)列名數(shù)據(jù)類(lèi)型可否為空說(shuō)明SportorIdVARCHAR(20)NOT NULL運(yùn)動(dòng)員編號(hào)NameVARCHAR(50)NOT NULL運(yùn)動(dòng)員名稱(chēng)GenderVARCHAR(1)性別。M男,F(xiàn)女WeightFLOAT體重,單位KgHeigthFLOAT身高,單位cmAgeINT年齡GradeINT等級(jí)voidVARCHAR(1)是否參賽標(biāo)志。Y為無(wú)效,已經(jīng)被刪除。N為有效,參加本次比賽表4 系統(tǒng)用戶(hù)信息(SysUser)列名數(shù)據(jù)類(lèi)型可否為空說(shuō)明SysUserIdVARCHAR(20)NOT NULL系統(tǒng)用戶(hù)的編號(hào)N
8、ameVARCHAR(20)NOT NULL姓名PasswordVARCHAR(50)NOT NULL密碼GenderVARCHAR(1)性別RoleIdVARCHAR(20)所屬于的角色voidVARCHAR(1)用戶(hù)是否有效表5 系統(tǒng)用戶(hù)角色(Roles)列名數(shù)據(jù)類(lèi)型可否為空說(shuō)明RoleIdVARCHAR(20)NOT NULL角色編號(hào)RoleNameVARCHAR(50)角色名稱(chēng)voidVARCHAR(1)是否生效 3、界面及代碼設(shè)計(jì) 3.1、登錄子系統(tǒng)開(kāi)發(fā) 由于每個(gè)系統(tǒng)中都涉及登錄子系統(tǒng),因此在這里并不進(jìn)行過(guò)多介紹,只提供一個(gè)登錄子系統(tǒng)的框架,登錄成功后程序的流程應(yīng)根據(jù)登錄用戶(hù)的身份來(lái)
9、區(qū)別對(duì)待。登錄系統(tǒng)的界面如圖5所示。 圖5當(dāng)用戶(hù)輸入用戶(hù)名、密碼和登錄身份后,會(huì)通過(guò)RoleAccessProxy類(lèi)進(jìn)行底層訪問(wèn),查看用戶(hù)登錄信息是否正確! 3.2、系統(tǒng)用戶(hù)管理模塊 系統(tǒng)用戶(hù)管理模塊是實(shí)現(xiàn)對(duì)本系統(tǒng)中的操作人員管理人員的權(quán)限分配、個(gè)人信息修改、密碼設(shè)定、刪除等功能,其運(yùn)行界面如圖6所示。 圖6系統(tǒng)用戶(hù)管理的界面相對(duì)復(fù)雜一些,其中最左邊是一個(gè)列表框,用來(lái)顯示列表式的數(shù)據(jù),在這里就是本系統(tǒng)中的用戶(hù)。右側(cè)面板主要是當(dāng)選中左側(cè)列表中的某個(gè)用戶(hù)時(shí)顯示該用戶(hù)的對(duì)應(yīng)信息,可以對(duì)用戶(hù)數(shù)據(jù)進(jìn)行編輯、刪除等操作。單擊“更新用戶(hù)”按妞,則觸發(fā)相應(yīng)事件,調(diào)用SysUserProxy類(lèi)實(shí)現(xiàn)更新操作。與登
10、錄子系統(tǒng)中的RoleAccessProxy類(lèi)相類(lèi)似,SysUserProxy也是對(duì)數(shù)據(jù)訪問(wèn)進(jìn)行了封包,使上層應(yīng)用無(wú)須與底層直接接。這樣增強(qiáng)了系統(tǒng)的可移植性和可擴(kuò)展性。關(guān)于SysUserProxy類(lèi)的代碼在此處省略。3.3、運(yùn)動(dòng)員信息管理模塊 運(yùn)動(dòng)員信息管理模塊主要實(shí)現(xiàn)對(duì)人員個(gè)人信息的維護(hù),其界面布局與系統(tǒng)用戶(hù)管理模塊類(lèi)似,如圖7所示。 圖7 3.4、運(yùn)動(dòng)員成績(jī)管理模塊 這一功能模塊在結(jié)構(gòu)上采用三級(jí)連動(dòng)方式,即一級(jí)菜單的動(dòng)作觸發(fā)二級(jí)菜單的響應(yīng),二級(jí)菜單的動(dòng)作影響三級(jí)菜單的顯示。基于這個(gè)依據(jù),設(shè)計(jì)界面如圖8所示。 圖8仔細(xì)閱讀前面的代碼,其實(shí)邏輯并不復(fù)雜,主要是當(dāng)鼠標(biāo)選中左邊的一項(xiàng)時(shí),會(huì)觸發(fā)相應(yīng)的
11、事件,從數(shù)據(jù)庫(kù)中提取相應(yīng)的數(shù)據(jù)填充中間的列表框,當(dāng)中間的列表框有數(shù)據(jù)被選中時(shí),則將相關(guān)的數(shù)據(jù)顯示在最右邊的面板上。另外,在這個(gè)系統(tǒng)的各個(gè)層次中,需要使用到一些輸助類(lèi),這些類(lèi)與具體的對(duì)象相關(guān)聯(lián)。例如表示運(yùn)動(dòng)員實(shí)體的類(lèi)SportsMan,其與數(shù)據(jù)庫(kù)的記錄一一對(duì)應(yīng)。這樣便于在類(lèi)與數(shù)據(jù)之間實(shí)現(xiàn)自由轉(zhuǎn)換。有關(guān)于這些輔助類(lèi)的代碼就不一一列出了!三心得體會(huì)在我們整個(gè)軟件工程過(guò)程中,我體會(huì)到了許多,也學(xué)到了許多。 需求調(diào)研和分析對(duì)于軟件開(kāi)發(fā)過(guò)程至關(guān)重要。我們?cè)陂_(kāi)發(fā)時(shí)如果不進(jìn)行調(diào)研和分析,那么對(duì)于后來(lái)的項(xiàng)目進(jìn)展將產(chǎn)生致命的后果。我們?cè)陧?xiàng)目的開(kāi)發(fā)中便遇到了這樣的問(wèn)題。我們開(kāi)始自己隨意的計(jì)劃整
12、個(gè)系統(tǒng)的設(shè)計(jì),然后報(bào)給老師,老師作為一個(gè)客戶(hù)并不是全部認(rèn)同,隨后我們也必須按著客戶(hù)的要求更改我們的設(shè)計(jì)報(bào)告。我也明白了,再做一個(gè)系統(tǒng)時(shí),必須隨時(shí)和客戶(hù)保持溝通,隨時(shí)了解他們需要什么,他們想要什么功能。如果我們不去和客戶(hù)溝通,不去調(diào)研客戶(hù)的需求,做出來(lái)的系統(tǒng)即使在我們看來(lái)是一個(gè)很好,很完美的產(chǎn)品,但是如果客戶(hù)不認(rèn)同,那么我們所做的一切都是徒勞,還要返工去修改,費(fèi)時(shí)費(fèi)力。所以在做任何一個(gè)項(xiàng)目時(shí),前期的需求調(diào)研和需求分析都是必須的,這是在做一個(gè)項(xiàng)目的基本,是關(guān)系成敗的重要一環(huán)。 對(duì)于一個(gè)項(xiàng)目,它的需求設(shè)計(jì)也非常重要。在我們的開(kāi)發(fā)的過(guò)程中,遇到了一些問(wèn)題,出現(xiàn)的這些問(wèn)題很多都是非常棘手的,我
13、們?yōu)榱私鉀Q這些棘手的問(wèn)題浪費(fèi)了大量的時(shí)間,我們不得不在工程代碼上改了又改,在數(shù)據(jù)庫(kù)里增表、刪表、加數(shù)據(jù)、減數(shù)據(jù),當(dāng)然,在文檔里也要做出相應(yīng)的修改以適應(yīng)新的功能。還好,我們能及時(shí)地發(fā)現(xiàn)問(wèn)題,通過(guò)相互溝通討論,問(wèn)題也得到了解決。通過(guò)總結(jié),我們也意識(shí)到,我們大家在做需求分析和進(jìn)行需求了解時(shí)僅僅考慮了一些基本的功能,而至于管理員和客戶(hù)之間的聯(lián)系,以及具體的一些流程我們都沒(méi)有深究,而導(dǎo)致我們到后期花費(fèi)了大量的時(shí)間用于修復(fù)之前沒(méi)有考慮周全而帶來(lái)的問(wèn)題。如果我們的需求設(shè)計(jì)能夠比較清晰和完善,那么我們?cè)陂_(kāi)發(fā)過(guò)程中便會(huì)很明白的知道我們應(yīng)該實(shí)現(xiàn)什么樣的功能,在數(shù)據(jù)庫(kù)里應(yīng)該怎樣建表,以什么方式插入數(shù)據(jù),從而可以避免
14、反復(fù)修改工程的問(wèn)題,也能避免出現(xiàn)可能毀壞整個(gè)工程的問(wèn)題。整個(gè)工程的需求設(shè)計(jì)對(duì)于一個(gè)項(xiàng)目的順利進(jìn)展至關(guān)重要。 對(duì)于文檔在軟件工程中的作用,我在這次項(xiàng)目開(kāi)發(fā)過(guò)程中有了更加深刻的理解。文檔在軟件開(kāi)發(fā)過(guò)程中是很有用的,文檔是一項(xiàng)必不可少的東西,但文檔也不能太多,太過(guò)繁瑣,如果是那樣就不太好了。首先我們要明確開(kāi)發(fā)過(guò)程中為什么要寫(xiě)這些文檔,文檔的最根本的作用是為了更好的溝通。一個(gè)項(xiàng)目或產(chǎn)品可能需要延續(xù)很長(zhǎng)的時(shí)間,開(kāi)發(fā)過(guò)程中可能需要很多的環(huán)節(jié),可能會(huì)遇到很多的問(wèn)題和很多的解決的方法,這時(shí),我們需要文檔的幫助,我們需要有一個(gè)東西來(lái)記錄,我們需要有一個(gè)共同的聲音。文檔只不過(guò)是一個(gè)準(zhǔn)繩,將開(kāi)發(fā)中的各個(gè)樹(shù)
15、枝樹(shù)葉扶正。如果,這個(gè)準(zhǔn)繩太多太緊,大樹(shù)可能會(huì)發(fā)育的很高很直,但是就是有些畸形,如果這個(gè)準(zhǔn)繩太少太松,大樹(shù)可能就會(huì)變成灌木叢。文檔的多少、繁簡(jiǎn)是有度的,絕對(duì)不能說(shuō)越多越好。我覺(jué)得,文檔需要說(shuō)明解決問(wèn)題的方法而不是解決問(wèn)題的理論,因?yàn)榻鉀Q問(wèn)題的理論是在文檔形成中做到的。文檔完整即可,每一份文檔說(shuō)明一個(gè)問(wèn)題,無(wú)需將多個(gè)文檔的內(nèi)容放在一個(gè)文檔的里面。除了重要階段形成文檔,其它部分都只是討論或者說(shuō)是想法。不要讓文檔成為累贅,如果真是這樣,我認(rèn)為就是該考慮寫(xiě)這些文檔的必要性的時(shí)候了。 我們?cè)谖臋n的時(shí)候,一定要明白為什么要寫(xiě)這些。 在整個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程中,我們也同時(shí)遇到了許多程序接口問(wèn)題
16、,頁(yè)面和功能相結(jié)合的問(wèn)題,數(shù)據(jù)庫(kù)建表的問(wèn)題,這些問(wèn)題都是源于我們項(xiàng)目小組成員之間的溝通不足。我深刻認(rèn)識(shí)到,在項(xiàng)目開(kāi)發(fā)時(shí),項(xiàng)目小組中各個(gè)成員之間的相互溝通是非常重要的。如果我們要在功能方面作出修改,那么程序人員和頁(yè)面人員及數(shù)據(jù)庫(kù)人員就必須相互溝通,共同對(duì)整個(gè)程序作出相應(yīng)的修改,這樣才能避免最終整合時(shí)出現(xiàn)問(wèn)題。 在這幾周里,我還對(duì)軟件工程有了新的理解。在我以前的理解當(dāng)中,軟件工程,無(wú)非就是一個(gè)人或者幾個(gè)人或一個(gè)團(tuán)隊(duì)集中在一起進(jìn)行編寫(xiě)代碼的工作,以實(shí)現(xiàn)開(kāi)發(fā)出所用的軟件。但現(xiàn)在我明白了,軟件工程的作用,就是告訴人們?cè)鯓尤ラ_(kāi)發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開(kāi)發(fā)和管理有關(guān)的人員和過(guò)程上
17、。所以,軟件工程就不僅僅是單一的編程過(guò)程了。它包括了系統(tǒng)分析->建模->概要設(shè)計(jì)->詳細(xì)設(shè)計(jì)->編碼->測(cè)試->維護(hù)。編碼可以理解為編程,這個(gè)只占總時(shí)間的20左右。編程只是其中的一小部分。 在這次項(xiàng)目里我完成了許多工作,全部的用戶(hù)頁(yè)面及部分管理員頁(yè)面的制作,在后期項(xiàng)目整合過(guò)程中修改了功能和界面結(jié)合時(shí)出現(xiàn)的bug,還有數(shù)據(jù)庫(kù)插入數(shù)據(jù)及解決數(shù)據(jù)庫(kù)集中整合時(shí)出現(xiàn)的問(wèn)題。這些工作我都順利完成了,雖然并不能算是非常的出色,但也算是盡力了?,F(xiàn)在看到自己辛勞的成果,我感到很欣慰。 附件:public static void main(String ar
18、gs) / TODO Auto-generated method stub/*根據(jù)需要,打開(kāi)下面運(yùn)行開(kāi)關(guān)*/*主登錄窗口界面StartApp mainForm = new StartApp();mainForm.InitUI();*/運(yùn)動(dòng)員管理模塊/new SportorManagement();/運(yùn)動(dòng)員成績(jī)管理模塊new SportorScoreManagement();/系統(tǒng)人員管理模塊 new SysUserManagement();/public class LoginEvtHandle implements ActionListenerpublic void actionPerfor
19、med(ActionEvent e)tryif( (JButton)e.getSource() = jbtLogin )/根據(jù)用戶(hù)登錄身份,轉(zhuǎn)向?qū)?yīng)的界面String UserName = jtxtUser.getText().trim();String Password = jtxtPass.getText().toString();EnumRole role = UserRole.getUserRole( jcmbIdentify.getSelectedItem().toString().trim() );System.out.println("UserName:" +
20、 UserName + " Password:" +Password + " " + "Role :" + role);if( role = EnumRole.NOROLE )JOptionPane.showMessageDialog(null,"用戶(hù)角色未設(shè)定,請(qǐng)單擊匿名登錄訪問(wèn)系統(tǒng)!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE);return;else if( role = EnumRole.NOTSUPPORT )JOptionPane.showMessageDialo
21、g(null,"用戶(hù)角色不支持,請(qǐng)聯(lián)系管理員!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE);return;else if( role = EnumRole.SYSADMINISTRATOR )/連接數(shù)據(jù)庫(kù),驗(yàn)證是否管理人員RoleAccessProxy roleProxy = new RoleAccessProxy();if( roleProxy.ValidateUserExist(UserName,Password,RoleIdMapRoleName.SYSADMIN) = true )JOptionPane.showMessag
22、eDialog(null,"登錄成功!","正確",JOptionPane.INFORMATION_MESSAGE);elseJOptionPane.showMessageDialog(null,"用戶(hù)角色不支持,請(qǐng)聯(lián)系管理員!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE);System.exit( - 1 );else if( role = EnumRole.SYSOPERATOR )/連接數(shù)據(jù)庫(kù),驗(yàn)證是否系統(tǒng)操作人員并轉(zhuǎn)到相應(yīng)界面RoleAccessProxy roleProxy = new
23、 RoleAccessProxy();if( roleProxy.ValidateUserExist(UserName,Password,RoleIdMapRoleName.SYSOPERATOR) = true )JOptionPane.showMessageDialog(null,"登錄成功!","正確",JOptionPane.INFORMATION_MESSAGE);elseJOptionPane.showMessageDialog(null,"用戶(hù)角色不支持,請(qǐng)聯(lián)系管理員!","錯(cuò)誤",JOptionPa
24、ne.ERROR_MESSAGE);return;elseJOptionPane.showMessageDialog(null,"發(fā)生未知錯(cuò)誤!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE );return;else if( (JButton)e.getSource() = jbtAnonymous )System.out.println("Anonymous");elseSystem.out.println("Unsupported!");catch(Exception ex)System.o
25、ut.println("Unknow Exception: "+ ex.getMessage() );else if(e.getSource() = (JButton)btnDelUser)String userId = txtUserId.getText();String finalSql = "DELETEFROM sportor WHERE SPORTORID='"+userId+"'"SportorProxy UserProxy = new SportorProxy(); UserProxy.UpdateUse
26、rById(finalSql);lstUserList.removeAll();InitCtlData();JOptionPane.showMessageDialog(null,"刪除成功!","成功",JOptionPane.INFORMATION_MESSAGE);return;UserProxy .UpdateUserById(finalSql);JOptionPane.showMessageDialog(null,"更新成功!","成功",JOptionPane.INFORMATION_MESSAGE);r
27、eturn;class UserOperAction implements ActionListenerpublic void actionPerformed(ActionEvent e)if( e.getSource() = (JButton)btnAddUser )/增加系統(tǒng)用戶(hù)/*課后作業(yè)*/JOptionPane.showMessageDialog(null,"新增成功!","成功",JOptionPane.INFORMATION_MESSAGE);return;else if( e.getSource() = (JButton)btnUpdat
28、eUser )/更新現(xiàn)有用戶(hù)String userId = txtUserId.getText();String userName = txtUserName.getText();String Gender;if( cmbGender.getSelectedItem().toString().equals("男")Gender = "M"elseGender = "F"float weight = 0.0f;if( txtUserWeight.getText() != null && txtUserWeight.get
29、Text() != "")weight = Float.parseFloat(txtUserWeight.getText();float height = 0.0f;if( txtUserHeight.getText() != null && txtUserHeight.getText() != "")height = Float.parseFloat( txtUserHeight.getText() );int age = 0;if( txtUserAge.getText() != null && txtUserAge.
30、getText() != "")age = Integer.parseInt( txtUserAge.getText() );int grade = 0;if( txtUserGrade.getText() != null && txtUserGrade.getText() != "")grade = Integer.parseInt( txtUserGrade.getText() );String Void;if( chkSysUserVoid.isSelected() = true)Void = "Y"elseVo
31、id = "N"String finalSql = "" finalSql = "UPDATE sportor "+" SET NAME='" + userName +"',GENDER='"+Gender + "', "+" WEIGHT=" + weight + ", HEIGHT =" + height + ", " + " AGE = " + age +&q
32、uot;, " + " GRADE = " + grade + ",VOID='" + Void + "' "+"WHERE SPORTORID='"+ userId + "'" SportorProxy UserProxy = new SportorProxy(); SysUserProxy sysUserProxy = new SysUserProxy(); vecSysUsers = sysUserProxy.getAllSysUsers();tr
33、ysysUserProxy.closeDbConnection();catch(SQLException ex)for( int i = 0; i < vecSysUsers.size(); i + )lstUserList.add(SysUser)vecSysUsers.elementAt(i).getName() + " "+ (SysUser)vecSysUsers.elementAt(i).getSysUserId();/*為控件注冊(cè)事件*/this.lstUserList.addItemListener( new ListItemChange() );Use
34、rOperAction btnEvtHandle = new UserOperAction();this.btnDelSysUser.addActionListener(btnEvtHandle);this.btnUpdateUser.addActionListener(btnEvtHandle);class ListItemChange implements ItemListenerpublic void itemStateChanged(ItemEvent e)java.awt.List lstCtrl = (java.awt.List)e.getSource();String str =
35、 lstCtrl.getSelectedItem();if( str = null | str = "")return;String result = str.split("s"); /分解成TokenString sysUserId = result2;SysUserProxy sysUserProxy = new SysUserProxy();SysUser instanceSysUser = sysUserProxy.getUserById(sysUserId);txtSysUserId.setText( instanceSysUser.getSy
36、sUserId() );txtSysUserName.setText( instanceSysUser.getName() );if( instanceSysUser.getGender().equals( "M") )cmbGender.setSelectedIndex(0);else if( instanceSysUser.getGender().equals("F")cmbGender.setSelectedIndex(1);txtSysUserPassword.setText( instanceSysUser.getPassword() );tx
37、tRetrySysUserPassword.setText( instanceSysUser.getPassword() );if( instanceSysUser.getRoleId().equals(RoleIdMapRoleName.SYSADMIN )cmbSysUserRole.setSelectedIndex(0);else if(instanceSysUser.getRoleId().equals(RoleIdMapRoleName.SYSOPERATOR) )cmbSysUserRole.setSelectedIndex(1);elsecmbSysUserRole.setSel
38、ectedIndex(2);if( instanceSysUser.getVoid().equals("Y")chkSysUserVoid.setSelected(true);elsechkSysUserVoid.setSelected(false);trysysUserProxy.closeDbConnection();catch(SQLException ex)class UserOperAction implements ActionListenerpublic void actionPerformed(ActionEvent e)if( e.getSource()
39、= (JButton)btnDelSysUser )/刪除系統(tǒng)用戶(hù)String userId = txtSysUserId.getText();String finalSql = "DELETEFROM SysUser WHERE SYSUSERID='"+userId+"'"SysUserProxy sysUserProxy = new SysUserProxy(); sysUserProxy.UpdateUserById(finalSql);JOptionPane.showMessageDialog(null,"刪除成功!&
40、quot;,"成功",JOptionPane.INFORMATION_MESSAGE);else if( e.getSource() = (JButton)btnUpdateUser )/更新現(xiàn)有用戶(hù)String userId = txtSysUserId.getText();String userName = txtSysUserName.getText();String Gender;if( cmbGender.getSelectedItem().toString().equals("男")Gender = "M"elseGend
41、er = "F"String Pass;if( txtSysUserPassword.getText().equals(txtRetrySysUserPassword.getText() )Pass = txtSysUserPassword.getText();elseJOptionPane.showMessageDialog(null,"密碼不匹配","錯(cuò)誤",JOptionPane.ERROR_MESSAGE);return;String userRole;if( cmbSysUserRole.getSelectedItem().
42、toString().equals("系統(tǒng)管理員")userRole = RoleIdMapRoleName.SYSADMIN;else if(cmbSysUserRole.getSelectedItem().toString().equals("系統(tǒng)操作員") )userRole = RoleIdMapRoleName.SYSOPERATOR;elseuserRole = ""String Void;if( chkSysUserVoid.isSelected() = true)Void = "Y"elseVoid
43、 = "N"String finalSql = "UPDATE SYSUSER SET NAME='" + userName + "', "+"PASSWORD = '" + Pass + "', GENDER='" + Gender + "', "+"ROLEID='" + userRole + "', VOID='" + Void + "' W
44、HERE " +"SYSUSERID='" + userId + "'"SysUserProxy sysUserProxy = new SysUserProxy(); sysUserProxy.UpdateUserById(finalSql);JOptionPane.showMessageDialog(null,"更新成功!","成功",JOptionPane.INFORMATION_MESSAGE);RoleAcessProxy roleProxy=new RoleAccessProxy
45、();If(roleProxy.ValidateUserExist(UserName,Password,RoleIdMapRoleName.SYSADMIN)=true) JOptionPane.showMessageDialog(null,"登錄成功!","正確",JOptionPane.INFORMATION_MESSAGE);Else JOptionPane.showMessageDialog(null,"用戶(hù)角色不支持,請(qǐng)聯(lián)系管理員!","錯(cuò)誤",JOptionPane.ERROR_MESSAGE); Sy
46、stem.exi(-1);class ListItemChange implements ItemListenerpublic void itemStateChanged(ItemEvent e)if( e.getSource() = (java.awt.List)lstSportItems )/初始化界面txtScore1.setText( "" );txtScore2.setText( "" );txtScore3.setText( "" );txtScore4.setText( "" );txtScore5.
47、setText( "" );txtScore6.setText( "" );chkValid.setSelected(false);java.awt.List lstCtrl = (java.awt.List)e.getSource();String str = lstCtrl.getSelectedItem();if( str = null | str = "")return;String result = str.split("s"); /分解成TokenString itemId = result2;Stri
48、ng sqlQuery = "SELECT , a.sportorid " + "FROM sportor a,itemAttend b " + "WHERE b.itemid = '"+ itemId + "' and "+ "b.sportorid = a.sportorid "SportorProxy sportProxy = new SportorProxy();Vector vecSportor = sportProxy.getSportUsersBySql
49、(sqlQuery);lstSportors.removeAll();for( int i = 0; i < vecSportor.size(); i + )lstSportors.add(SportsMan)vecSportor.elementAt(i).getName() + ""+ (SportsMan)vecSportor.elementAt(i).getSportorId();trysportProxy.closeDbConnection();catch(SQLException sqlEx)else if( e.getSource() = (java.awt.List)lstSpo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 亞克力標(biāo)牌施工方案
- 建設(shè)工程結(jié)算咨詢(xún)合同
- 天然橡膠中脂肪酸含量與性能的關(guān)系
- 跨境電商綜合試驗(yàn)區(qū)的設(shè)立對(duì)區(qū)域企業(yè)績(jī)效的影響
- 消浪平臺(tái)寬度對(duì)復(fù)式海堤堤后越浪量空間分布的影響研究
- 口腔正畸橡皮圈及其相關(guān)改良牽引輔助技術(shù)在內(nèi)鏡下黏膜剝離術(shù)的應(yīng)用研究
- 美術(shù)我設(shè)計(jì)的新機(jī)器
- 方鋼管橡膠改性聚丙烯纖維混凝土柱抗震性能試驗(yàn)研究
- 月桂酰精氨酸乙酯靜電紡絲膜的構(gòu)建及在雞肉保鮮中的應(yīng)用研究
- 基于強(qiáng)電解質(zhì)的鎂鋰分離膜構(gòu)建與性能研究
- 第18課《井岡翠竹》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 公立醫(yī)院成本核算指導(dǎo)手冊(cè)
- MOOC 中醫(yī)與辨證-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 年產(chǎn)10噸功能益生菌凍干粉的工廠設(shè)計(jì)改
- 機(jī)油濾清器工作原理剖析
- 執(zhí)行異議及復(fù)議課件
- 安全生產(chǎn)管理組織機(jī)構(gòu)設(shè)置圖
- 智能健身鏡行業(yè)分析及案例
- 中聯(lián)HIS系統(tǒng)掛號(hào)收費(fèi) 操 作 說(shuō) 明
- HIT(肝素誘導(dǎo)的血小板減少癥)課件
- Mayo肘關(guān)節(jié)功能評(píng)分
評(píng)論
0/150
提交評(píng)論