第一篇:課程設(shè)計(jì)--成績管理系統(tǒng)
“成績管理系統(tǒng)”課程設(shè)計(jì)指導(dǎo)書
課題名稱:學(xué)生成績管理系統(tǒng)
設(shè)計(jì)目標(biāo):按照軟件工程的規(guī)范,以SQL Server或Oracle為后臺數(shù)據(jù)庫,以Visual C++、Delphi等為前端開發(fā)工具,設(shè)計(jì)并實(shí)現(xiàn)一個能模擬高等學(xué)校學(xué)生成績管理的系統(tǒng)。
需求描述:
學(xué)生成績管理系統(tǒng)中:
1.系統(tǒng)用戶
系統(tǒng)的用戶是學(xué)校的學(xué)生、教師和管理員。學(xué)生使用本系統(tǒng)查詢自己的成績。教師使用本系統(tǒng)錄入和查詢自己所授課程的考試成績。教學(xué)管理員可以查詢所有課程成績,并使用本系統(tǒng)進(jìn)行成績的統(tǒng)計(jì)和生成報表。
2.系統(tǒng)功能
(1)成績錄入:
教師可以查詢自己本學(xué)期所授課程,并錄入學(xué)生的考試成績。錄入過
程中,可以暫存已錄入的成績,當(dāng)錄入完成后提交。
(2)成績維護(hù):
教師在提交前,可以修改已錄入或暫存的學(xué)生成績;但提交后,則只
能查詢不能再進(jìn)行任何修改。
教學(xué)管理員可以清除教師已提交的成績。
(3)成績查詢:
教師、教學(xué)管理員可以查詢學(xué)生考試成績。學(xué)生只允許查詢自己的考
試成績,教師只允許查詢自己所授課程的成績。
(4)成績統(tǒng)計(jì):
教學(xué)管理員可以按課程、按學(xué)生、按班級等進(jìn)行成績統(tǒng)計(jì)。
教學(xué)管理員根據(jù)核算出的總評成績統(tǒng)計(jì)處于優(yōu)、良、中、及格、不及
格的學(xué)生人數(shù)以及占總?cè)藬?shù)的百分比。其中100-90為優(yōu),89-80為良,79-70為中,69-60為及格,60分以下為不及格。
按要求輸出成績在優(yōu)、良、中、及格、不及格各區(qū)間的學(xué)生學(xué)號。
結(jié)果形式:
提交課程設(shè)計(jì)報告、源程序和可演示的軟件
課程設(shè)計(jì)報告要求:詳見課程設(shè)計(jì)模板
課程設(shè)計(jì)參考思路:
(1)熟悉數(shù)據(jù)庫和開發(fā)工具,掌握開發(fā)工具與本地?cái)?shù)據(jù)庫的連接方法。
(2)理解系統(tǒng)的信息需求,進(jìn)行合理的數(shù)據(jù)庫設(shè)計(jì),建立各數(shù)據(jù)庫表。
(3)理解系統(tǒng)的功能需求,設(shè)計(jì)應(yīng)用軟件。結(jié)合Delphi 或VC++進(jìn)行系統(tǒng)界面
(窗體、菜單以及相應(yīng)控制按鈕)的設(shè)計(jì)、連接與操縱數(shù)據(jù)庫方案的設(shè)計(jì),編寫程序。
(4)系統(tǒng)運(yùn)行、調(diào)試并完善。
(5)撰寫設(shè)計(jì)報告。
第二篇:語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
1、課程設(shè)計(jì)的目的、任務(wù)
《匯編語言》課程設(shè)計(jì)對于鞏固匯編語言理論知識,加強(qiáng)學(xué)生的實(shí)際動手能力和提高學(xué)生綜合素質(zhì)十分必要。課程設(shè)計(jì)的目的主要是通過程序設(shè)計(jì)方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計(jì)的基本知識和基本方法,通過實(shí)際動手能力的培養(yǎng),進(jìn)一步熟悉匯編語言的結(jié)構(gòu)和使用方法,達(dá)到能獨(dú)立閱讀、編制和調(diào)試一定規(guī)模的匯編語言程序的水平。
2、軟件需求分析和設(shè)計(jì)
2.1學(xué)生成績管理系統(tǒng)是對學(xué)生成績的管理,其中包括以下幾個模塊:(1).插入一個數(shù)據(jù)(插入學(xué)生學(xué)號以及語數(shù)外三個成績)。(2)修改一個數(shù)據(jù)。(3)刪除學(xué)生成績數(shù)據(jù)。(4)查找學(xué)生成績。(5)查看學(xué)生成績的排名(6)查看學(xué)生成績分布(7)按esc鍵退出系統(tǒng)
2.2學(xué)生成績管理系統(tǒng)應(yīng)該包含以下信息:學(xué)號,語文成績,英語成績,數(shù)學(xué)成績。因此,系統(tǒng)應(yīng)該提供以下功能:(1)輸出顯示菜單。(2)輸入學(xué)生的成績(3)修改學(xué)生成績(4)刪除學(xué)生成績(5)查詢學(xué)生成績(6)顯示學(xué)生成績排名(7)顯示成績分布統(tǒng)計(jì)(8)按esc鍵退出系統(tǒng)
2.3依據(jù)程序的功能需求,該系統(tǒng)的功能結(jié)構(gòu)圖如下
系統(tǒng)功能結(jié)構(gòu)圖
2.4 程序流程圖:
主程序流程圖
查找學(xué)生成績
插入學(xué)生學(xué)號及成績
修改學(xué)生的成績
顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù)
3、程序?qū)崿F(xiàn)說明
3.1學(xué)生管理系統(tǒng)中各子程序如下:
(1).輸入全部學(xué)生學(xué)號以及語文,英語,數(shù)學(xué)三科的成績。子程序名:insert 子程序描述:該子程序?yàn)檩斎胱殖绦?。系統(tǒng)在開始的時候是沒有數(shù)據(jù)的,通過該子程序可以初始化系統(tǒng),將學(xué)生的學(xué)號及成績輸入系統(tǒng)。
代碼:
insert proc near;定義進(jìn)程子程序:插入學(xué)生,學(xué)號及 成績 call input;調(diào)用input add n,1 ret insert endp
(2).修改輸入的成績。子程序名:modify 子程序描述:通過子程序修改學(xué)生的成績 代碼:
modify proc near;定義進(jìn)程子程序:修改學(xué)生學(xué)號,成績 md1:output mess1;輸出mess1 shuru;調(diào)用宏shuru:二位數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找輸入的學(xué)生是否存在
je qq1_1;查到的話,就跳轉(zhuǎn)到qq1_1輸入修改的值,也就是重新輸入。;結(jié)果相等則跳轉(zhuǎn)到qq1_1 add si,1
cmp si,bx jbe md;小于等于則跳轉(zhuǎn)到md output mess;輸出mess jmp md1;不相等繼續(xù)輸入學(xué)號
qq1_1:;轉(zhuǎn)入修改的值重新輸入。mov di,si output mess2 output mess4 mov si,0 mov cx,3
qq3_1:shuruu;cmp dx,78h;
jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1]
分別輸入語文,英語,數(shù)學(xué)成績,并將其放 在緩沖區(qū)buf中 比較輸入的成績是否大于120,如果大于120的 話,那么重 新輸入成績 小于等于則轉(zhuǎn)移到qq2_1 輸出ts3 跳轉(zhuǎn)到qq1_1 輸出空格 將存入buf中的成績,分別賦值給存放對應(yīng)科 目的成績的數(shù)組
mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp
(3).刪除學(xué)生的成績。子程序名:delete 子程序描述:通過子程序刪除學(xué)生的成績 代碼:
de proc near;刪除某個學(xué)生的記錄 sc1:output mess1 shuru;調(diào)用宏shuru,接受輸入的學(xué)號 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查詢輸入學(xué)號的學(xué)生信息是否存在,不存在的話,重新輸入學(xué)號 je sc2;相等則轉(zhuǎn)移到sc2 add si,1 cmp si,bx jbe sc;小于等于則轉(zhuǎn)移到sc output mess;輸出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等則轉(zhuǎn)移到sc3 mov cx,bx
sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循環(huán)指令,執(zhí)行操作(cx)<--(cx)-1.若 cx!=0,跳轉(zhuǎn)到標(biāo)號sc處循環(huán)執(zhí)行;cx=0,則推出
循環(huán),執(zhí)行l(wèi)oop的下一條指令 sub n,1 sc3: ret de endp
(3).查詢學(xué)生的成績。子程序名:find 子程序描述:通過子程序查詢學(xué)生的成績 代碼:
find proc near;定義進(jìn)程子程序:查找學(xué)生成績 call sum;求學(xué)生的總成績 call ping;求學(xué)生的平均成績
bj1:output mess1;輸出mess1 shuru;二位數(shù)數(shù)據(jù)輸入 mov bl,n mov bh,0 mov al,dl
mov si,0
bj: cmp al,xh[si];將輸入的學(xué)號與輸入的學(xué)號相比,je i;存在的話,將此學(xué)生的成績輸出。je表示結(jié)果相
等則轉(zhuǎn)移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg
mov al,mat[si] cbw shuzii ax output bg;
mov al,pj[si] cbw
小于等于則轉(zhuǎn)移到bj 為二位數(shù)據(jù)輸出 輸出空格 將字節(jié)變?yōu)樽?/p>
為三位數(shù)據(jù)輸出。輸出空格 將字節(jié)變?yōu)樽?/p>
為三位數(shù)據(jù)輸出 輸出空格的字符串,用于與標(biāo)題欄對齊
shuzii ax output bg
mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii為三位數(shù)據(jù)輸出
output bg;輸出空格的字符串,用于與標(biāo)題欄對齊 shuzi mc[si];shuzi為二位數(shù)據(jù)輸出 ret find endp
(4).顯示學(xué)生的成績排名。子程序名:show 子程序描述:通過子程序顯示學(xué)生的成績排名 代碼:
show proc near;定義進(jìn)程子程序:顯示結(jié)果排名 call sum;調(diào)用宏sum call ping;調(diào)用宏ping call rank;調(diào)用宏rank call shuchu;調(diào)用宏shuchu ret show endp
3.2程序運(yùn)行抓圖:
主菜單
修改學(xué)生成績
刪除學(xué)生成績
顯示各個學(xué)科各分?jǐn)?shù)段的人數(shù)
4、程序總結(jié)
通過兩個星期的學(xué)習(xí),努力,終于完成了報告。系統(tǒng)可以很好的運(yùn)行。這兩個多星期的時間,幾乎每天不是在敲代碼,就是在看代碼,查書,上網(wǎng)。系統(tǒng)中用到了很多最近才學(xué)習(xí)的知識,比如宏,子程序。這些都使得代碼的運(yùn)行效率提高了,代碼行數(shù)減少了。系統(tǒng)還用到了bios的清屏功能。這些功能如果不是做課程設(shè)計(jì),我想我很難會接觸到這些知識。
由于自己對知識掌握的不是很牢固,其中也會碰到一些困難。每當(dāng)遇到問題的時候,我會先上網(wǎng)去查找,看看有沒有人提過這方面的問題?;ヂ?lián)網(wǎng)是強(qiáng)大的,大部分的問題通過網(wǎng)絡(luò)都可以解決。部分找不到的問題,我就去請教班里學(xué)得好的同學(xué)。他們對知識的掌握遠(yuǎn)超過我。這樣下來,很多問題都迎刃而解了。
課程設(shè)計(jì)是一個很好的掌握書本上知識的過程。平時上課之后,自己都不會想著去敲一些代碼聯(lián)系聯(lián)系。通過做課程設(shè)計(jì),將理論與實(shí)踐結(jié)合了起來,對知識的理解更加深入了。
第三篇:軟件工程課程設(shè)計(jì)之——學(xué)生成績管理系統(tǒng)
1.設(shè)計(jì)背景
隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)技術(shù)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。現(xiàn)在我國的教育機(jī)構(gòu)對學(xué)生成績管理還普遍停留在紙介質(zhì)的基礎(chǔ)上,這樣的機(jī)制已經(jīng)不能適應(yīng)時代的發(fā)展,因?yàn)樗速M(fèi)了許多人力和物力,在信息時代,這種傳統(tǒng)的管理方法必然被計(jì)算機(jī)為基礎(chǔ)的信息管理所取代。
通過調(diào)查,要求系統(tǒng)具有權(quán)限設(shè)置功能的登錄模塊,學(xué)生可以實(shí)現(xiàn)成績信息查詢功能。教務(wù)管理人員能夠?qū)崿F(xiàn)注冊新用戶,學(xué)生成績信息的查詢、錄入、刪除、修改、瀏覽、統(tǒng)計(jì)等。同時學(xué)院在教學(xué)這一部分主要是由教務(wù)處對課程、對學(xué)生、對學(xué)生成績進(jìn)行合理地安排以及統(tǒng)籌計(jì)劃,以及讓教務(wù)處在最短的時間段把學(xué)生的成績核算出來,提高教務(wù)處的辦事效率。同時,能夠隨時對學(xué)生、學(xué)生成績進(jìn)行各種查詢和統(tǒng)計(jì),以及很好地對系統(tǒng)進(jìn)行維護(hù)。此種學(xué)生成績管理系統(tǒng)提供了強(qiáng)大的學(xué)生成績管理管理功能,方便了系統(tǒng)管理員對學(xué)生成績等信息的添加、修改,打印等操作,同時一樣方面的學(xué)生可以對自己各科成績查詢,學(xué)習(xí)的交流,滿足了時代的需要。
2.設(shè)計(jì)方案
2.1總體設(shè)計(jì)
本系統(tǒng)是將現(xiàn)代化的計(jì)算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計(jì)完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過程的計(jì)算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標(biāo): 1.系統(tǒng)應(yīng)具有實(shí)用性、可靠性和適用性,同時注意到先進(jìn)性。2.對各個數(shù)據(jù)庫進(jìn)行動態(tài)管理,防止混亂。
3.能夠按照用戶選擇的不同的條件進(jìn)行簡單查詢和復(fù)合查詢。4.能夠?qū)Σ樵兘Y(jié)果進(jìn)行分類匯總,實(shí)現(xiàn)報表打印。5.注意數(shù)據(jù)的安全性,具有數(shù)據(jù)備份和恢復(fù)的功能。6.方便用戶的操作,盡量減少用戶的操作。
2.2模塊設(shè)計(jì)
本系統(tǒng)主要實(shí)現(xiàn)以下功能:①添加學(xué)生成績; ②刪除學(xué)生成績; ③查詢學(xué)生成績;④班級創(chuàng)建或刪除; ⑤科目調(diào)整和刪除 具體要求為:
a.添加學(xué)生成績:輸入要添加的學(xué)生的學(xué)號、姓名、課程成績等信息,且學(xué)號字段不能為空,確定則錄入取消則放棄該操作。
b .刪除功能:輸入要刪除的學(xué)生的學(xué)號,且必須輸入密碼驗(yàn)證,確定則執(zhí)行該操作修改該學(xué)生信息,取消則放棄該操作。
c.查詢功能: 查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關(guān)信息可進(jìn)行查找,應(yīng)盡量使操作簡化,節(jié)省使用者的時間。
d.班級創(chuàng)建:選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息。
e.科目調(diào)整:選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項(xiàng)科目信息。
3.方案實(shí)施
3.1成績管理各模塊功能介紹
添加學(xué)生成績,輸入要添加的學(xué)生的學(xué)號、姓名、課程成績等信息,且學(xué)號字段不能為空,確定則錄入取消則放棄該操作。刪除學(xué)生成績,輸入要刪除的學(xué)生的學(xué)號,且必須輸入密碼驗(yàn)證,確定則執(zhí)行該操作修改該學(xué)生信息,取消則放棄該操作。查詢學(xué)生成績,查詢功能是本系統(tǒng)的一個重要功能,按照科目成績的相關(guān)信息可進(jìn)行查找,應(yīng)盡量使操作簡化,節(jié)省使用者的時間。班級創(chuàng)建或刪除,選擇要創(chuàng)建的班級名稱,或要刪除班級的名稱,單擊確定創(chuàng)建成功,選擇刪除將刪除該班級信息??颇空{(diào)整和刪除,選擇要調(diào)整的科目名稱、班級名稱,或要刪除科目和班級的名稱,單擊增加調(diào)整成功,選擇刪除將刪除該班級的該項(xiàng)科目信息。
3.2成績管理模塊功能具體實(shí)現(xiàn)
具體實(shí)現(xiàn)功能如下:添加學(xué)生成績、刪除學(xué)生成績、查詢學(xué)生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等??颇抗芾碇锌颇刻砑雍涂颇縿h除的部分代碼如下:
科目管理
科目添加
ReturnBook()import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent;
//extends JFrame class ReturnBook
implements ActionListener {
JFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;//按鈕:確定、取消、JLabel label;
//標(biāo)簽
JTextField tf1,tf2;
//定義文本框
JLabel label1,label2,label3,label4;String stuName;
ReturnBook()
{
f3=new JFrame();cp=f3.getContentPane();// 初始化面板、按鈕、標(biāo)簽、文本框
jp1=new JPanel();
jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();//-----------------jbt1=new JButton(“確定”);
jbt2=new JButton(“取消”);
//-----------------label=new JLabel(“ size='4'>
學(xué)生科目添加
//-----------------tf1=new JTextField(20);tf2=new JTextField(20);
// tf6=new JTextField(20);//-----------------//布局,添加控件
jp1.add(jbt1);jp1.add(jbt2);
stuName=tf2.getText();
jp1.add(new JLabel(“您好”+stuName+“歡迎登陸學(xué)生信息系統(tǒng)”));
JPanel jpanel=new JPanel();jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(pp4,“West”);cp.add(pp2,“Center”);
cp.add(pp3,“South”);
cp.add(jpanel,“North”);JPanel pp2=new JPanel(new GridLayout(5,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(5,1));pp4.add(new JLabel(“學(xué)號”,SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel(“科目”,SwingConstants.CENTER));pp2.add(tf2);
pp3.add(jbt1);pp3.add(jbt2);cp.add(jpane4,“East”);
//-----------------
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得顯示器窗口的寬度*/ int y=screen.height;f3.setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/*顯示在窗口中央*/
/*取得顯示器窗口的高度*/
f3.setVisible(true);
//------------------
jbt1.addActionListener(this);//注冊監(jiān)聽器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} System.exit(0);} });*/ //-----------------
public void insertRecord(){
if(tf1.getText().equals(“")||tf2.getText().equals(”“))
{ JOptionPane.showMessageDialog(f3,”請?zhí)顚憣W(xué)生信息“);return;}
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{ String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直接
Connection con=DriverManager.getConnection(url);Statement sql;
String s=”insert into course values('“+tf1.getText()+”','“+tf2.getText()+”');“;
//查詢輸入的學(xué)號是否在數(shù)據(jù)庫中存在 使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
String query=”select * from course where 學(xué)號='“+tf1.getText()+”'“;
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查詢結(jié)果集 boolean moreRecords=rs.next();//判斷結(jié)果集是否有數(shù)據(jù)
if(moreRecords)
{
JOptionPane.showMessageDialog(f3,”學(xué)號已經(jīng)被使用,請重新輸入“);
con.close();tf1.setText(”“);return;
}
int insert=sql.executeUpdate(s);if(insert==1)
{ JOptionPane.showMessageDialog(null,”學(xué)生信息錄入成功!“);
tf1.setText(”“);tf2.setText(”“);
}
}catch(SQLException g)
{
System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());
}
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals(”確定“))
{
insertRecord();
}
else if(cmd.equals(”取消“))
}
f3.hide();
public static void main(String []arg){
}
} 科目刪除
BorrowBook()
import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;
class BorrowBook implements ActionListener {
JFrame f;
Container cp;JPanel jpS,jpanelWest;JButton jbt1,jbt2,jbt3,jbt4;//按鈕,查詢、取消、修改 JLabel label,L;
//標(biāo)簽:請輸入姓名學(xué)號 JTextField tf;
//定義文人框
StudentIn a=new StudentIn();JTable table;//用來接收數(shù)據(jù)庫中返回的信息
Object columnName[]={”學(xué)號“,”科目“};
Object ar[][] =new Object[80][6];String sno;String count=”0“;
BorrowBook()
{
f=new JFrame();cp=f.getContentPane();// 初始化面板、按鈕、標(biāo)簽、文人框 jpS=new JPanel();
jpanelWest=new JPanel();
//-----------------jbt1=new JButton(”查詢“);
jbt2=new JButton(”刪除“);
jbt3=new JButton(”錄入“);
jbt4=new JButton(”關(guān)閉“);
//-----------------label=new JLabel(” size='4'> 請 輸 入 科 目 :
table=new JTable(ar,columnName);//ar存放表中的數(shù)據(jù),columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//-----------------tf=new JTextField(18);
//-----------------
//
//-----------------//布局,添加控件
jpS.add(jbt1);jpS.add(jbt2);jpS.add(jbt3);jpS.add(jbt4);
JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,”North“);JPanel jp=new JPanel();//jp.add(scrollpane);JPanel p=new JPanel();//用來放兩個表 p.setLayout(new BorderLayout());
p.add(L,”North“);p.add(scrollpane);
cp.add(pp4,”West“);cp.add(p,”Center“);
cp.add(jpS,”South“);
cp.add(jpE,”East“);
//-----------------Dimension screen=kit.getScreenSize();int x=screen.width;
/*取得顯示器窗口的寬度*/ int y=screen.height;f.setSize(400,330);
/*取得顯示器窗口的高度*/
Toolkit kit=Toolkit.getDefaultToolkit();int xcenter=(x-350)/2;int ycenter=(y-330)/2;f.setLocation(xcenter,ycenter);/*顯示在窗口中央*/
f.setVisible(true);
//------------------
jbt1.addActionListener(this);//注冊監(jiān)聽器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jbt4.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
});*/ public void windowClosing(WindowEvent e){ System.exit(0);} } //-----------------int i=0;
public void showRecord(String ql){
while(i>=0)
{
ar[i][0]=”“;ar[i][1]=”“;
i--;} i=0;
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{
String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直
Connection con=DriverManager.getConnection(url);Statement sql;
String s=”select * from course where 科目 ='“+ql +”'“;
ResultSet rs=sql.executeQuery(s);
接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
sql=con.createStatement();
while(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
ar[i][0]=bname;ar[i][1]=bno;i++;
}
count=”“+i+”“;
L.setText(”“+count+”人“);
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{ System.out.println(”E Code“+g.getErrorCode());
System.out.println(”E M“+g.getMessage());
} }
public void deleteRecord(int index)
{
try{
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);
}catch(ClassNotFoundException e){System.out.println(”加載驅(qū)動程序失敗!“);}
try{
String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=Book.mdb“;//直接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件
Connection con=DriverManager.getConnection(url);Statement sql;
String ql=(String)(ar[index][0]);
String s=”delete * from grade where 學(xué)號 ='“+ql +”'“;
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==0)
{JOptionPane.showMessageDialog(null,”刪除成功!“,”信息“, JOptionPane.YES_NO_OPTION);}
con.close();
f.repaint();
}catch(SQLException g)
{
System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());
}
}
public void actionPerformed(ActionEvent e)
{
String remember=”“;String ql=”“;
String cmd=e.getActionCommand();
if(cmd.equals(”查詢“))
{
ql=tf.getText().trim();remember=ql;
showRecord(ql);
}
// if(cmd.equals(”刪除“))
// {
// new BorrowIn();
//}
//**************
if(cmd.equals(”刪除“))
{
int index=table.getSelectedRow();
if(index==-1)
JOptionPane.showMessageDialog(null,”請選定要刪除的姓名“,”輸入錯誤“, JOptionPane.YES_NO_OPTION);
else{
BorrowIn k=new BorrowIn();
k.setData(ar[index][0].toString(),ar[index][1].toString());
}
}
//**************
//if(cmd.equals(”還書“))
//new ReturnBook();
if(cmd.equals(”關(guān)閉"))
//
f.setVisible(false);
f.dispose();
} public static void main(String []arg){
}
}
BorrowBook a=new BorrowBook();
4.結(jié)果與結(jié)論
結(jié)果:本設(shè)計(jì)完成了一個具有添加學(xué)生成績、刪除學(xué)生成績、查詢學(xué)生成績、班級創(chuàng)建或刪除、科目調(diào)整和刪除等功能的學(xué)生成績管理系統(tǒng)。
結(jié)論:本系統(tǒng)為學(xué)生成績管理系統(tǒng),主要提供方便高效的管理功能以及網(wǎng)上的信息查閱平臺,學(xué)生可以查閱相關(guān)的成績和基本信息,管理員可以管理所有信息。包括瀏覽所有用戶信息以及相關(guān)的成績信息,實(shí)現(xiàn)添加,查詢,或刪除學(xué)生成績和信息,并且能夠?qū)崿F(xiàn)班級創(chuàng)建或刪除和科目調(diào)整和刪除等功能。
論文首先介紹了本系統(tǒng)開發(fā)的背景研究意義和開發(fā)環(huán)境,在進(jìn)行了可行性需求分析后對本系統(tǒng)進(jìn)行了概要設(shè)計(jì),最后利用JAVA開發(fā)環(huán)境實(shí)現(xiàn)了系統(tǒng)設(shè)計(jì)時所確定的幾種功能,并進(jìn)行了調(diào)試和運(yùn)行,基本符合了學(xué)生成績管理系統(tǒng)的要求。
但是,由于一些技術(shù)和設(shè)備所限,本系統(tǒng)存在一些不足之處,有待進(jìn)一步改進(jìn)和完善,在開發(fā)過程中遇到了以下問題:
(1)對后臺數(shù)據(jù)庫中數(shù)據(jù)的日常維護(hù),包括自動清理過時數(shù)據(jù);
(2)程序中錯誤處理和輸入控制不夠全面,可能導(dǎo)致輸入無效引發(fā)錯誤;
(3)對補(bǔ)考學(xué)生的處理。
總之此次設(shè)計(jì)使我受益匪淺,雖然過程中有許多不盡人意的地方,但通過大家的努力最終還是把問題給攻克了。在此次設(shè)計(jì)中學(xué)到的知識對我終生受用。
5.收獲與致謝
軟件工程設(shè)計(jì)是軟件工程實(shí)踐教學(xué)的重要組成部分,合理的組織,精心的準(zhǔn)備,加上有序的實(shí)施,使我們的實(shí)踐能力得到很大的提高,同時培養(yǎng)了我們的團(tuán)隊(duì)合作精神,增強(qiáng)了我們學(xué)習(xí)的自信心,并為我們畢業(yè)后從事相關(guān)工作打下良好基礎(chǔ)。
在此次的設(shè)計(jì)中我不僅利用了自己的所學(xué),而且還學(xué)到了許多新的知識,不知不覺中我們的設(shè)計(jì)已經(jīng)接近了尾聲,在這里非常感謝我們的指導(dǎo)老師王瑞平老師,感謝她給我們的設(shè)計(jì)所提出的很多很多好的建議和意見,讓我從中獲益匪淺,同時也幫助我們圓滿的完成了課程設(shè)計(jì)。
最后我要感謝我們組的全體人員,沒有大家的幫助和鼓勵,我也不可能完成這么多的設(shè)計(jì),也不可能學(xué)到這麼多有用的知識。
謝謝同學(xué)們對我的幫助,同時也謝謝老師對我們的輔導(dǎo)。沒有大家的共同努力就沒有我們今天課程設(shè)計(jì)的圓滿完成。向我摯愛的王瑞平老師以及可愛的同學(xué)們送上我最崇高的敬意!謝謝你們!
6.參考文獻(xiàn)
[1]王 晟.《Visual Basic.NET 數(shù)據(jù)庫開發(fā)經(jīng)典案例解析》.清華大學(xué)出版社.2005 [2]馬朝暉等.Java教程.(第4版)[M].北京:人民郵電出版社.2006 [3] 張白一,崔尚森.面向?qū)ο蟪绦蛟O(shè)計(jì)——Java[M].西安:電子科技大學(xué)出版社.2004 [4] 袁世鷹.微機(jī)教務(wù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[P].北京:開明出版社.2001
第四篇:VB學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報告
VB程序設(shè)計(jì) 課程設(shè)計(jì)報告
班 級:***** 姓 名:***** 序 號:***** 指導(dǎo)老師:*****
目錄
1、課設(shè)的目的..............................................................................................................................2
2、界面設(shè)計(jì)和功能設(shè)計(jì)............................................................................................................2
3、系統(tǒng)功能實(shí)施...................................................................................................................11
4、總結(jié)........................................................................................................................................30
一、課設(shè)的目的
1.本次課程設(shè)計(jì)提高了我們的實(shí)踐動手能力
5.通過本次課程設(shè)計(jì),熟悉用戶界面的設(shè)計(jì)
2.通過本次課程設(shè)計(jì),進(jìn)一步理解計(jì)算機(jī)程序設(shè)計(jì)的思路與方法
3.本次課程設(shè)計(jì)之后,達(dá)到能熟練使用各種常見的VB控件,理解面向?qū)ο蟮乃枷?4.經(jīng)過本次課程設(shè)計(jì),我們進(jìn)一步熟練運(yùn)用VB的語言元素和流程控制語句
6.經(jīng)過本次課程設(shè)計(jì),熟悉數(shù)據(jù)訪問控件ADO及相關(guān)對象的使用,能基于ADO控件實(shí)現(xiàn)Access的數(shù)據(jù)訪問與操縱
二、界面設(shè)計(jì)和功能設(shè)計(jì)
1、下面的界面為用戶登陸界面:
用戶名和密碼均已設(shè)定,用戶名為zgzy,密碼為11201,只有輸入正確,然后點(diǎn)擊“登陸“按鈕才能進(jìn)入主界面。如果用戶名或密碼三次輸入錯誤,則系統(tǒng)自動退出。當(dāng)你點(diǎn)擊“退出“按鈕時,彈出一個對話窗,界面如下:
在對話框上點(diǎn)擊“是”按鈕,則退出系統(tǒng),如果點(diǎn)擊“否”,則該界面不變。
2、當(dāng)用戶名和密碼均輸入正確,點(diǎn)擊“登陸”按鈕,進(jìn)入主界面——“學(xué)生成績管理系統(tǒng)”界面,該界面是其他子界面的入口,界面如下:
3、進(jìn)入主界面后,點(diǎn)擊“學(xué)生管理(刪除添加)”,進(jìn)入學(xué)生管理界面,界面如下
該界面上有一個ADO控件,用于連接數(shù)據(jù)庫,當(dāng)用戶在六個文本框中輸入數(shù)據(jù)時,點(diǎn)擊“添加“按鈕,可以將數(shù)據(jù)錄入到數(shù)據(jù)庫中,如果此時點(diǎn)擊”刪除“按鈕,則剛才輸入的數(shù)據(jù)就會被刪除,點(diǎn)擊”保存“按鈕時,輸入的數(shù)據(jù)就會自動保存在數(shù)據(jù)庫里,點(diǎn)擊”返回主窗體“按鈕,該窗體消失,主窗體出現(xiàn)。
4、在主界面點(diǎn)擊“各科成績查詢“按鈕,出現(xiàn)如下界面:
該界面有一個ADO控件,用來連接數(shù)據(jù)庫,還有一個DataGrid控件,用來顯示學(xué)生成績的查詢結(jié)果,當(dāng)用戶選擇了要查詢的科目和條件后,點(diǎn)擊“查詢“按鈕,在DataGrid控件上就會顯示出所查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
5、在主界面點(diǎn)擊“姓名查詢“按鈕后,會出現(xiàn)如下界面:
該界面與上一界面相似,在文本框輸入要查詢的姓名后,點(diǎn)擊“查詢“按鈕,就會在DataGrid控件上顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
5、在主界面點(diǎn)擊“班級查詢“按鈕后,會出現(xiàn)如下界面:
在文版框中輸入所要查詢的班級,DataGrid控件上就會顯示所要查詢的結(jié)果。下面為輸入條件后查詢的結(jié)果——
6、在主界面上點(diǎn)擊“各科成績段查詢“按鈕后,會出現(xiàn)如下界面:
點(diǎn)擊“計(jì)算分?jǐn)?shù)段統(tǒng)計(jì)“按鈕后,就會出現(xiàn)所要查詢的結(jié)果。下面為查詢的結(jié)果——
7、在主界面點(diǎn)擊“計(jì)算總分“按鈕后,出現(xiàn)如下界面:
點(diǎn)擊“清除總分”按鈕后,出現(xiàn)如下界面
8、在主界面點(diǎn)擊“排名“按鈕后,出現(xiàn)如下界面:
在該界面上點(diǎn)擊“排名“按鈕后,在DataGrid控件上會顯示出按成績高低排名的結(jié)果,點(diǎn)擊”清除排名“按鈕后,剛才結(jié)果消失,顯示原來結(jié)果。下面為所現(xiàn)實(shí)的結(jié)果——
9、在主界面點(diǎn)擊“統(tǒng)計(jì)直方圖“按鈕后,出現(xiàn)如下界面:
在該界面點(diǎn)擊各個按鈕后,就會出現(xiàn)與之相關(guān)科目的成績統(tǒng)計(jì)直方圖,下面為查詢的結(jié)果——
10、在主界面點(diǎn)擊“優(yōu)等生“按鈕后,出現(xiàn)如下界面:
點(diǎn)擊按鈕查詢后,結(jié)果就會在界面上顯示出來。下面為所查詢的結(jié)果——
三、系統(tǒng)功能實(shí)施
以上展示的是系統(tǒng)的所有界面,怎樣才能讓這所有的功能實(shí)現(xiàn)呢?數(shù)據(jù)庫和ADO控件的使用便是其中的關(guān)鍵。
1、建立如下數(shù)據(jù)庫
(學(xué)號、姓名、班級、英語、數(shù)學(xué)、VB、總分、排名)
2、建立如下圖的所有界面:
3、ADO控件和DataGrid控件以及數(shù)據(jù)庫的連接步驟:(這一步在設(shè)計(jì)界面的同時完成)
(1)、如何加載ADO控件: 步驟1:
步驟2:
步驟3:
各個界面的ADO控件如何連接數(shù)據(jù)庫(分兩步):
步驟1:
如下面界面中的5個步驟
步驟2:
選中ADO控件Adodc1,點(diǎn)擊鼠標(biāo)右鍵選擇屬性,然后界面設(shè)置如下:
控件綁定數(shù)據(jù)庫的字段操作說明:
屬性設(shè)置說明:下面以學(xué)號為例,姓名、班級等都可參考此。將學(xué)號對應(yīng)的文本框Text1連接Adodc1顯示數(shù)據(jù)庫中的學(xué)號,需要設(shè)置DataSource和DataField兩個屬性,首先選中Text1文本框,并進(jìn)行下面的兩步操作,即可綁定數(shù)據(jù)庫的學(xué)號字段。
設(shè)置DataSource:
設(shè)置DataField:
(2)、如何加載DataGrid控件 控件DataGrid,可以實(shí)現(xiàn)數(shù)據(jù)的批量處理,該控件在控件庫Microsoft DataGrid Control 6.0中。
說明:DataGrid控件屬性設(shè)置
以下為各個界面所對應(yīng)的代碼——
該界面代碼如下:
Private Sub Command1_Click()If Text1.Text = “zgzy” And Text2.Text = “11201” Then Form1.Show Unload me Else MsgBox “用戶名或密碼錯誤,請重新輸入”, vbMsgBoxSetForeground, “系統(tǒng)提示!” End If
Static t As Integer t = t + 1 If t >= 3 Then End End Sub
Private Sub Command2_Click()a = MsgBox(“確定要退出本系統(tǒng)嗎?”, 3 + 32 + 256, “系統(tǒng)提示!”)
If a = 6 Then Unload Me End If End Sub
該界面代碼如下:
Private Sub Command1_Click()xsglfrm.Show End Sub Private Sub Command10_Click()ydsfrm.Show End Sub Private Sub Command3_Click()jszffrm.Show End Sub Private Sub Command4_Click()
pmfrm.Show End Sub Private Sub Command5_Click()
zftjtfrm.Show End Sub Private Sub Command6_Click()
cjcxfrm.Show End Sub Private Sub Command7_Click()
xmcxfrm.Show End Sub Private Sub Command8_Click()
bjcxfrm.Show End Sub Private Sub Command9_Click()
gkcjfrm.Show End Sub
該界面代碼如下:
Private Sub Command1_Click()Me.Adodc1.Recordset.AddNew End Sub
Private Sub Command2_Click()If Me.Adodc1.Recordset.RecordCount = 0 Or Me.Adodc1.Recordset.EOF Then
Exit Sub End If Me.Adodc1.Recordset.Delete Me.Adodc1.Recordset.MoveNext If Me.Adodc1.Recordset.RecordCount = 0 Then
Exit Sub End If If Me.Adodc1.Recordset.EOF Then Me.Adodc1.Recordset.MoveLast End Sub
Private Sub Command4_Click()Me.Adodc1.Recordset.Save End Sub
Private Sub Command5_Click()
Unload Me
mainfrm.Show End Sub
該界面代碼如下: Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “ ” + kc_條件 Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc_條件 = “>=92” kc = “vb” End Sub
Private Sub Option1_Click()
kc = “VB” End Sub Private Sub Option2_Click()kc = “math” End Sub Private Sub Option3_Click()kc = “English” End Sub
該界面代碼如下:
Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_條件 + “'” Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc = “name” End Sub
該界面代碼如下: Dim kc_條件 As String Dim kc As String Private Sub Command1_Click()kc_條件 = Me.Text1 Me.Adodc1.RecordSource = “select * from stu where ” + kc + “='” + kc_條件 + “'” Me.Adodc1.Refresh End Sub
Private Sub Form_Load()kc = “class” End Sub
該界面代碼如下:
Private Sub Command1_Click()
Dim vb_A As Integer
Dim vb_B As Integer
Dim vb_C As Integer
Dim vb_D As Integer
Dim vb_E As Integer
Dim Math_A As Integer
Dim Math_B As Integer
Dim Math_C As Integer
Dim Math_D As Integer
Dim Math_E As Integer
Dim English_A As Integer
Dim English_B As Integer
Dim English_C As Integer
Dim English_D As Integer
Dim English_E As Integer
Me.Adodc1.RecordSource = “select * from stu where vb>=90”
Me.Adodc1.Refresh
vb_A = Me.Adodc1.Recordset.RecordCount
Me.Text1 = vb_A
Me.Adodc1.RecordSource = “select * from stu where vb>=80 and vb<90”
Me.Adodc1.Refresh
vb_B = Me.Adodc1.Recordset.RecordCount
Me.Text2 = vb_B
Me.Adodc1.RecordSource = “select * from stu where vb>=70 and vb<80”
Me.Adodc1.Refresh
vb_C = Me.Adodc1.Recordset.RecordCount
Me.Text3 = vb_C
Me.Adodc1.RecordSource = “select * from stu where vb>=60”
Me.Adodc1.Refresh
vb_D = Me.Adodc1.Recordset.RecordCount
Me.Text4 = vb_D
Me.Adodc1.RecordSource = “select * from stu where vb<60”
Me.Adodc1.Refresh
vb_B = Me.Adodc1.Recordset.RecordCount
Me.Text5 = vb_E
Me.Adodc1.RecordSource = “select * from stu where math>=90”
Me.Adodc1.Refresh
Math_A = Me.Adodc1.Recordset.RecordCount
Me.Text6 = Math_A
Me.Adodc1.RecordSource = “select * from stu where math>=80 and math<90”
Me.Adodc1.Refresh
Math_B = Me.Adodc1.Recordset.RecordCount
Me.Text7 = Math_B
Me.Adodc1.RecordSource = “select * from stu where math>=70 and math<80”
Me.Adodc1.Refresh
Math_C = Me.Adodc1.Recordset.RecordCount
Me.Text8 = Math_C
Me.Adodc1.RecordSource = “select * from stu where math>=60 ”
Me.Adodc1.Refresh
Math_D = Me.Adodc1.Recordset.RecordCount
Me.Text9 = Math_D
Me.Adodc1.RecordSource = “select * from stu where math<60”
Me.Adodc1.Refresh
Math_E = Me.Adodc1.Recordset.RecordCount
Me.Text10 = Math_E
Me.Adodc1.RecordSource = “select * from stu where english>=90”
Me.Adodc1.Refresh
English_A = Me.Adodc1.Recordset.RecordCount
Me.Text11 = English_A
Me.Adodc1.RecordSource = “select * from stu where english>=80 and english<90”
Me.Adodc1.Refresh
English_B = Me.Adodc1.Recordset.RecordCount
Me.Text12 = English_B
Me.Adodc1.RecordSource = “select * from stu where english>=70 and english<80”
Me.Adodc1.Refresh
English_C = Me.Adodc1.Recordset.RecordCount
Me.Text13 = English_C
Me.Adodc1.RecordSource = “select * from stu where english>=60”
Me.Adodc1.Refresh
English_D = Me.Adodc1.Recordset.RecordCount
Me.Text14 = English_D
Me.Adodc1.RecordSource = “select * from stu where english<60”
Me.Adodc1.Refresh
English_E = Me.Adodc1.Recordset.RecordCount
Me.Text15 = English_E End Sub
Private Sub Form_Load()
Text1.Text = “"
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
Text7.Text = ”“
Text8.Text = ”“
Text10.Text = ”“
Text11.Text = ”“
Text12.Text = ”“
Text13.Text = ”“
Text14.Text = ”“
Text15.Text = ”“ End Sub
代碼如下
Private Sub Command1_Click()'計(jì)算總分 Dim vb As Integer
Dim math As Integer Dim english As Integer Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
vb = Me.Adodc1.Recordset.Fields(”vb“).Value
math = Me.Adodc1.Recordset.Fields(”math“).Value
english = Me.Adodc1.Recordset.Fields(”english“).Value
Me.Adodc1.Recordset.Fields(”total“).Value = vb + math + english
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
Private Sub Command2_Click()'清除總分 Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”total“).Value = Null
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
該界面代碼如下:
Private Sub Command1_Click()Me.Adodc1.RecordSource = ”select * from stu order by total desc“ Me.Adodc1.Refresh Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”mc“).Value = i
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext
Next i End Sub
Private Sub Command2_Click()Me.Adodc1.Recordset.MoveFirst For i = 1 To Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields(”mc“).Value = Null
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext Next i End Sub
該界面代碼如下:
Private Sub Command1_Click()
Me.Adodc1.Refresh
'填充表格數(shù)據(jù)
MSChart1.RowCount = 1
MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
For lngI = 1 To Me.Adodc1.Recordset.RecordCount
MSChart1.Column = lngI
'用Data屬性向MSChart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)
MSChart1.Data = Val(Adodc1.Recordset.Fields(”vb“).Value)
MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value
Adodc1.Recordset.MoveNext
Next lngI
MSChart1.RowLabel = ”VB成績直方圖“ End Sub
Private Sub Command2_Click()Me.Adodc1.Refresh
'填充表格數(shù)據(jù)
MSChart1.RowCount = 1
MSChart1.ColumnCount = Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
For lngI = 1 To Me.Adodc1.Recordset.RecordCount
MSChart1.Column = lngI
'用Data屬性向MSChart數(shù)據(jù)網(wǎng)格填充數(shù)據(jù)
MSChart1.Data = Val(Adodc1.Recordset.Fields(”math“).Value)
MSChart1.ColumnLabel = Adodc1.Recordset.Fields(”name“).Value
Adodc1.Recordset.MoveNext
Next lngI
MSChart1.RowLabel = ”Math成績直方圖“ End Sub
該界面代碼如下
Private Sub Command1_Click()Dim vb As Integer Dim math As Integer Dim english As Integer
Me.Adodc1.RecordSource = ”select * from stu where((math+english+vb)/3>=90)or((math+english+vb)/3>=85 and(math=100 or english=100 or vb=100))or((vb+english+math)/3>=85 and((vb>=95 and english >=95)or(english>=95 and math>=95)or(math>=95 and vb>=95)))and(mc<=3)and(vb>=60 and english>=60 and math>=60)" Me.Adodc1.Refresh End Sub
四、總結(jié)和體會
經(jīng)過好幾天的努力我的課程設(shè)計(jì)終于完成了。在沒有做課程設(shè)計(jì)以前覺得課程設(shè)計(jì)好難,我可能做不了,但是通過這次做課程設(shè)計(jì)發(fā)現(xiàn)自己錯了。課程設(shè)計(jì)不僅是對前面所學(xué)知識的一種檢驗(yàn),而且也是對自己能力的一種提高,它并不可怕。通過這次課程設(shè)計(jì)使我明白了自己原來知識還比較欠缺,自己要學(xué)習(xí)的東西還太多,以前上課沒怎么認(rèn)真聽,現(xiàn)在知道它重要了,幸好為時不晚,我以后要更加的努力學(xué)好vb。在這次課程設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學(xué)。此外,還得出一個結(jié)論:世上無難事,只怕有心人。
在設(shè)計(jì)過程中,我通過查閱有關(guān)資料,與同學(xué)交流經(jīng)驗(yàn)和自學(xué)等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設(shè)計(jì)中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計(jì)做的也不太好,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次課程設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。
第五篇:C#學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)剖析
目錄
一、設(shè)計(jì)目的.............................................1
二、需求分析.............................................2 2.1系統(tǒng)需求簡介.......................................2 2.1.1系統(tǒng)目標(biāo)......................................2 2.1.2功能需求分析..................................2 2.1.3性能需求分析..................................2 2.2系統(tǒng)業(yè)務(wù)功能分析...................................2 2.2.1具體分析有兩個角色:老師和學(xué)生................3 2.2.2流程圖.......................................3
三、模塊分析及設(shè)計(jì).......................................3
四、數(shù)據(jù)庫設(shè)計(jì)...........................................4 4.1數(shù)據(jù)字典..........................................4 4.1.1數(shù)據(jù)流.......................................4 4.1.2 數(shù)據(jù)存儲.....................................4 4.2 E-R圖...........................................5 4.3系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)...................................6
五、設(shè)計(jì)過程及要點(diǎn).......................................9 5.1數(shù)據(jù)庫及窗體設(shè)計(jì)...................................9 5.2 主要代碼........................................11
六、設(shè)計(jì)總結(jié)............................................12
七、參考資料............................................12
一、設(shè)計(jì)目的
為了提高高校學(xué)生成績信息的管理效率,方便學(xué)生和教師對學(xué)生成績信息進(jìn)行查詢、方便學(xué)校里面管理員去管理和查詢學(xué)生信息,建立一個學(xué)生成績管理系統(tǒng),使學(xué)生信息管理工作規(guī)范化,系統(tǒng)化,程序化,避免學(xué)生成績管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時、準(zhǔn)確、有效的查詢和修改學(xué)生信息是必須而且十分迫切的工作。本次課程設(shè)計(jì)題目為《學(xué)生成績管理系統(tǒng)》,涉及成績管理系統(tǒng)的登錄界面、老師對學(xué)生成績的查詢、學(xué)生對學(xué)生成績的查詢、以及老師對學(xué)生成績的增刪改查分析統(tǒng)計(jì)等內(nèi)容。本功能實(shí)現(xiàn)對學(xué)生信息、教師信息情況信息的管理和統(tǒng)計(jì)、課程信息和成績信息查看及維護(hù)。
本課程設(shè)計(jì)的目的是使學(xué)生能熟練掌握簡單的簡單Windows窗體應(yīng)用程序的設(shè)計(jì)和數(shù)據(jù)庫的應(yīng)用,希望通過本次課程設(shè)計(jì)鍛煉學(xué)生使用C#語言解決實(shí)際問題的能力。本系統(tǒng)后臺數(shù)據(jù)庫采用Microsoft SQL Server 數(shù)據(jù)庫,該數(shù)據(jù)庫系統(tǒng)在安全性、準(zhǔn)確性和運(yùn)行速度方面有絕對的優(yōu)勢,并且處理數(shù)據(jù)量大,效率高;前臺采用Microsoft 公司的Visual Studio 2008作為主要開發(fā)工具,可與SQL Server 2005數(shù)據(jù)庫無縫鏈接。本報告詳細(xì)的介紹了學(xué)生信息管理系統(tǒng)的開發(fā)過程,主要涉及到的工作如下:設(shè)計(jì)目的、需求分析、模塊分析及設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、制作過程及要點(diǎn)、設(shè)計(jì)總結(jié)。
二、需求分析
2.1系統(tǒng)需求簡介
2.1.1系統(tǒng)目標(biāo)
根據(jù)查詢條件實(shí)現(xiàn)學(xué)生信息的查詢 學(xué)生選課信息查詢、成績信息的查詢
(3)學(xué)生信息、課程信息、成績信息的增加、刪除、修改(4)對基本信息完成增加、刪除、修改時,需注意表與表之間的關(guān)聯(lián)
2.1.2功能需求分析
本系統(tǒng)的功能需求分析如下:
學(xué)生信息查詢:學(xué)生可以根據(jù)學(xué)號、姓名、專業(yè)進(jìn)行查詢.學(xué)生信息管理:主要是用于學(xué)生信息更新、插入、刪除; 學(xué)生成績錄入:用于學(xué)生成績管理,錄入學(xué)生成績,也可以更新。
2.1.3性能需求分析
(1)登錄、用戶界面需求:簡潔、易懂、易用、友好的用戶界面。(2)安全保密性需求:只有憑借用戶名和密碼登陸系統(tǒng),才能進(jìn)行信息的管 理等。
2.2系統(tǒng)業(yè)務(wù)功能分析
2.2.1具體分析有兩個角色:老師和學(xué)生
學(xué)生只能有查詢的權(quán)利,其中包括按學(xué)號查詢,按姓名查詢和按課程號查詢;
而老師則有查詢以及對學(xué)生成績增刪改查分析統(tǒng)計(jì)功能,而分析主要是分析每一課程的及格人數(shù),不及格人數(shù)和及格率等,統(tǒng)計(jì)則是統(tǒng)計(jì)各個班級和課程成績的升序排序等。
2.2.2流程圖
圖一 總流程圖
三、模塊分析及設(shè)計(jì)
《學(xué)生成績管理系統(tǒng)》包括 5個模塊:登錄及主界面,成績添加,成績查詢,成績增刪改,成績分析與統(tǒng)計(jì)。登陸及主界面:用戶人員在登錄界面中輸入用戶名與密碼。通過用戶名與數(shù)據(jù)庫里的用戶表相比配,將學(xué)生與教師區(qū)分開,二者各自進(jìn)入自己的頁面。二者擁有各自權(quán)限,分別擁有不同的功能。
成績添加:主要實(shí)現(xiàn)學(xué)生成績的添加功能,將學(xué)生的各種信息添加到數(shù)據(jù)庫中。
成績查詢:主要三種方式,按學(xué)號,按姓名,按課程號查詢學(xué)生的成績。
成績增刪改:主要是老師對學(xué)生的各項(xiàng)信息或成績的修改,刪除,添加等,以實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)的及時更新。
成績分析統(tǒng)計(jì):對學(xué)生成績的分析統(tǒng)計(jì)包括各個學(xué)生或課程的及格人數(shù),不及格人數(shù),及格率,學(xué)生成績的排序等等。
四、數(shù)據(jù)庫設(shè)計(jì)
4.1數(shù)據(jù)字典
4.1.1數(shù)據(jù)流
課程信息:課程號,課程名稱,學(xué)期,課程時間,學(xué)分等信息 學(xué)生信息:學(xué)號,姓名,專業(yè),性別,生日,年齡,現(xiàn)狀等信息 教師信息:教師編號,姓名等信息 4.1.2 數(shù)據(jù)存儲
成績表:包括學(xué)生姓名,學(xué)號,課程號,成績等信息 登錄信息表:包括學(xué)生學(xué)號,密碼及教師編號,密碼等信息 4.2 E-R圖
圖二 學(xué)生信息E-R圖
圖三 課程信息E-R圖
圖四 教師信息E-R圖
圖五 總E-R圖
4.3系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)
綜合以上分析,要實(shí)現(xiàn)系統(tǒng)功能,應(yīng)該建立如下表:
表一 課程表
表二 學(xué)生表
表三 成績表
表四 教師表
表五 用戶表
五、設(shè)計(jì)過程及要點(diǎn)
這次課程設(shè)計(jì)我主要做數(shù)據(jù)庫和登陸界面的設(shè)計(jì)并實(shí)現(xiàn)該系統(tǒng)的登錄功能。
5.1數(shù)據(jù)庫及窗體設(shè)計(jì)
其中數(shù)據(jù)庫我一共設(shè)計(jì)了五個表,分別是學(xué)生表,課程表,成績表,教師表和用戶表,這些表的詳細(xì)信息已經(jīng)在上面有了介紹。
然后就是登錄功能的實(shí)現(xiàn)。
圖六 登錄窗體
登錄窗體主要用了3個label控件,2個textbox控件,2個radioButton控件,2個button控件,實(shí)現(xiàn)了教師跟學(xué)生的登錄,用戶名跟密碼輸入正確后,選擇老師或者學(xué)生后分別進(jìn)入各自的主界面,在主界面中可以對學(xué)生的成績進(jìn)行查詢,刪除等等操作。老師和學(xué)生的主界面分別如下圖:
圖七 學(xué)生主界面
圖八 教師主界面
5.2 主要代碼
namespace WindowsFormsApplication1 { public partial class 登錄 : Form { public 登錄(){
InitializeComponent();sqlhelper = new Sqlhelper(“server=.;database=xscj;integrated security=true”);} Sqlhelper sqlhelper private void button1_Click(object sender, EventArgs e){ string sn;string str = “server=.;database=xscj;integrated security=true”;SqlConnection conn = new SqlConnection(str);conn.Open();
if(radioButton1.Checked){ textBox1.Text.Trim()+ “'and password='” +textBox2.Text.Trim()+ “'”;SqlCommand comm = new SqlCommand(cstr, conn);SqlDataReader dr = comm.ExecuteReader();if(dr.Read()){ sn = textBox1.Text.Trim();教師界面 f1 = new 教師界面();f1.Show();this.Visible = false;} else { MessageBox.Show(“輸入有誤,請重新輸入!”);textBox1.Text = “";textBox2.Text = ”“;} } if(radioButton2.Checked){ string cstr = ”select * from [user] where type='教師'and uid='“ + 11
string cstr = ”select * from [user] where type='學(xué)生'and uid='“ +textBox1.Text.Trim()+ ”'and password='“ + textBox2.Text.Trim()+ ”'“;SqlCommand comm = new SqlCommand(cstr, conn);SqlDataReader dr = comm.ExecuteReader();if(dr.Read()){ sn = textBox1.Text.Trim();學(xué)生界面 f2 = new 學(xué)生界面();f2.Show();this.Visible = false;} else { MessageBox.Show(”輸入有誤,請重新輸入!“);textBox1.Text = ”“;textBox2.Text = ”";} } conn.Close();conn.Dispose();} } }
六、設(shè)計(jì)總結(jié)
為期一周的課程設(shè)計(jì)結(jié)束了,在老師和同學(xué)的幫助下,我基本完成系統(tǒng)的設(shè)計(jì)。我們小組按照系統(tǒng)工程軟件設(shè)計(jì)的要求,從設(shè)計(jì)目的、需求分析、模塊分析及設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)等各個步驟,分步完成系統(tǒng)的各項(xiàng)任務(wù),實(shí)現(xiàn)了系統(tǒng)中的學(xué)生信息查詢,學(xué)生信息增刪改,學(xué)生信息添加等模塊的功能。
在這短短的五天里收獲如下: 鞏固和加深了對C#的理解,提高綜合運(yùn)用本課程所學(xué)知識的能力。
2、培養(yǎng)了我選用參考書,查閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。
3、通過實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。
4、更加深刻的了解了小組團(tuán)隊(duì)協(xié)作的重要性,只有整個小組的人通力合作才可能會完成一個項(xiàng)目并且進(jìn)步。
根據(jù)我在課程設(shè)計(jì)中遇到的問題,我將在以后的學(xué)習(xí)當(dāng)中注意以下幾點(diǎn):
認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。
2、寫程序的過程中要考慮周到,嚴(yán)密。
3、在做設(shè)計(jì)的時候要有信心,有耐心,切勿浮躁。
4、認(rèn)真的學(xué)習(xí)課本知識,掌握課本中的知識點(diǎn),并在此基礎(chǔ)上學(xué)會靈活運(yùn)用。
5、在課余時間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯誤,以便能節(jié)省調(diào)試程序的時間。
七、參考資料
[1] 錢能.C++程序設(shè)計(jì),2008,16(2):233-237 [2] 錢能.C++程序設(shè)計(jì)試驗(yàn)指導(dǎo),2008.34(3):35-38 [3] 譚浩強(qiáng).C程序設(shè)計(jì).北京:清華大學(xué)出版社,2001 13