學(xué)生成績(jī)管理系統(tǒng)綜合實(shí)驗(yàn)報(bào)告.doc
-
資源ID:6497903
資源大小:971.50KB
全文頁(yè)數(shù):31頁(yè)
- 資源格式: DOC
下載積分:9.9積分
快捷下載

會(huì)員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。
|
學(xué)生成績(jī)管理系統(tǒng)綜合實(shí)驗(yàn)報(bào)告.doc
《Java高級(jí)編程》課程報(bào)告
學(xué)生成績(jī)管理系統(tǒng)
小組成員及分工
姓名
角色
負(fù)責(zé)功能
組長(zhǎng)
設(shè)計(jì)與編碼
測(cè)試
王綱偉
是
是
是
增加學(xué)生、刪改查學(xué)生、存取數(shù)據(jù)
彭坤
否
是
是
登錄用戶、修改密碼
張建銳
否
是
是
刪除學(xué)生、查找學(xué)生、修改學(xué)生
一、 實(shí)驗(yàn)環(huán)境
操作系統(tǒng):Windows7
編程環(huán)境:Eclipse
二、 實(shí)驗(yàn)內(nèi)容與完成情況
1. 登錄用戶
(1) 登錄用戶:有3種不同的方式登錄,管理員登錄、教師登錄和學(xué)生。每個(gè)用戶都有自己的賬號(hào)和密碼,通過(guò)輸入賬號(hào)和密碼來(lái)登錄,輸入賬號(hào)和密碼后會(huì)檢查是否合理,即賬號(hào)只能由數(shù)學(xué)組成,密碼只能數(shù)字和字母組成,否則會(huì)提示錯(cuò)誤登錄不成功;然后再查找數(shù)據(jù)庫(kù),如果找到匹配的賬號(hào)和密碼,就登錄成功,否則登錄不成功。登錄成功后會(huì)添加相應(yīng)的功能,管理員可以增刪改查學(xué)生,教師可以修改和查找學(xué)生,學(xué)生只能查找學(xué)生。
(2) 流程圖:
彈出提示:賬號(hào)或密碼錯(cuò)誤
查找管理員數(shù)據(jù)庫(kù)
查找學(xué)生數(shù)據(jù)庫(kù)
輸入賬號(hào)和密碼
登錄方式是否為管理員?
登錄方式是否為教師?
查找教師數(shù)據(jù)庫(kù)
是否找到匹配的賬號(hào)和密碼?
登錄成功
登錄失敗
是
否
否
是
否
是
(3) 代碼:
String s1 = textField.getText();
String s2 = passwordField.getText();
StudentDao dao = new StudentDao();
boolean result = false;
if(radioButton.isSelected()==true){ //管理員登錄
result = dao.seachadministrators(s1, s2);
if(result){ //登錄成功
menuEdit.removeAll();
menuEdit.add(AddItem);
menuEdit.add(SDEItem);
}
}
else if(radioButton_1.isSelected()==true){ //教師登錄
result = dao.seachteacher(s1, s2);
if(result){ //登錄成功
menuEdit.removeAll();
SDEItem.setText("改查學(xué)生");
menuEdit.add(SDEItem);
}
}
else if(radioButton_2.isSelected()==true){ //學(xué)生登錄
result = dao.seachstudent(s1, s2);
if(result){ //登錄成功
menuEdit.removeAll();
SDEItem.setText("查找學(xué)生");
menuEdit.add(SDEItem);
}
}
2. 增加學(xué)生
(1) 增加學(xué)生:輸入學(xué)生姓名、學(xué)號(hào)、性別、班別、成績(jī)等信息,判斷輸入的信息是否為空,如果為空提示錯(cuò)誤(如姓名為空,就提示姓名不能為空,其他的一樣),增加學(xué)生失敗。如果不為空判斷學(xué)號(hào)和成績(jī)是否合理,如果不合理就提示錯(cuò)誤(如學(xué)號(hào)中含有字母和其他不是數(shù)字的字符,就提示學(xué)號(hào)只能由數(shù)字組成)。如果合理,則把學(xué)生信息封裝成學(xué)生對(duì)象,再通過(guò)學(xué)生對(duì)象把學(xué)生信息添加到學(xué)生數(shù)據(jù)庫(kù)里。
(2) 流程圖
輸入學(xué)生姓名、學(xué)號(hào)等信息
姓名、學(xué)號(hào)等信息是否為空?
是
姓名、學(xué)號(hào)等信息是否合理?
否
提示錯(cuò)誤,增加學(xué)生失敗
是
提示錯(cuò)誤,增加學(xué)生失敗
將學(xué)生信息封裝到學(xué)生對(duì)象
將學(xué)生對(duì)象里的信息儲(chǔ)存到學(xué)生數(shù)據(jù)庫(kù)
增加學(xué)生成功
(3) 代碼
3. 修改學(xué)生
(1) 修改學(xué)生:輸入學(xué)號(hào),查找數(shù)據(jù)庫(kù),如果存在該學(xué)號(hào)的學(xué)生,就輸出該學(xué)生的姓名、學(xué)號(hào)、性別、班別與成績(jī)等信息,并可以進(jìn)行修改,保存修改時(shí)會(huì)判斷你修改的信息是否為空,是否合理(如學(xué)號(hào)不能修改,成績(jī)只能0~100的正整數(shù)),是的話就修改成功,否的話就修改不成功,并會(huì)彈出提示。
(2) 流程圖
修改成功
輸入學(xué)號(hào)
數(shù)據(jù)庫(kù)里否找到該學(xué)號(hào)?
輸出該學(xué)生的姓名、學(xué)號(hào)等信息
修改該學(xué)生的信息
學(xué)生信息是否為空?
學(xué)生信息是否合理?
提示:該學(xué)生不存在!
提示:信息不能為空
提示:不能修改學(xué)號(hào),或成績(jī)只能是0~100的正整數(shù)
在數(shù)據(jù)庫(kù)里找到該學(xué)生,并修改。
否
是
是
否
否
是
(3) 代碼:
4. 刪除學(xué)生
(1) 刪除學(xué)生:輸入學(xué)號(hào),查找數(shù)據(jù)庫(kù),如果存在該學(xué)號(hào)的學(xué)生,就輸出該學(xué)生的姓名、學(xué)號(hào)、性別、班別與成績(jī)等信息,不存在就提示該學(xué)生不存在!然后確認(rèn)是否刪除該學(xué)生。
刪除成功
在數(shù)據(jù)庫(kù)里找到該學(xué)生,并刪除。
輸入學(xué)號(hào)
數(shù)據(jù)庫(kù)里否找到該學(xué)號(hào)?
輸出該學(xué)生的姓名、學(xué)號(hào)等信息
提示:該學(xué)生不存在!
(2) 流程圖
否
是
(3) 代碼
5. 查找學(xué)生
(1) 查找學(xué)生:輸入學(xué)號(hào),查找數(shù)據(jù)庫(kù),如果存在該學(xué)號(hào)的學(xué)生,就輸出該學(xué)生的姓名、學(xué)號(hào)、性別、班別與成績(jī)等信息,不存在就提示該學(xué)生不存在!
輸入學(xué)號(hào)
數(shù)據(jù)庫(kù)里否找到該學(xué)號(hào)?
輸出該學(xué)生的姓名、學(xué)號(hào)等信息
提示:該學(xué)生不存在!
(2) 流程圖
否
是
(3) 代碼
6. 刪改查學(xué)生
(1) 刪改查學(xué)生:用戶可以通過(guò)輸入姓名、學(xué)號(hào)、班別和性別來(lái)查詢學(xué)生成績(jī),如輸入電子1班可以查詢電子1班所有學(xué)生的信息(姓名、學(xué)號(hào)、班別、性別和各科成績(jī)),并把這些學(xué)生信息顯示在表格上,每一行顯示一個(gè)學(xué)生的信息。用戶可以修改表格的某一行,或刪除表格的某一行,來(lái)實(shí)現(xiàn)修改學(xué)生和刪除學(xué)生。
(2) 流程圖
刪除表格的某一行(即刪除學(xué)生)。
從數(shù)據(jù)庫(kù)里刪除該學(xué)生
刪除成功
輸入查詢條件(姓名、學(xué)號(hào)、性別和班別)
查找數(shù)據(jù)庫(kù),找到符合查詢條件的所有學(xué)生
將學(xué)生的信息顯示在表格上
(1)
(1)或(2)
(2)
修改成功
修改表格的某一行(即學(xué)生信息)。
提示:信息(姓名、性別、學(xué)號(hào)、班別和成績(jī))不能為空!
學(xué)生信息是否為空?
學(xué)生信息是否合理?
提示:不能修改學(xué)號(hào),或成績(jī)只能是0~100的正整數(shù)
在數(shù)據(jù)里找到該學(xué)生,并修改。
否
是
否
是
(3) 代碼
查找并顯示在表格:
修改:
刪除:
7. 修改密碼
(1) 修改密碼:輸入一次舊密碼,輸入兩次新密碼,判斷密碼是否為空,為空就彈出提示信息“密碼不能為空”,否則查找數(shù)據(jù)庫(kù),檢查舊密碼是否正確,不正確就彈出提示“舊密碼錯(cuò)誤!”,否則就判斷新密碼的組成,如果密碼由數(shù)字和字母以外的字符組成,就彈出提示“密碼只能由數(shù)字和字母組成!”,否則就將舊密碼替換成新密碼,保存到數(shù)據(jù)庫(kù)里。
輸入一次舊密碼,兩次新密碼。
密碼是否為空?
兩新密碼是否一致?
舊密碼替換成新密碼,并保存到數(shù)據(jù)庫(kù)
提示:密碼不能為空
提示:兩次密碼不一致
舊密碼是否正確?
提示:舊密碼錯(cuò)誤!
(2) 流程圖
否
否
否
是
否
是
(3) 代碼
8. 存取數(shù)據(jù)
(1) 存取數(shù)據(jù):先創(chuàng)建Document的對(duì)象document,然后通過(guò)document來(lái)訪問(wèn)xml文檔,并對(duì)其進(jìn)行增刪改查操作,最后把document保存到xml文檔里。
(2) 流程圖
創(chuàng)建Document的對(duì)象document
document訪問(wèn)xml文檔,并對(duì)其進(jìn)行增刪改查。
document保存到xml文檔
(3) 功能2代碼
把student.xml文檔里所有學(xué)生及信息讀取出來(lái),保存到List<Student>.
刪除學(xué)生
修改學(xué)生
增加學(xué)生
查找學(xué)生
保存學(xué)生密碼
保存管理員密碼
查找管理員密碼
保存教師密碼
查找老師密碼
三、 功能測(cè)試
增加學(xué)生:如果我不小心點(diǎn)擊了兩次增加學(xué)生的按扭,就出現(xiàn)兩個(gè)一模一樣的學(xué)生(如下圖),解決方法:增加學(xué)生之前,先判斷是否存在該學(xué)生,如果不存在,就增加;存在,就修改。
修改學(xué)生:如果我修改了學(xué)生的班別(如電子2班,改為電子1班),就出現(xiàn)電子2班有該學(xué)生,電子1班也有(如下圖),解決方法:在修改學(xué)生之前,先判斷該學(xué)生的班別跟原來(lái)的班別是否一致,如果一致,就修改;不一致,就先把原來(lái)的學(xué)生刪除,然后保存,最后增加該學(xué)生。
表格的建立:本來(lái)想創(chuàng)建一個(gè)7列的表格,但實(shí)際創(chuàng)建了一個(gè)8列的表格(如下圖(b),多出了一列)。原因:創(chuàng)建一行的時(shí)候,就已經(jīng)創(chuàng)建了一列,目標(biāo)的列數(shù)應(yīng)該要比實(shí)際的列數(shù)少一列。解決方法:如下圖(a),把i < 7改為i < 6。
(a)
(
(b)
查找學(xué)生:如果我第一次查找學(xué)生的結(jié)果正確,第二次再查出現(xiàn)錯(cuò)誤(如下圖),原因是第一次查詢的結(jié)果沒(méi)有被清掉,導(dǎo)致下次查找時(shí)出現(xiàn)錯(cuò)誤。解決方法:再每次查找學(xué)生之前,先把表格清理(即上一次查詢的結(jié)果清理),然后進(jìn)行查找學(xué)生。
清一表格代碼如下:
出現(xiàn)錯(cuò)誤圖:
登錄用戶:登錄教師用戶時(shí),總是提示密碼錯(cuò)誤,但查看數(shù)據(jù)庫(kù)時(shí),發(fā)現(xiàn)密碼并沒(méi)有錯(cuò)誤。原因:原來(lái)在讀取教師賬號(hào)密碼時(shí),創(chuàng)建了錯(cuò)誤的Document對(duì)象,創(chuàng)建的是管理員賬號(hào)密碼文檔的對(duì)象。解決方法:把Document的對(duì)象改為教師賬號(hào)密碼的對(duì)象。
現(xiàn)象:
原因:
解決方法:將XmlUtils.getadministrators()改為XmlUtils.getteacher()。
四、 項(xiàng)目總結(jié)
成員1(王綱偉):
(1) 增加學(xué)生:在保存學(xué)生成績(jī)之前需要判斷輸入的成績(jī)是否正確(成績(jī)只能是0~100的正整數(shù)),因?yàn)槲覀冚斎氲某煽?jī)是以字符串形式保存的,所以要先把字符串轉(zhuǎn)換成浮點(diǎn)型。但這就遇到了一個(gè)問(wèn)題,如果我不小心輸入了一個(gè)錯(cuò)誤的成績(jī),即成績(jī)里含有非數(shù)字的字符組成時(shí),在字符串轉(zhuǎn)換成浮點(diǎn)型后就會(huì)出現(xiàn)錯(cuò)誤。因此,要先判斷成績(jī)的組成,如果成績(jī)里含有其他非數(shù)字的字符組成時(shí),應(yīng)該提示錯(cuò)誤并不進(jìn)行字符串轉(zhuǎn)換成浮點(diǎn)型。否則就將字符串轉(zhuǎn)換成浮點(diǎn)型,然后再對(duì)浮點(diǎn)型的數(shù)據(jù)進(jìn)行判斷,是否是0~100的正整數(shù)。
(2) 學(xué)生信息的顯示:把數(shù)據(jù)庫(kù)里所有學(xué)生信息都顯示在表格上,要怎么做?①先從數(shù)據(jù)庫(kù)里讀取第一個(gè)學(xué)生信息,然后把讀取出來(lái)的學(xué)生信息顯示在表格上,再?gòu)臄?shù)據(jù)庫(kù)里讀取第二個(gè)學(xué)生信息,然后顯示在表格上,如此循環(huán)。如果數(shù)據(jù)庫(kù)里有上萬(wàn)個(gè)學(xué)生的信息,就要讀取上萬(wàn)次數(shù)據(jù)。所以不用這種方法。②先把數(shù)據(jù)庫(kù)里讀取所有學(xué)生信息并保存到List<Student>(學(xué)生列表)里,然后再用循環(huán)語(yǔ)句把List<Student>(學(xué)生列表)里所有學(xué)生信息顯示在表格上。這種方法可用。
成員2(彭坤):
(1) 登錄用戶:要怎么做才能實(shí)現(xiàn)3種不同登錄方式(管理員、教師和學(xué)生),用3個(gè)按扭,分別是管理員登錄、教師登錄和學(xué)生登錄,點(diǎn)擊哪個(gè)登錄按扭就登錄相應(yīng)用戶;這方法比較簡(jiǎn)單但界面不好看不靈活。用3個(gè)單選按扭,分別是管理員、教師和學(xué)生,設(shè)置3個(gè)單選按扭的獨(dú)立性(即只要有一個(gè)被選,另外兩個(gè)就不能被選),哪個(gè)單選按扭被選中,點(diǎn)擊登錄時(shí)就登錄相應(yīng)的用戶;這方法比上一種復(fù)雜,但直觀并靈活。
成員3(張建銳):
(1) 修改學(xué)生:在修改學(xué)生時(shí),把學(xué)號(hào)也修改了,結(jié)果出現(xiàn)了一些錯(cuò)誤。修改學(xué)生的學(xué)號(hào)時(shí),如果我把當(dāng)前學(xué)生的學(xué)號(hào)修改成了別的學(xué)生的學(xué)號(hào),那就相當(dāng)于修改了別的學(xué)生信息,而不是我想要改學(xué)生的信息,因?yàn)樵诒4嫘薷膶W(xué)生信息時(shí),是通過(guò)判斷當(dāng)前要修改學(xué)生的學(xué)號(hào)是否與數(shù)據(jù)庫(kù)里學(xué)生的學(xué)號(hào)相等,如果相等就修改數(shù)據(jù)庫(kù)該學(xué)生的信息。所以把學(xué)號(hào)修改了,就出現(xiàn)了問(wèn)題,要修改的學(xué)生信息沒(méi)有改,卻修改了別的學(xué)生的信息。因此,學(xué)生的學(xué)號(hào)應(yīng)該是唯一的,即學(xué)號(hào)不能被修改。否則提示錯(cuò)誤。