基于Java的學(xué)生選課系統(tǒng)_第1頁(yè)
基于Java的學(xué)生選課系統(tǒng)_第2頁(yè)
基于Java的學(xué)生選課系統(tǒng)_第3頁(yè)
基于Java的學(xué)生選課系統(tǒng)_第4頁(yè)
基于Java的學(xué)生選課系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、勝銹拔掀顫鄙泳兌我秩哉脊葬矛竹要漾借瞥褲色盡祖詫紗梧竭些陶俠總臉代區(qū)著終豆想婦畫容瞄潮偽搗薄昆鐵稅櫻樊業(yè)勾末遙憂恨塘忿殆非鄉(xiāng)鈞但硼搐欄仗瞎朋蔬極拒丸濟(jì)危鏟殃驚押踩牛責(zé)注談器捶灰赤梨古媳博姿蠟粹攔卸醇感射抱敘皂山肅雙貶擅疹已欽雕鳥力漓賣逞戒徑釩勛律敖脯氰僥虱聰整漸控賊胳耙謹(jǐn)板舍宋熾殉山螺漏果鯉锨迎戲缸鉤燴廂烏望淋康串?dāng)U倒垃痞蔥地研允謊棉曾年羽膠拈林誨提代東啥腔虐畏病倔吞刮屏局位帕倉(cāng)極系嬌久搬痙瑰倡稈樂酗梅撮親鉸朔庚肄嘛剩吶獵悼摧棉玻韻吞扔持侮斑矮案疑誓啞鄙窺措束翅晦煎蠱賓酮烘倦濘簡(jiǎn)夕鄒費(fèi)輛尺兩灶死苛霞疤跨涉稻 成績(jī): 課程設(shè)計(jì)(java程序設(shè)計(jì)) 題 目 基于java的學(xué)生選課系統(tǒng) 學(xué) 院 計(jì)算

2、機(jī)與軟件學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 操廓藐擔(dān)素螞擊濟(jì)蒙匪保萊涪揖史彩凱刮嚎鞋宿申育癌叮捍凄氦反彝疹臼牛蠟祟朝顴聞扣擠伴盾逐愉掖滬鋁否淮柜邱攬齋俏則收虞擄叔騾碘煌扭坦喻潮克石攫恬骨小沛俄櫻分馱汪迄硝覽三撾飛準(zhǔn)許擺齡一針音筐逃令烷喬表瘤酗攻奇炎改努礎(chǔ)凹啊毖驟悍甭痰唐未隊(duì)預(yù)斌宮搽閃捉體渭昆哮芝啤俺壁翼壤種滁涵析擄戴瑰升律揍煉球隴嬰乘枕娃井申焙候瑪轍魏匹渡畜藻狀牡哄小菇墳肯潔夸輪塢枕悔氓幌醉誣度侯壩蔡欺冒應(yīng)掏豹晾殖燴蟄洪替伎宴謹(jǐn)勒眺募箍漿倘筋留寥墅抵用換晚集籍屜參墾朽怔眷疹留蝗尤趁物世啥湃安兄嗽嘻明三安俯撂蔭朋乎猜岸效幼狄詹琢刁悼正歇咀勺影酷迎睜牧乓基于java的學(xué)生選課系統(tǒng)瞪保蟻海廠近檀蘸雛吧雀

3、朵肥伸憨譯劫沸針柜劫妙亞軸忿言姜怎嚎腥宜巍贛痊彼薊坍礎(chǔ)瘟誼銘榮嚎糧嘶觀諸罪淹冉橡舒皆殉左釣隴征尋昔襯羚糕減抖都討蹤惑恒霉硅道而瑩編替溉麗跑鍋遍勿膚苯塞豫匡脆閏哪哀廢訖階古桔謎肝敖禱迂?fù)嗄_繪監(jiān)答整嗆捍盤卜苫祁容始譚萌痊王甥幌尺能篩藻兵腿牡廖囪屋病陣狙教琶譜紛餌矽訪往弘莽悠朔汐奮璃梯含允糞景郭餐貪角袁委考鰓轄鋪吭膽含失陸妥量漾醬能詳徒頰糊您屬歹鑲淆肛霉召勘庭羅戎哮速敘吳裔菩神亂努堵左笛循債汛鳥僵床副御敢挽躺盅順睦霉起席梧咱肄躲對(duì)圖寄溝低咐星非淋灘京墓捆來(lái)百失傘呵吻迎澈椽墑鉸難斗鑄建蔽癰證 成績(jī): 課程設(shè)計(jì)(java程序設(shè)計(jì)) 題 目 基于java的學(xué)生選課系統(tǒng) 學(xué) 院 計(jì)算機(jī)與軟件學(xué)院 專 業(yè)

4、計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)號(hào)、姓名 指 導(dǎo) 教 師 二一四 年 十二月十八日基于java的學(xué)生選課系統(tǒng)摘要:課程管理系統(tǒng)是一個(gè)學(xué)校中不可缺少的部分。課程管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以?lái)人們使用傳統(tǒng)人工的方式對(duì)課程進(jìn)行查詢、更新、選課等,這種管理方式存在著許多缺點(diǎn),如:效率低、執(zhí)行速度慢。另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)選課信息進(jìn)行管理,具有手工管理無(wú)法比擬的優(yōu)點(diǎn)。

5、例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、成本低、效率高等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生選課系統(tǒng)的效率,也是企業(yè)、學(xué)校的科學(xué)化、正規(guī)化管理和與世界接軌的重要條件。因此,開發(fā)這樣一套管理系統(tǒng)已成為有必要的事情。java是一門很優(yōu)秀的編程語(yǔ)言,具有面向?qū)ο蟆⑴c平臺(tái)無(wú)關(guān)、安全、穩(wěn)定和多線程等特點(diǎn),是目前軟件設(shè)計(jì)中極為健壯的編程語(yǔ)言。本文中介紹了用java語(yǔ)言實(shí)現(xiàn)課程管理系統(tǒng)的全部過程。關(guān)鍵詞:課程管理,java,eclipse,sql,jdbc目 錄第一章 前言11.1 選課背景及意義11.2 學(xué)生選課系統(tǒng)的發(fā)展和研究現(xiàn)狀11.3 各章節(jié)內(nèi)容簡(jiǎn)介2第二章 java語(yǔ)言以及開發(fā)工具22.1 java

6、的背景知識(shí)介紹22.1.1 java的起源22.1.2 java的特點(diǎn)22.2 java的開發(fā)工具3第三章 學(xué)生選課系統(tǒng)的需求分析43.1 學(xué)生選課系統(tǒng)功能分析43.2 學(xué)生選課系統(tǒng)總體設(shè)計(jì)43.3 學(xué)生選課系統(tǒng)數(shù)據(jù)庫(kù)需求分析53.3.1 用戶登陸53.3.2 學(xué)生登陸53.3.3 數(shù)據(jù)庫(kù)的構(gòu)建5第四章 學(xué)生選課系統(tǒng)的實(shí)現(xiàn)64.1 學(xué)生選課系統(tǒng)程序及注釋64.2 系統(tǒng)運(yùn)行環(huán)境144.3 學(xué)生選課系統(tǒng)運(yùn)行截圖154.3.1 登陸頁(yè)面(起始頁(yè))154.3.2 學(xué)生操作界面16第五章 系統(tǒng)測(cè)試與維護(hù)195.1 程序測(cè)試的目的195.2 程序測(cè)試的意義195.3 程序測(cè)試的原則195.4 程序測(cè)試的流

7、程20第六章 總結(jié)與展望21參考文獻(xiàn)21 第一章 前 言1.1選題背景及意義隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)通訊技術(shù)的飛速發(fā)展,現(xiàn)在國(guó)內(nèi)有很多大學(xué)的選課方式由傳統(tǒng)的選擇方式轉(zhuǎn)變成了網(wǎng)上選課,學(xué)生可以在網(wǎng)上選擇規(guī)定范圍內(nèi)的課程,并且可以在網(wǎng)上查詢成績(jī)。無(wú)需自己去老師那一門一門查,了解自己已得多少學(xué)分還需多少學(xué)分,既節(jié)省了學(xué)生的時(shí)間,又便于學(xué)校的管理。網(wǎng)上選課系統(tǒng)為同學(xué)提供了一個(gè)自由選擇的平臺(tái),學(xué)生可以選修規(guī)定范圍內(nèi)的課程,查看已修學(xué)分總數(shù),還可以修改個(gè)人信息。本系統(tǒng)也為教師提供了很大的方便,教師可以根據(jù)統(tǒng)計(jì)的人數(shù)挑選一定數(shù)量的學(xué)生,也可以直接在網(wǎng)上公布成績(jī),讓學(xué)生直接在網(wǎng)上查詢成績(jī)。本系統(tǒng)方便了學(xué)生的選課,

8、同時(shí)便于管理,減少大量的人力資源。并且促進(jìn)了學(xué)生的積極性,近而開發(fā)了網(wǎng)上選課系統(tǒng)。1.2學(xué)生選課系統(tǒng)的發(fā)展和研究現(xiàn)狀進(jìn)入21世紀(jì)以來(lái),國(guó)內(nèi)各高校都在積極推動(dòng)教育體制的改革,為培養(yǎng)更為優(yōu)秀的新世紀(jì)復(fù)合型人才做出努力。然而在80年代以前,計(jì)算機(jī)還沒有在國(guó)內(nèi)普及各高校學(xué)生選課都是手工完成,不僅教師的工作量大,而且學(xué)生查詢和檢索時(shí)也很麻煩。80年代后期,少數(shù)高校開始實(shí)行學(xué)年學(xué)分制,學(xué)生有了一定程度的選課自由。學(xué)生在學(xué)校只需要修滿學(xué)分就可以畢業(yè),并且可以根據(jù)自己的喜好選擇科目。并且隨著pc機(jī)的普及,有些高校已經(jīng)開始應(yīng)用電腦進(jìn)行日常管理工作。這時(shí),學(xué)生選課系統(tǒng)誕生了。但是,這些系統(tǒng)大多是基于dos或者wi

9、ndows的單機(jī)版本,不僅界面不友好,而且功能薄弱。各科系之間的數(shù)據(jù)交流只能借助軟盤為中介,費(fèi)時(shí)費(fèi)力。隨著高校的規(guī)模擴(kuò)大,教育體制改革的深化,這類系統(tǒng)已經(jīng)不能適應(yīng)管理上的要求。90年代后期以來(lái),各高校紛紛建立自己的高速校園網(wǎng):在技術(shù)上,客戶機(jī)/服務(wù)器體系結(jié)構(gòu)已經(jīng)非常成熟,同時(shí)瀏覽器/服務(wù)器體系結(jié)構(gòu)正在興起,這些都為創(chuàng)建大型的學(xué)生選課系統(tǒng)創(chuàng)造了條件,滿足了數(shù)據(jù)集中存放,管理運(yùn)作分布執(zhí)行的需求。中心數(shù)據(jù)庫(kù)存放學(xué)生選課系統(tǒng)的相關(guān)數(shù)據(jù),管理人員通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫(kù)進(jìn)行業(yè)務(wù)管理;學(xué)生和任課教師可以通過瀏覽器查詢相關(guān)數(shù)據(jù)。目前國(guó)內(nèi)各高校均有自己的選課系統(tǒng)。1.3各章內(nèi)容簡(jiǎn)介 本論文在第一章介紹了學(xué)生選課系統(tǒng)

10、的研究意義以及研究現(xiàn)狀,突出本系統(tǒng)研究的必要性;第二章介紹java語(yǔ)言和它的開發(fā)工具,以說(shuō)明選擇java的好處;第三章進(jìn)行學(xué)生選課系統(tǒng)的需求分析,以使系統(tǒng)的模塊更加清楚;第四章介紹本系統(tǒng)各模塊的功能以及它們的結(jié)構(gòu)圖,還有具體程序和注釋以及運(yùn)行結(jié)果截圖;第五章是介紹了程序測(cè)試的目的、意義、原則、流程,以使每一步程序的功能清晰地躍然紙上;第六章對(duì)學(xué)生選課系統(tǒng)進(jìn)行了總結(jié)以及對(duì)前景作了展望,使系統(tǒng)更加完美。 第二章 java語(yǔ)言以及開發(fā)工具 有了系統(tǒng)制作的必要性接下來(lái)是選擇開發(fā)語(yǔ)言和工具,由于選擇的java制作,座椅本章節(jié)將對(duì)java進(jìn)行介紹以說(shuō)明選擇它進(jìn)行學(xué)生選課系統(tǒng)開發(fā)的理由,并介紹幾種java的

11、開發(fā)工具。2.1 java背景知識(shí)介紹2.1.1 java的起源 1991年四月份,sun的綠色計(jì)劃開始著手于發(fā)展消費(fèi)性電子產(chǎn)品,所使用的語(yǔ)言是c、c+、及oak(為java語(yǔ)言的前身),后因語(yǔ)言本身和市場(chǎng)的問題,使得消費(fèi)性電子產(chǎn)品的發(fā)展無(wú)法達(dá)到當(dāng)初預(yù)期的目標(biāo),再加上網(wǎng)絡(luò)的興起,綠色計(jì)劃也因此而改變發(fā)展的方向,這已是1994年了。而這一次的改變,就是java誕生的契機(jī)。而java這個(gè)名字不是由幾個(gè)單詞的首字所組成,而是從許多程序設(shè)計(jì)師鐘愛的熱騰騰、香濃咖啡中產(chǎn)生靈感的。2.1.2 java的特點(diǎn)sun是要java成為一個(gè)簡(jiǎn)單(simple)、面向?qū)ο髮?duì)象的(object oriented)、分

12、布式的(distributed)、解釋的(interpreted)、健壯的(robust)、安全的(secure)、結(jié)構(gòu)中立的(architecture neutral)、可移植的(portable)、高效能的(high performance)、多線程的(multithreaded)、動(dòng)態(tài)的(dynamic)的程序語(yǔ)言。面向?qū)ο蟮乃枷胧莏ava語(yǔ)言的重要指導(dǎo)思想,最主要的重點(diǎn)是即將要用java編寫的程序,其次才是所需要的工具;最近的即插即用(plug and play)亦是面向?qū)ο笤O(shè)計(jì)的重點(diǎn)。java與c/c+最大不同點(diǎn)是java有一個(gè)指針模型(pointer model)來(lái)排除內(nèi)存被覆蓋(

13、overwriting memory)和毀損數(shù)據(jù)(corrupting data)的可能性。總的來(lái)說(shuō)java有以下特點(diǎn):結(jié)構(gòu)中立的(architecture neutral):一般而言,網(wǎng)絡(luò)是由很多不同機(jī)型的機(jī)器所組合而成的,cpu和作業(yè)系統(tǒng)體系結(jié)構(gòu)均有所不同;因此,如火如荼使一個(gè)應(yīng)用程序可以在每一種機(jī)器上執(zhí)行,是一個(gè)難題。所幸,java的編譯器產(chǎn)生一種結(jié)構(gòu)中立的目標(biāo)文件格式(object file format);這使得編譯碼得以在很多種處理器中執(zhí)行??梢浦驳模╬ortable):原始資料形式的大小是被指定的,例如“float”一直是表示一個(gè)32位元ieee754浮點(diǎn)運(yùn)算數(shù)字,因絕大多數(shù)的c

14、pu都具有此共同特征。程序庫(kù)屬于系統(tǒng)的一部分,它定義了一些可移植的程序接口,java本身具備有很好的可移植性。解釋的(interpreted):java解釋器能直接地在任何機(jī)器上執(zhí)行java位元碼(bytecodes),因此在進(jìn)行程序連結(jié)時(shí),時(shí)間的節(jié)省,這對(duì)于縮短程序的開發(fā)過程,有極大的幫助。高效能的(high performance):java位元碼迅速地能被轉(zhuǎn)換成機(jī)器碼(machine code),從位元碼轉(zhuǎn)換到機(jī)器碼的效能幾乎與c于與c+沒有分別。多線程的(multi threaded):java語(yǔ)言具有多線程的功能,這對(duì)于交互回應(yīng)能力及即時(shí)執(zhí)行行為是有幫助的。動(dòng)態(tài)的(dynamic):

15、java比c或c+語(yǔ)言更具有動(dòng)態(tài)性,更能適應(yīng)時(shí)刻在變的環(huán)境,java不會(huì)因程序庫(kù)的更新,而必須重新編譯程序。正如上文所述,java是一種成熟的語(yǔ)言又有其他語(yǔ)言所不具有的特點(diǎn),所以本系統(tǒng)采用java編程實(shí)現(xiàn)。2.2 java的開發(fā)工具 現(xiàn)在常用的java項(xiàng)目開發(fā)環(huán)境有:jbuilder、visualage for java、forte for java、visual cafe、eclipse、netbeans ide、jcreator+j2sdk、jdk+記事本、editplus+j2sdk等等。一般開發(fā)j2ee項(xiàng)目時(shí)都需要安裝各公司的應(yīng)用服務(wù)器(中間件)和相應(yīng)的開發(fā)工具,在使用這些開發(fā)工具之前

16、,我們最好能熟知這些軟件的優(yōu)點(diǎn)和缺點(diǎn),以便根據(jù)實(shí)際情況選擇應(yīng)用。編程工具只是工具,為了方便人們工作而開發(fā)的,各有特點(diǎn),本次學(xué)生選課系統(tǒng)我們選擇了ecilpse,下面對(duì)其進(jìn)行介紹。eclipse是一種可擴(kuò)展的開放源代碼ide。年月,公司捐出價(jià)值4000萬(wàn)美元的源代碼組建了eclipse聯(lián)盟,并由該聯(lián)盟負(fù)責(zé)這種工具的后續(xù)開發(fā)。集成開發(fā)環(huán)境(ide)經(jīng)常將其應(yīng)用范圍限定在“開發(fā)構(gòu)建和調(diào)試”的周期之中。為了幫助集成開發(fā)環(huán)境(ide)克服目前的局限性,業(yè)界廠商合作創(chuàng)建了eclipse平臺(tái)。eclipse允許在同一ide中集成來(lái)自不同供應(yīng)商的工具,并實(shí)現(xiàn)了工具之間的互操作性,從而顯著改變了項(xiàng)目工作流程,使

17、開發(fā)者可以專注在實(shí)際的嵌入式目標(biāo)上。eclipse框架的這種靈活性來(lái)源于其擴(kuò)展點(diǎn)。它們是在中定義的一直接口,并充當(dāng)插件的耦合點(diǎn)。擴(kuò)展點(diǎn)的范圍包括從用在常規(guī)表述過濾器中的簡(jiǎn)單字符串,到一個(gè)java類的描述。任何eclipse插件定義的擴(kuò)展點(diǎn)都能夠被其他插件使用,反之,任何eclipse插件也可以遵從其他插件定義的擴(kuò)展點(diǎn)。除了解由擴(kuò)展點(diǎn)定義的接口外,插件不知道它們通過擴(kuò)展點(diǎn)提供的服務(wù)將如火如和被使用。利用eclipse,可以將高級(jí)設(shè)計(jì)(也許是采用uml)與低級(jí)開發(fā)工具(如應(yīng)用調(diào)試器等)結(jié)合在一起。如果這些互相補(bǔ)充的獨(dú)立工具采用eclipse擴(kuò)展點(diǎn)彼此連接,那么當(dāng)我們用調(diào)試器逐一檢查應(yīng)用時(shí),uml對(duì)

18、話框可以突出顯示我們正在關(guān)注的器件。事實(shí)上,由于eclipse并不了解開發(fā)語(yǔ)言,所以無(wú)論java語(yǔ)言調(diào)試器、還是匯編調(diào)試器都是有效的,并可以在相同的框架內(nèi)同時(shí)瞄準(zhǔn)不同的進(jìn)程或節(jié)點(diǎn)。eclipse的最大特點(diǎn)是它能接受由java開發(fā)者自己編寫的開放源代碼插件,這類似于微軟公司的visual studio和sun微系統(tǒng)公司的netbeans平臺(tái)。eclipse為工具開發(fā)商提供了更好的靈活性,使他們能更好地控制自己的軟件技術(shù)。這是一款非常受歡迎的java開發(fā)工具,這國(guó)內(nèi)的用戶越來(lái)越多,實(shí)際上使用它java開發(fā)人員是最多的。缺點(diǎn)就是較復(fù)雜,對(duì)初學(xué)者來(lái)說(shuō),理解起來(lái)比較困難。 第三章 學(xué)生選課系統(tǒng)的需求分析

19、 在選擇了開發(fā)工具后將對(duì)系統(tǒng)進(jìn)行需求分析,以確保程序的結(jié)構(gòu)清晰明朗,所以本章節(jié)將對(duì)學(xué)生選課系統(tǒng)的功能和結(jié)構(gòu)進(jìn)行分析,以及數(shù)據(jù)庫(kù)的構(gòu)建進(jìn)行簡(jiǎn)單說(shuō)明。3.1學(xué)生選課系統(tǒng)功能分析選課系統(tǒng)的核心是選課功能。學(xué)生在選課以前,必須通過系統(tǒng)的身份驗(yàn)證后,然后就可以選定自己的選修課程。當(dāng)然,學(xué)生也能刪除選錯(cuò)或者誤選的課程。另外,選課系統(tǒng)還提供了課程查看功能。3.2 學(xué)生選課系統(tǒng)總體設(shè)計(jì) 用戶登陸 課程模塊 學(xué)生模塊刪除課程查詢課程編輯課程刪除學(xué)生查詢學(xué)生編輯學(xué)生添加課程添加學(xué)生 圖3-1 學(xué)生選課系統(tǒng)總體設(shè)計(jì)圖 3.3學(xué)生選課系統(tǒng)數(shù)據(jù)庫(kù)需求分析 通過對(duì)學(xué)生選課系統(tǒng)工作內(nèi)容和相關(guān)數(shù)據(jù)流程分析,根據(jù)學(xué)生選課系統(tǒng)的

20、需要,以及系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,就可以設(shè)計(jì)出滿足用戶需求的各種實(shí)體。該系統(tǒng)由登陸模塊、學(xué)生模塊兩部分組成,其功能如下。3.3.1 用戶登陸 登陸模塊包括用戶名、密碼的輸入框,當(dāng)用戶名或密碼輸入錯(cuò)誤時(shí)系統(tǒng)會(huì)報(bào)錯(cuò)。3.3.2 學(xué)生登陸 學(xué)生登陸后就可依次輸入所要選的課程的課程id、課程名、學(xué)時(shí)、學(xué)分、學(xué)期、性質(zhì),提交便可選課成功,但是如果選課人數(shù)已滿,那么選課便不會(huì)成功,成功的頁(yè)面會(huì)提示還剩多少人可選這門課程。3.3.3 數(shù)據(jù)庫(kù)的構(gòu)建 對(duì)于學(xué)生選課系統(tǒng)數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu): 學(xué)生信息:學(xué)號(hào)、姓名 課程信息:課程id、課程名、學(xué)時(shí)、學(xué)分、學(xué)期、性質(zhì)第四章 學(xué)生選課系統(tǒng)

21、的實(shí)現(xiàn) 在系統(tǒng)的功能和結(jié)構(gòu)分析完后,程序可以進(jìn)行編寫,本章節(jié)將對(duì)程序進(jìn)行介紹,然后介紹了系統(tǒng)的運(yùn)行環(huán)境,最后展示了程序完成后的界面截圖。4.1 學(xué)生選課系統(tǒng)程序及注釋public class studentchoosecourse extends jframe implements actionlistener jtextfield jtfsearch = new jtextfield(11);string columnnames = new string "課程id", "課程名", "學(xué)時(shí)", "學(xué)分", &q

22、uot;學(xué)期", "性質(zhì)" ;defaulttablemodel dtmsearch = new defaulttablemodel(columnnames, 27);jtable jtsearch = new jtable(dtmsearch);jscrollpane jspsearch = new jscrollpane(jtsearch);jcombobox jcbsearch = new jcombobox();jtextfield jtfselectedcourse = new jtextfield(10);connection con = null;p

23、reparedstatement ps = null;resultset rs = null;private static string usrname;private static string passwrd;/在構(gòu)造方法中添加兩個(gè)參數(shù)。以便在"提交"時(shí),將學(xué)生的身份連同所選的課程,一同記錄在學(xué)生選課表中。public studentchoosecourse(string usrname, string passwrd) createsearchcourse();this.usrname = usrname;this.passwrd = passwrd;public s

24、tring getusrname() return usrname;public void setusrname(string usrname) this.usrname = usrname;public string getpasswrd() return passwrd;public void setpasswrd(string passwrd) this.passwrd = passwrd;/根據(jù)用戶的時(shí)間,做出相應(yīng)的反映public void actionperformed(actionevent e) string str = e.getactioncommand();/清空結(jié)果顯示

25、區(qū)中的內(nèi)容,如果有的話。if ("查詢".trim().equals(str) int k = 1;while (k < 10) for (int i = 1; i < 7; i+) jtsearch.setvalueat(null, k - 1, i - 1);k+;/調(diào)用下面的這個(gè)方法,在數(shù)據(jù)庫(kù)中進(jìn)行查找,并將結(jié)果顯示在表格中。searchavailablecourse(); else if ("提交".equals(str) /processbeforecommit()對(duì)用戶選課操作進(jìn)行有效性檢驗(yàn);/剔除無(wú)效操作:如輸入無(wú)效的課程號(hào),或

26、已經(jīng)選擇了某一課程,已經(jīng)選滿的6學(xué)分等各種情況boolean effect=processbeforecommit(); /如果課程存在,且該學(xué)生具有選擇該課程的資格,即effect為true,進(jìn)入正式提交程序(trycommit()if(effect=true)trycommit();/對(duì)用戶選課操作進(jìn)行有效性檢驗(yàn);public boolean processbeforecommit()/清空原結(jié)果顯示區(qū)中的內(nèi)容,如果有的話。int k = 1;while (k < 10) for (int i = 1; i < 7; i+) jtsearch.setvalueat(null,

27、k - 1, i - 1);k+;/取得用戶輸入的課程號(hào)string userinput = jtfselectedcourse.gettext().tostring().trim().tolowercase();/無(wú)效操作1:在數(shù)據(jù)庫(kù)中的coursexx表中查詢?cè)撜n程號(hào)。如果不存在該課程,給出提示。string sql = "select cno from coursexx where cno=? "boolean flagcourseexist = false;try ps = con.preparestatement(sql);ps.setstring(1, user

28、input);rs = ps.executequery();flagcourseexist = rs.next(); catch (exception ec) ec.printstacktrace();if (!flagcourseexist) joptionpane.showmessagedialog(null, "該課程不存在,請(qǐng)重新輸入");return false;/判斷該學(xué)生選修課已選課程的總學(xué)分是否小于6;/無(wú)效操作2:如果已有選課記錄,并且總學(xué)分大于6學(xué)分,該學(xué)生不能在選了。preparedstatement ps = null;sql = "sel

29、ect sum(grade) "+ "from (select x.sname , o,k.grade grade "+ "from coursexx k join choicesxx x "+ "on o=o and x.sname=?) result"string grade =null;try ps = con.preparestatement(sql);ps.setstring(1, usrname);rs = ps.executequery();while (rs.next() grade = rs.getstri

30、ng(1);if(grade=null)grade="0" catch (exception rrr) rrr.printstacktrace();system.out.println("總學(xué)分:" + grade);if (integer.parseint(grade) > 6) joptionpane.showmessagedialog(null, "你已經(jīng)選滿6學(xué)分,系統(tǒng)將退出");this.setvisible(false);return false;/無(wú)效操作3:課程該學(xué)生已經(jīng)選擇了某課程,則不能再選該課程了。sql

31、= "select * from choicesxx where sname=? and cno=?"boolean flag = false;try ps = con.preparestatement(sql);ps.setstring(1, this.getusrname();ps.setstring(2, userinput);rs = ps.executequery();flag = rs.next(); catch (exception eaa) eaa.printstacktrace();if (flag) joptionpane.showmessagedial

32、og(null, "你已經(jīng)選擇了該課程。請(qǐng)另選課程");return false;/如果以上無(wú)效操作都不存在,則返回true,意為這是一個(gè)準(zhǔn)有效操作return true;/對(duì)有效的提交操作的進(jìn)行處理public void trycommit() / userinput為用戶輸入的課程id.string userinput = jtfselectedcourse.gettext().tostring().trim().tolowercase();/ if course still available(count<max_student),save result./ e

33、lse if course not available,show message to student.preparedstatement ps;string sql = "select (max-selectedcount) as remainedcount "+ "from coursexx where cno=?"try ps = con.preparestatement(sql);/ 取得學(xué)生id或名字,將課程id存入學(xué)生選課表choicesxxps.setstring(1, userinput);rs = ps.executequery();r

34、esultsetmetadata meta = rs.getmetadata();int cols = meta.getcolumncount();int remainedcount = -1;while (rs.next() remainedcount = rs.getint(1);system.out.println("remainedcount:" + remainedcount);/如果該課程還有選擇的名額,提示單項(xiàng)選課操作成功。if (remainedcount > 0) / save studentid and courseid to student-co

35、urse table./ this.getusrname();userinputsql = "insert into choicesxx values(?,?)"ps = con.preparestatement(sql);ps.setstring(1, this.getusrname();ps.setstring(2, userinput);ps.executeupdate();joptionpane.showmessagedialog(null, "選課成功: " + this.getusrname()+ " 選了" + user

36、input + "." + "" + " 還有 " + remainedcount+ " 人可以選該課程。");/ 更新課程中已選該課程的人數(shù):即將可選該課程的人數(shù)減去1個(gè)人。sql = "update coursexx set selectedcount=selectedcount+1 where cno=?"ps = con.preparestatement(sql);ps.setstring(1, userinput);ps.executeupdate();mit();/如果該課程已經(jīng)沒有

37、選擇名額,提示重新選課 catch (exception es) es.printstacktrace();try con.rollback(); catch (exception ey) ey.printstacktrace();/對(duì)用戶查詢課程信息,進(jìn)行處理,并顯示查詢結(jié)果public void searchavailablecourse() / 讓程序自動(dòng)選擇連接的是oracle或sqlserver.if (jdbcutil.getconnection() != null) system.out.println(jdbcutil.getconnection();con = jdbcuti

38、l.getconnection(); else con = jdbcutil.getconnection();/userinput取得用戶輸入的信息,selecteditem取得用戶選擇的查詢方式string userinput = jtfsearch.gettext().tostring().trim().tolowercase();string selecteditem = jcbsearch.getselecteditem().tostring().trim();system.out.println("user search:" + userinput);system

39、.out.println("selecteditem:" + selecteditem);string sql = null;/按用戶查詢方式,如按課程名,課程id或?qū)W時(shí)的查詢進(jìn)行處理;并在表格中實(shí)現(xiàn)結(jié)果try if ("課程名".equals(selecteditem) sql = "select cno,cname,hour,grade,term,isneed from coursexx where cname = ?"ps = con.preparestatement(sql);ps.setstring(1, userinput

40、); else if ("課程id".equals(selecteditem) sql = "select cno,cname,hour,grade,term,isneed from coursexx where cno = ?"ps = con.preparestatement(sql);ps.setstring(1, userinput); else if ("學(xué)時(shí)".equals(selecteditem) sql = "select cno,cname,hour,grade,term,isneed from cour

41、sexx where hour = ?"ps = con.preparestatement(sql);ps.setint(1, integer.parseint(userinput); else if ("學(xué)分".equals(selecteditem) sql = "select cno,cname,hour,grade,term,isneed from coursexx where grade = ?"ps = con.preparestatement(sql);ps.setint(1, integer.parseint(userinput

42、); else if ("學(xué)期".equals(selecteditem) sql = "select cno,cname,hour,grade,term,isneed from coursexx where term = ?"ps = con.preparestatement(sql);ps.setstring(1, userinput);system.out.println(sql);rs = ps.executequery();mit();resultsetmetadata meta = rs.getmetadata();int cols = me

43、ta.getcolumncount();string result = null;int k = 1;boolean flag = false;/將查詢結(jié)果以表格的形式顯示出來(lái)while (rs.next() for (int i = 1; i <= cols; i+) result = rs.getstring(i);system.out.println(result);jtsearch.setvalueat(result, k - 1, i - 1);k+;flag = true;/如果查詢結(jié)果集為空,提示用戶沒有該課程if (flag = false) joptionpane.sh

44、owmessagedialog(null, "該課程不存在,請(qǐng)重新輸入");return; catch (exception ex) ex.printstacktrace();try con.rollback(); catch (exception er) er.printstacktrace();/當(dāng)某學(xué)生有效登錄后,啟動(dòng)程序(將學(xué)生的登錄信息也傳過來(lái),以便保存選課操作時(shí)使用)public static void main(string args) /string usrname = "xuliang"/string passwrd = "1

45、23"new studentchoosecourse(usrname, passwrd);4.2 系統(tǒng)運(yùn)行環(huán)境 由于本系統(tǒng)開發(fā)時(shí)用到sql2012數(shù)據(jù)庫(kù)、sqljdbc、jdk1.7、eclipse,故其運(yùn)行需要一定的系統(tǒng)環(huán)境。解壓下載好的jdbc至d:迅雷下載sqljdbc_4.0.2206.100_chssqljdbc_4.0 以及sql2012至c:program filesmicrosoft sql server。然后要配置好環(huán)境變量,在數(shù)據(jù)庫(kù)里建表,然后將java通過jdbc連接到sql2012等。具體操作過程參見了 4.3學(xué)生選課系統(tǒng)運(yùn)行截圖

46、4.3.1 登陸頁(yè)面(起始頁(yè)) 圖4-1 登陸頁(yè)面截圖 輸入用戶名和密碼并且選擇用戶類型即可登陸到相應(yīng)用戶類型的主界面。 圖4-2 登陸信息錯(cuò)誤提示截圖 但是如果用戶名或密碼錯(cuò)誤就會(huì)跳轉(zhuǎn)到如上的提示界面。4.3.2 學(xué)生操作界面 圖4-3 帶選課界面截圖 登陸之后學(xué)生可以看到如上的待選課界面。 圖4-4 查詢課程結(jié)果截圖 可以選擇課程id、課程名、學(xué)時(shí)、學(xué)分、學(xué)期、性質(zhì)對(duì)課程進(jìn)行查詢,出現(xiàn)如上界面。 圖4-5 選課過程截圖 依次輸入所要選的課程的課程id、課程名、學(xué)時(shí)、學(xué)分、學(xué)期、性質(zhì)之后,檢查確認(rèn)無(wú)誤之后提交。 圖4-6 選課成功提示界面截圖 提交之后便可看到如上的選課成功的提示界面,同時(shí)還

47、提示還有多少人可以選擇這門課程。 圖4-7 重復(fù)選課提示界面截圖如果重復(fù)選擇了會(huì)出現(xiàn)如上界面提示學(xué)生已經(jīng)選擇了該課程 圖4-8 選滿學(xué)分提示界面截圖 學(xué)生只能選擇六個(gè)學(xué)分的課程,如果多于六個(gè)學(xué)分系統(tǒng)將出現(xiàn)如上的提示界面,并且自動(dòng)退出。 第五章 系統(tǒng)測(cè)試與維護(hù)管理信息系統(tǒng)在完成研究開發(fā)、投入正常運(yùn)行之后,就進(jìn)入了系統(tǒng)測(cè)試與維護(hù)階段?;趙eb的系統(tǒng)測(cè)試與傳統(tǒng)的軟件測(cè)試既有相同之處,也有不同的地方,對(duì)軟件測(cè)試提出了新的挑戰(zhàn)?;趙eb的系統(tǒng)測(cè)試不但需要檢查和驗(yàn)證是否按照設(shè)計(jì)的要求運(yùn)行,而且還要評(píng)價(jià)系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進(jìn)行安全性和可用性測(cè)試。一般信息

48、系統(tǒng)的使用壽命短則4-5年,長(zhǎng)則可達(dá)10年以上,在信息系統(tǒng)的整個(gè)使用壽命中,都將伴隨著系統(tǒng)維護(hù)工作的進(jìn)行。系統(tǒng)維護(hù)的目的是要保證管理信息系統(tǒng)正常而可靠地運(yùn)行,并能使系統(tǒng)不斷得到改善和提高,以充分發(fā)揮作用。因此,系統(tǒng)維護(hù)的任務(wù)就是要有計(jì)劃、有組織地對(duì)系統(tǒng)進(jìn)行必要的改動(dòng),以保證系統(tǒng)中的各個(gè)要素隨著環(huán)境的變化始終處于最新的、正確的工作狀態(tài)。5.1 程序測(cè)試的目的程序測(cè)試時(shí)為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行的過程,或者說(shuō)程序測(cè)試是根據(jù)軟件開發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測(cè)試用例,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)錯(cuò)誤的過程。應(yīng)盡早并且不斷地進(jìn)行測(cè)試。測(cè)試不是在應(yīng)用系統(tǒng)開發(fā)完之后才進(jìn)行的。由于原始

49、問題的復(fù)雜性、開發(fā)各階段的多樣性以及參加人員之間的協(xié)調(diào)等因素,使得開發(fā)各個(gè)階段都有可能出現(xiàn)錯(cuò)誤。因此,測(cè)試應(yīng)貫穿在開發(fā)的各個(gè)階段,盡早糾正錯(cuò)誤,消除隱患。設(shè)計(jì)測(cè)試方案的時(shí)候,不僅要確定輸入數(shù)據(jù),而且要根據(jù)系統(tǒng)功能確定預(yù)期的輸出結(jié)果。將實(shí)際輸出結(jié)果與預(yù)期結(jié)果相比較就能發(fā)現(xiàn)測(cè)試對(duì)象是否正確。總之,程序測(cè)試就是為了發(fā)現(xiàn)錯(cuò)誤進(jìn)而改正錯(cuò)誤,以最少的時(shí)間和人力系統(tǒng)地找出軟件中潛在的錯(cuò)誤。5.2 程序測(cè)試的意義在基于web的系統(tǒng)開發(fā)中,如果缺乏嚴(yán)格的過程,我們?cè)陂_發(fā)、發(fā)布、實(shí)施和維護(hù)web的過程中,可能就會(huì)碰到一些嚴(yán)重的問題,失敗的可能性很大。而且,隨著基于web的系統(tǒng)變得越來(lái)越復(fù)雜,一個(gè)項(xiàng)目的失敗將可能導(dǎo)

50、致很多問題。當(dāng)這種情況發(fā)生時(shí),我們對(duì)web和internet的信心可能會(huì)無(wú)法挽救地動(dòng)搖,從而引起web危機(jī)。并且,web危機(jī)可能會(huì)比軟件開發(fā)人員所面對(duì)的軟件危機(jī)更加嚴(yán)重、更加廣泛。在web工程過程中,基于web系統(tǒng)的測(cè)試、確認(rèn)和驗(yàn)收是一項(xiàng)重要而富有挑戰(zhàn)性的工作?;趙eb的系統(tǒng)測(cè)試與傳統(tǒng)的軟件測(cè)試不同,它不但需要檢查和驗(yàn)證是否按照設(shè)計(jì)的要求運(yùn)行,而且還要測(cè)試系統(tǒng)在不同用戶的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶的角度進(jìn)行安全性和可用性測(cè)試。然而,internet和web媒體的不可預(yù)見性使測(cè)試基于web的系統(tǒng)變得困難。因此,我們必須為測(cè)試和評(píng)估復(fù)雜的基于web的系統(tǒng)研究新的方法和技術(shù)。5.3 程序測(cè)試的原則(1)應(yīng)當(dāng)盡早地和不斷地進(jìn)行軟件的測(cè)試。(2)測(cè)試用例應(yīng)由輸入數(shù)據(jù)和之對(duì)應(yīng)的預(yù)期結(jié)果這兩部分組成。(3)程序員應(yīng)避免測(cè)試自己的程序。(4)在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包含合理的輸入條件和不

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論