綜合程序課程設(shè)計-學(xué)生成績管理系統(tǒng)_第1頁
綜合程序課程設(shè)計-學(xué)生成績管理系統(tǒng)_第2頁
綜合程序課程設(shè)計-學(xué)生成績管理系統(tǒng)_第3頁
綜合程序課程設(shè)計-學(xué)生成績管理系統(tǒng)_第4頁
綜合程序課程設(shè)計-學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

綜合程序課程設(shè)計說明書課程設(shè)計名稱:綜合程序設(shè)計課程設(shè)計題目:學(xué)生成績管理系統(tǒng)學(xué)院名稱:專業(yè):班級:學(xué)號:姓名:評分:教師:2016年3月15日綜合程序課程設(shè)計任務(wù)書2015-2016學(xué)年第2學(xué)期第1周-2周題目學(xué)生成績管理系統(tǒng)內(nèi)容及要求(一)功能要求:(1)信息維護:要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學(xué)生信息數(shù)據(jù)的維護。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息。(2)信息查詢:要求:查詢時可實現(xiàn)按姓名查詢、按學(xué)號查詢。(3)成績統(tǒng)計:要求:A輸入任意的一個課程名(如數(shù)學(xué))和一個分?jǐn)?shù)段(如60--70),統(tǒng)計出在此分?jǐn)?shù)段的學(xué)生情況。(4)排序:能對用戶指定的任意課程名,按成績升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)。(二)其它要求:(1)只能使用C或C++語言,源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x。(2)采用文本菜單界面。(3)學(xué)生可增加新功能模塊。進度安排第一周確定學(xué)生成績管理系統(tǒng)索要實現(xiàn)的功能,查詢與實現(xiàn)所需功能相關(guān)的資料,并完成一些實現(xiàn)較為簡單的功能模塊;第二周通過第一周所查詢到的資料,編寫完成所確定的較為復(fù)雜的功能,對系統(tǒng)進行調(diào)試,盡可能排除各種bug并完善系統(tǒng),增加界面友好。學(xué)生姓名:指導(dǎo)時間2016年2月29日~2016年3月13日指導(dǎo)地點:任務(wù)下達(dá)年月日任務(wù)完成年月日考核方式1.評閱□2.答辯□3.實際操作□4.其它□指導(dǎo)教師系(部)主任

綜合程序課程設(shè)計任務(wù)書2015-2016學(xué)年第2學(xué)期第1周-2周題目學(xué)生成績管理系統(tǒng)內(nèi)容及要求(一)功能要求:(1)信息維護:要求:學(xué)生信息數(shù)據(jù)要以文件的形式保存,能實現(xiàn)學(xué)生信息數(shù)據(jù)的維護。此模塊包括子模塊有:增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息。(2)信息查詢:要求:查詢時可實現(xiàn)按姓名查詢、按學(xué)號查詢。(3)成績統(tǒng)計:要求:A輸入任意的一個課程名(如數(shù)學(xué))和一個分?jǐn)?shù)段(如60--70),統(tǒng)計出在此分?jǐn)?shù)段的學(xué)生情況。(4)排序:能對用戶指定的任意課程名,按成績升序或降序排列學(xué)生數(shù)據(jù)并顯示排序結(jié)果(使用表格的形式顯示排序后的輸出結(jié)果)(使用多種方法排序者,加分)。(二)其它要求:(1)只能使用C或C++語言,源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀。(2)采用文本菜單界面。(3)學(xué)生可增加新功能模塊。進度安排第一周確定學(xué)生成績管理系統(tǒng)索要實現(xiàn)的功能,查詢與實現(xiàn)所需功能相關(guān)的資料,并完成一些實現(xiàn)較為簡單的功能模塊;第二周通過第一周所查詢到的資料,編寫完成所確定的較為復(fù)雜的功能,對系統(tǒng)進行調(diào)試,盡可能排除各種bug并完善系統(tǒng),增加界面友好。學(xué)生姓名:指導(dǎo)時間2016年2月29日~2016年3月13日指導(dǎo)地點:任務(wù)下達(dá)2016年2月29日任務(wù)完成2016年3月13日考核方式1.評閱□2.答辯□3.實際操作□4.其它□指導(dǎo)教師系(部)主任

摘要在學(xué)?;虬嗉?,經(jīng)常會對某次考試中所有學(xué)生的成績進行統(tǒng)計和管理,由于學(xué)生數(shù)量非常繁多,所以在處理統(tǒng)計學(xué)生總成績和平均成績時工作會相對繁瑣,所以針對這種情況,為方便對學(xué)生的成績進行統(tǒng)計和管理,利用C++語言及MicroSoft2010程序和數(shù)據(jù)庫軟件SQL2008運行平臺,設(shè)計了一種小型的學(xué)生成績管理系統(tǒng),該系統(tǒng)具有學(xué)生成績相關(guān)信息的錄入、顯示、查詢、修改、刪除和統(tǒng)計等功能。 關(guān)鍵字:學(xué)生成績管理系統(tǒng)、MicroSoft2010、SQL2008、模塊化設(shè)計。目錄需求分析······················································1=1\*GB2⑴設(shè)計目的················································1=2\*GB2⑵設(shè)計任務(wù)················································1=3\*GB2⑶軟件性能需求············································1數(shù)據(jù)表的設(shè)計··················································2軟件結(jié)構(gòu)設(shè)計··················································3軟件程序的詳細(xì)設(shè)計············································4=1\*GB2⑴軟件主界面··············································4=2\*GB2⑵信息維護模塊············································5=1\*GB3①添加·············································6 =2\*GB3②修改·············································8 =3\*GB3③刪除·············································14=3\*GB2⑶信息查詢模塊············································15=4\*GB2⑷成績統(tǒng)計模塊············································18=5\*GB2⑸排序模塊················································20系統(tǒng)的調(diào)試與測試分析··········································24用戶使用手冊··················································26設(shè)計總結(jié)······················································27參考文獻······················································28附錄··························································29

一、需求分析1、設(shè)計目的=1\*GB3①掌握運用數(shù)據(jù)庫原理進行系統(tǒng)分析和設(shè)計的方法;=2\*GB3②掌握關(guān)系數(shù)據(jù)庫的設(shè)計方法;=3\*GB3③掌握利用SQLServer2008技術(shù);=4\*GB3④加強C++的編程能力;2、設(shè)計任務(wù)=1\*GB3①設(shè)計一個簡易學(xué)生成績管理的數(shù)據(jù)庫系統(tǒng),包括數(shù)據(jù)庫的建立的需求分析,數(shù)據(jù)的輸入輸出。=2\*GB3②設(shè)計用戶的操作界面,主要實現(xiàn)數(shù)據(jù)的查詢,錄入,顯示,修改,刪除,統(tǒng)計基本功能。3、軟件的性能需求學(xué)生成績管理系統(tǒng)主要是提供成績查詢,方便網(wǎng)上信息查閱的平臺。教師可以通過程序管理系統(tǒng)查詢所有學(xué)生的各科成績,根據(jù)學(xué)生的成績情況為自己的后續(xù)教學(xué)安排提供依據(jù)。老師同時還對成績管理系統(tǒng)具有添加、修改、刪除、查詢、信息統(tǒng)計等相關(guān)操作。二、數(shù)據(jù)表的設(shè)計數(shù)據(jù)表包含學(xué)生的姓名、學(xué)號、語文、數(shù)學(xué)、英語、政治成績和個人總成績、個人平均成績。教師在輸入或修改學(xué)生的各科成績后,相應(yīng)學(xué)生的個人總成績和平均成績就會相應(yīng)的即時更新。其實體關(guān)系圖如下所示:學(xué)生學(xué)生學(xué)號語文數(shù)學(xué)英語政治個人總成績平均成績學(xué)號語文數(shù)學(xué)英語政治個人總成績平均成績姓名創(chuàng)建數(shù)據(jù)表的代碼如下所示:createtable學(xué)生成績信息(姓名CHAR(10)NOTNULL,學(xué)號CHAR(10)NOTNULL,語文CHAR(5)NOTNULL,數(shù)學(xué)CHAR(5)NOTNULL,英語CHAR(5)NOTNULL,政治CHAR(5)NOTNULL,個人總成績CHAR(5)NOTNULL,平均成績CHAR(5)NOTNULL);三、軟件結(jié)構(gòu)設(shè)計成績管理系統(tǒng)主要分為五個功能模塊:信息維護模塊(添加、修改、刪除)、信息查詢模塊(按學(xué)號、姓名查詢)、成績統(tǒng)計模塊(查詢分?jǐn)?shù)段內(nèi)學(xué)生情況、人數(shù))、排序模塊(按單科成績、總成績、平均成績排序)、查詢所有模塊。其關(guān)系圖如下所示:成績管理系統(tǒng)查詢所有添加修改刪除按學(xué)號分?jǐn)?shù)段及此分?jǐn)?shù)段人數(shù)按姓名個人總成績降序成績管理系統(tǒng)查詢所有添加修改刪除按學(xué)號分?jǐn)?shù)段及此分?jǐn)?shù)段人數(shù)按姓名個人總成績降序排序成績統(tǒng)計信息查詢信息維護排序成績統(tǒng)計信息查詢信息維護單科成績降序單科成績升序平均成績降序單科成績降序單科成績升序平均成績降序四、軟件程序的詳細(xì)設(shè)計軟件主界面在軟件主界面中有四個按鈕,分別可以進入四個功能模塊,還有一個查詢所有學(xué)生成績信息的菜單欄按鈕選項。主界面的交互界面如圖1所示:圖1實現(xiàn)頁面跳轉(zhuǎn)的主要代碼如下所示:在form1的構(gòu)造函數(shù)中定義變量如下:Form2^f2;Form3^f3;Form4^f4;Form5^f5;再在系統(tǒng)的頭文件庫stdafx.h中包含各個頭文件,代碼如下:#include"Form2.h"#include"Form3.h"#include"Form4.h"#include"Form5.h"點擊頁面跳轉(zhuǎn)代碼如下:private:System::Voidbutton2_Click(System::Object^sender,System::EventArgs^e){//打開信息查詢窗口 f2=gcnewForm2(); f2->Show(); }private:System::Voidbutton1_Click(System::Object^sender,System::EventArgs^e){//打開信息維護窗口 f3=gcnewForm3(); f3->Show(); }private:System::Voidbutton3_Click(System::Object^sender,System::EventArgs^e){//打開成績統(tǒng)計窗口 f4=gcnewForm4(); f4->Show(); }private:System::Voidbutton4_Click(System::Object^sender,System::EventArgs^e){//打開成績統(tǒng)計窗口 f5=gcnewForm5(); f5->Show(); }2、信息維護模塊圖2 信息維護模塊交互界面如圖2所示。此模塊可實現(xiàn)對學(xué)生成績信息的添加、修改和刪除。=1\*GB3①添加在信息輸入欄中輸入完整的學(xué)生信息,再點擊添加按鈕,即可完成學(xué)生成績信息的添加,且在添加學(xué)生四科成績之后,系統(tǒng)可自動計算出所添加學(xué)生的個人總成績和平均成績并顯示在數(shù)據(jù)庫文件當(dāng)中,為避免重復(fù)添加,系統(tǒng)還會檢測學(xué)生信息是否已經(jīng)添加,若存在則系統(tǒng)會提示當(dāng)前所添加學(xué)生已經(jīng)添加。輸入輸入數(shù)據(jù)輸入的輸入的信息是否完整 NY Y 學(xué)號已學(xué)號已存在 添加成功添加成功此模塊功能實現(xiàn)的主要代碼如下所示:private:System::Voidbutton1_Click(System::Object^sender,System::EventArgs^e){//添加學(xué)生成績信息 if(textBox1->Text==""||textBox2->Text==""||textBox3->Text==""||textBox4->Text==""||textBox5->Text==""||textBox6->Text=="") { MessageBox::Show("請輸入完整的學(xué)生成績信息!");///判斷是否有輸入添加的信息 return; } String^abc="select*from學(xué)生成績where學(xué)號="+textBox2->Text;//判斷所添加的學(xué)號是否已經(jīng)存在 DataTable^abctable=gcnewDataTable(); SqlDataAdapter^abcda=gcnewSqlDataAdapter(abc,con); abcda->Fill(abctable); if(abctable->Rows->Count==1) { MessageBox::Show("此學(xué)號已存在!"); return; } String^sql="insertinto學(xué)生成績(姓名,學(xué)號,語文,數(shù)學(xué),英語,政治)values('"+textBox1->Text+"','"+textBox2->Text+"','"+textBox3->Text+"','"+textBox4->Text+"','"+textBox5->Text+"','"+textBox6->Text+"')"; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con);////添加學(xué)生信息 try { ourda->Fill(ourtable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } MessageBox::Show("添加成功!");//////////////更新個人總成績////////////// String^zf="update學(xué)生成績set個人總成績=語文+數(shù)學(xué)+英語+政治"; DataTable^zftable=gcnewDataTable(); SqlDataAdapter^zfda=gcnewSqlDataAdapter(zf,con); try { zfda->Fill(zftable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return;} ///////////////更新平均成績///////////////// String^ave="update學(xué)生成績set平均成績=個人總成績/4"; DataTable^avetable=gcnewDataTable(); SqlDataAdapter^aveda=gcnewSqlDataAdapter(ave,con); try { aveda->Fill(avetable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return;}}=2\*GB3②修改 在信息欄中輸入所要修改的學(xué)生姓名與學(xué)號,且在所要修改的科目一欄輸入修改后的分?jǐn)?shù),并勾選所要修改的科目,若要全部修改可在填寫完分?jǐn)?shù)后點擊全部勾選即可,若想要單獨修改某一科成績,則只需單獨勾選該一科成績即可。并且在修改成功后系統(tǒng)會自動更新該學(xué)生成績修改后的個人總成績和平均成績。輸入要修改的內(nèi)容輸入要修改的內(nèi)容輸入的輸入的學(xué)號與姓名是否匹配 NY是否已勾選是否已勾選所要修改的成績 N Y修改成功修改成功此功能的實現(xiàn)代碼如下所示:private:System::Voidbutton2_Click(System::Object^sender,System::EventArgs^e){//修改學(xué)生成績信息 if(textBox1->Text==""||textBox2->Text=="")//判斷姓名和學(xué)號是否為空 { String^sql="請輸入姓名和學(xué)號!"; MessageBox::Show(sql); return;} String^abc="select*from學(xué)生成績where姓名='"+textBox1->Text+"'and學(xué)號="+textBox2->Text; DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(abc,con); ourda->Fill(ourtable); if(ourtable->Rows->Count==0)////判斷輸入的學(xué)號在數(shù)據(jù)庫中是否存在 { MessageBox::Show("輸入的姓名與學(xué)號不匹配或此學(xué)生不存在!"); return; } if((textBox3->Text==""||checkBox1->Checked==false)&&(textBox4->Text==""||checkBox2->Checked==false)&&(textBox5->Text==""||checkBox3->Checked==false)&&(textBox6->Text==""||checkBox4->Checked==false)) { MessageBox::Show("請輸入需要修改內(nèi)容的值并勾選相應(yīng)的方框!");///判斷是否已經(jīng)輸入正確的需改內(nèi)容和操作 return; } if(checkBox1->Checked==true&&textBox3->Text!="")//////語文成績的修改 { String^sql="update學(xué)生成績set語文"+"='"+textBox3->Text+"'"+"where姓名"+"='"+textBox1->Text+"'"+"and學(xué)號="+textBox2->Text+""; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^our=gcnewSqlDataAdapter(sql,con); try { our->Fill(ourtable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } } if(checkBox2->Checked==true&&textBox4->Text!="")//數(shù)學(xué)成績的修改 { String^sql="update學(xué)生成績set數(shù)學(xué)"+"='"+textBox4->Text+"'"+"where姓名"+"='"+textBox1->Text+"'"+"and學(xué)號="+textBox2->Text+""; DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } } if(checkBox3->Checked==true&&textBox5->Text!="")//英語成績的修改 { String^sql="update學(xué)生成績set英語"+"='"+textBox5->Text+"'"+"where姓名"+"='"+textBox1->Text+"'"+"and學(xué)號="+textBox2->Text+""; DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } } if(checkBox4->Checked==true&&textBox6->Text!="")//政治成績的修改 { String^sql="update學(xué)生成績set政治"+"='"+textBox6->Text+"'"+"where姓名"+"='"+textBox1->Text+"'"+"and學(xué)號="+textBox2->Text+""; DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } } MessageBox::Show("修改成功!"); //////////////更新個人總成績////////////// String^zf="update學(xué)生成績set個人總成績=語文+數(shù)學(xué)+英語+政治"; DataTable^zftable=gcnewDataTable(); SqlDataAdapter^zfda=gcnewSqlDataAdapter(zf,con); try { zfda->Fill(zftable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } ///////////////更新平均成績///////////////// String^ave="update學(xué)生成績set平均成績=個人總成績/4"; DataTable^avetable=gcnewDataTable(); SqlDataAdapter^aveda=gcnewSqlDataAdapter(ave,con); try { aveda->Fill(avetable); } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } }全部選擇功能實現(xiàn)代碼如下所示:private:System::VoidcheckBox5_CheckedChanged(System::Object^sender,System::EventArgs^e){//全部修改checkBox選擇操作 if(checkBox5->Checked==true) { checkBox1->Checked=true; checkBox2->Checked=true; checkBox3->Checked=true; checkBox4->Checked=true; } if(checkBox5->Checked==false) { checkBox1->Checked=false; checkBox2->Checked=false; checkBox3->Checked=false; checkBox4->Checked=false; } }=3\*GB3③刪除在姓名和學(xué)號欄中輸入要刪除的學(xué)生信息,點擊刪除按鈕,若此學(xué)生在數(shù)據(jù)庫中存在則會顯示刪除成功,若不存在則會提示所要刪除的學(xué)生不存在。輸入姓名和學(xué)號輸入姓名和學(xué)號姓名姓名與學(xué)號是否匹配 NY刪除刪除成功其代碼實現(xiàn)如下所示:private:System::Voidbutton3_Click(System::Object^sender,System::EventArgs^e){//刪除學(xué)生成績信息 if(textBox1->Text==""||textBox2->Text=="")//判斷是否有輸入必要信息 { String^sql="請輸入姓名和學(xué)號!"; MessageBox::Show(sql); return; } String^abc="select*from學(xué)生成績where姓名='"+textBox1->Text+"'and學(xué)號="+textBox2->Text; DataTable^f3=gcnewDataTable(); SqlDataAdapter^f4=gcnewSqlDataAdapter(abc,con); f4->Fill(f3); if(f3->Rows->Count==0)//判斷所要刪除的學(xué)號是否存在 { MessageBox::Show("輸入的姓名與學(xué)號不匹配!"); return; } String^sql="delete學(xué)生成績where姓名"+"='"+textBox1->Text+"'and"+"學(xué)號="+textBox2->Text+""; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable();//信息輸入正確后刪除次學(xué)生信息的操作 SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); } catch(System::Data::SqlClient:SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); return; } String^ac="select*from學(xué)生成績where姓名='"+textBox1->Text+"'and學(xué)號="+textBox2->Text; DataTable^f1=gcnewDataTable(); SqlDataAdapter^f2=gcnewSqlDataAdapter(abc,con); ourda->Fill(f1); if(f1->Rows->Count==0)//刪除后再次查詢此學(xué)生信息,驗證是否刪除成功 { MessageBox::Show("刪除成功!"); }}3、信息查詢模塊圖3信息查詢模塊的交互界面如圖3所示,此模塊可實現(xiàn)按照學(xué)號、姓名兩種方式對學(xué)生的所有成績信息進行查詢。在查詢內(nèi)容一欄中輸入與所選查詢方式相對應(yīng)的查詢內(nèi)容并點擊查詢按鈕就會在窗口下方顯示符合條件的學(xué)生的所有成績信息。選擇選擇查詢方式輸入查詢內(nèi)容輸入查詢內(nèi)容輸入輸入內(nèi)容是否存在 NY顯示相關(guān)顯示相關(guān)信息此功能實現(xiàn)的代碼如下所示:private:System::Voidbutton1_Click(System::Object^sender,System::EventArgs^e){ con=gcnewSqlConnection();//鏈接數(shù)據(jù)庫 con->ConnectionString=L"DataSource=DESKTOP-0FETV4R;InitialCatalog=學(xué)生成績管理系統(tǒng);IntegratedSecurity=True"; if(textBox1->Text=="")//判斷是否有輸入內(nèi)容 { String^sql="請輸入所要查詢的內(nèi)容!"; MessageBox::Show(sql); return; } if(radioButton1->Checked==true)//按學(xué)號查詢 { String^sql="select*from學(xué)生成績where學(xué)號"+"='"+textBox1->Text+"'"; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); } } if(radioButton2->Checked==true)//按姓名查詢 { String^sql="select*from學(xué)生成績where姓名"+"='"+textBox1->Text+"'"; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息");}}}4、成績統(tǒng)計模塊圖4 成績統(tǒng)計模塊的交互界面如圖4所示。此模塊主要實現(xiàn)對學(xué)生成績的分布情況進行查詢,在課程名一欄輸入所要查詢的課程名稱包括惡人總成績和平均成績,并且輸入分?jǐn)?shù)段,點擊確認(rèn)按鈕,在欄目下方即可顯示此分?jǐn)?shù)段內(nèi)學(xué)生的成績信息,并且在右邊方框中會顯示此分?jǐn)?shù)段內(nèi)的學(xué)生人數(shù)。輸入輸入課程名與分?jǐn)?shù)段輸入輸入信息是否完整 N顯示分?jǐn)?shù)段內(nèi)的顯示分?jǐn)?shù)段內(nèi)的學(xué)生信息與學(xué)生人數(shù)其主要功能實現(xiàn)的代碼如下所示:private:System::Voidbutton1_Click(System::Object^sender,System::EventArgs^e){ con=gcnewSqlConnection();//連接數(shù)據(jù)庫 con->ConnectionString=L"DataSource=DESKTOP-0FETV4R;InitialCatalog=學(xué)生成績管理系統(tǒng);IntegratedSecurity=True"; if(textBox1->Text==""||textBox2->Text==""||textBox3->Text=="")//判斷是否有輸入完整信息 { String^sql="請?zhí)顚懲暾y(tǒng)計的內(nèi)容!"; MessageBox::Show(sql); return;} String^sql="select*from學(xué)生成績where"+textBox1->Text+"between"+textBox2->Text+"and"+textBox3->Text; MessageBox::Show(sql);DataTable^ourtable=gcnewDataTable();//查詢輸入分?jǐn)?shù)段的所有學(xué)生的情況 SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; String^i=""+ourtable->Rows->Count;//顯示在輸入分?jǐn)?shù)段內(nèi)的學(xué)生人數(shù) textBox4->Text=i; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); } }5、排序模塊圖5 排序模塊的交互界面如圖5所示。此模塊的主要功能是對學(xué)生的成績情況進行統(tǒng)計排序,方便教師更加直觀的對學(xué)生成績的分布情況進行了解。所列出的排序有四種方法,分別為單科成績升序、降序,總成績降序,平均成績降序。輸入課程名并點擊確定按鈕,則在欄目下方會顯示按照排序規(guī)則排序后的學(xué)生成績信息。輸入輸入排序的課程名選擇選擇排序方式輸出輸出排序結(jié)果其主要功能實現(xiàn)的代碼如下所示:private:System::Voidbutton1_Click(System::Object^sender,System::EventArgs^e){//排序 if(radioButton3->Checked==true)//總成績排序 { String^sql="select*from學(xué)生成績where個人總成績orderby個人總成績desc"; //MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息");} return;} if(radioButton4->Checked==true)//平均成績排序 { String^sql="select*from學(xué)生成績where平均成績orderby平均成績desc"; //MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); } return;} if(radioButton1->Checked==true||radioButton2->Checked==true)//單科成績排序 { if(textBox1->Text=="") { MessageBox::Show("請輸入排序課程名!"); return; } if(radioButton1->Checked==true)//單科成績升序 { String^sql="select*from學(xué)生成績where"+textBox1->Text+"orderby"+textBox1->Text+"asc"; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); } } if(radioButton2->Checked==true)//單科成績降序 { String^sql="select*from學(xué)生成績where"+textBox1->Text+"orderby"+textBox1->Text+"desc"; MessageBox::Show(sql); DataTable^ourtable=gcnewDataTable(); SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con); try { ourda->Fill(ourtable); this->dataGridView1->DataSource=ourtable; } catch(System::Data::SqlClient::SqlException^ex) { MessageBox::Show("數(shù)據(jù)異常信息是:"+ex->Errors,"提示信息"); }}}}五、系統(tǒng)的調(diào)試與測試分析在系統(tǒng)調(diào)試過程中遇到的第一個主要問題就是成績統(tǒng)計模塊的分?jǐn)?shù)段內(nèi)的人數(shù)顯示問題,其部分代碼為:String^i=""+ourtable->Rows->Count;//顯示在輸入分?jǐn)?shù)段內(nèi)的學(xué)生人數(shù)textBox4->Text=i;由于一開始寫的代碼為String^i=ourtable->Rows->Count;在程序編譯時會顯示無法把int類型數(shù)據(jù)轉(zhuǎn)化為string類型。導(dǎo)致無法把查詢到的學(xué)生人數(shù)送至textBox4中顯示。于是在等號后面加上空符號,則生成的數(shù)據(jù)類型為string類型并可以送至textBox4中顯示,此問題得以成功解決。在調(diào)試過程中遇到的第二個主要問題是信息維護模塊的修改功能的實現(xiàn)。一開始的問題代碼如下:if(textBox3->Text==""&&textBox4->Text==""&&textBox5->Text==""&&textBox6->Text=="") { MessageBox::Show("請輸入需要修改的內(nèi)容!"); return; }if(checkBox1->Checked==false&&checkBox2->Checked==false&&checkBox3->Checked==false&&checkBox4->Checked==false) { MessageBox::Show("請勾選所要修改課程右邊的方框!"); return;}在輸入要修改的成績之后不勾選本成績的方框而是去勾選別的沒有填入修改成績的方框,則也會提示修改成功。例如修改小米的成績:姓名:小米 學(xué)號:09 語文:80(不勾選)數(shù)學(xué):不輸入(勾選)點擊修改按鈕,彈出窗口顯示修改成功。但是查詢后發(fā)現(xiàn)小米同學(xué)的成績并沒有修改。經(jīng)過進一步對程序的調(diào)試及邏輯分析,將此段代碼修改如下:if((textBox3->Text==""||checkBox1->Checked==false)&&(textBox4->Text==""||checkBox2->Checked==false)&&(textBox5->Text==""||checkBox3->Checked==false)&&(textBox6->Text==""||checkBox4->Checked==false)) { MessageBox::Show("請輸入需要修改內(nèi)容的值并勾選相應(yīng)的方框!"); return; }修改后的程序運行上述修改內(nèi)容后,則會提示:”請輸入需要修改內(nèi)容的值并勾選相應(yīng)的方框!”再勾選語文成績并去除勾選數(shù)學(xué)成績后點擊修改按鈕,提示修改成功,再查詢小米同學(xué)的成績則會看到小米同學(xué)的成績被修改為80,程序運行正確。 在調(diào)試運行中遇到的第三個主要問題是將數(shù)據(jù)庫中的學(xué)生成績信息導(dǎo)入到excel中。在編譯過程中始終會提示Microsoft為引用的是非法命名空間,上網(wǎng)查詢了去多資料,在項目中引用了com程序集Microsoftoffice15.0ObjectLibrary還是不能成功解決此問題。在嘗試多種方法未果后,于是就放棄了這部分的功能。但是在以后的學(xué)習(xí)當(dāng)中,我會不斷的學(xué)習(xí)新的知識與技能,一定會成功解決這部分的問題。六、用戶使用手冊點擊軟件進入主界面,有如下按鈕及功能查詢所有:查看所有學(xué)生成績的信息。信息維護:對學(xué)生的成績進行維護,包含添加學(xué)生信息、修改學(xué)生信息和刪除學(xué)生信息。添加:在姓名、學(xué)號、語文、數(shù)學(xué)、英語、政治各欄中填入相應(yīng)的信息,點擊添加按鈕即可成功添加。修改:輸入所要修改的姓名、學(xué)號和成績,并且勾選要修改的成績(若要全部修改勾選全部修改即可),再點擊修改按鈕即可成功修改。刪除:輸入正確的姓名與學(xué)號,點擊刪除按鈕即可成功刪除。若輸入的姓名與學(xué)號不匹配則會提示錯誤且不會刪除成功。信息查詢:首先選擇查詢的方式,再輸入查詢方式所對應(yīng)的查詢內(nèi)容,點擊查詢按鈕,即可成功查詢學(xué)生信息。成績統(tǒng)計:輸入所需要統(tǒng)計的課程名(包括個人總成績和平均成績)和分?jǐn)?shù)段,點擊確認(rèn)按鈕,即可顯示符合條件的學(xué)生成績情況和符合條件的學(xué)生人數(shù)。排序:輸入課程名并選擇排序方式(總成績排序和平均成績排序不需要輸入課程名),點擊確認(rèn)按鈕就會顯示排序結(jié)果。七、總結(jié)本次課程設(shè)計實現(xiàn)了對學(xué)生成績管理系統(tǒng)的設(shè)計與完成,在實驗過程中碰到了許多難題,不過大部分得到了較為成功的解決。學(xué)生成績管理系統(tǒng)利用計算機對學(xué)生成績進行管理,大大降低了人工管理的難度和工作量。本次設(shè)計的學(xué)生成績管理系統(tǒng)較為一般,功能還不是特別強大,很多的地方還需要完善和進一步的改進,比如說excel對表格數(shù)據(jù)的處理具有無可比擬的強大功能,在成績系統(tǒng)中加入將數(shù)據(jù)庫文件轉(zhuǎn)換輸出為excel文件的功能,更加方便對學(xué)生成績的分析與處理。由于學(xué)生成績管理系統(tǒng)在每個學(xué)校都發(fā)揮這巨大的作用,它不僅可以為老師提供學(xué)生的成績信息,同時也可以讓老師通過分析學(xué)生成績的分布狀況相應(yīng)的開展針對性的教學(xué)活動,促進教育的良好而又全面的發(fā)展,可見學(xué)生成績管理系統(tǒng)在學(xué)校中的巨大影響。同樣,由于學(xué)生成績管理系統(tǒng)在學(xué)校中的地位舉足輕重,可也決定了它有一個廣闊的市場前景。一個好的成績管理系統(tǒng)可以對學(xué)校提供更好的數(shù)據(jù)參考,其潛在價值是巨大的。 通過本次課程設(shè)計收益良多,不僅學(xué)會了如何將數(shù)據(jù)庫軟件和C++編程軟件配合使用,同時還提升了自己的軟件結(jié)構(gòu)的設(shè)計能力,為以后的軟件開發(fā)奠定了一個初步的基礎(chǔ)。通過此次對學(xué)生成績系統(tǒng)的設(shè)計,使我更加熟練地掌握了SQL語言和C++語言的使用,并且也同時提高了小組的合作設(shè)計能力。八、參考文獻方芳、趙敏主編《VisualC++基礎(chǔ)教程》.北京理工大學(xué)出版社.2015年8月。苗雪蘭、劉瑞新等主編《數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用教程》.機械工業(yè)出版社.2006年1月。嚴(yán)蔚敏、吳偉民主編《數(shù)據(jù)結(jié)構(gòu)(C語言版)》.清華大學(xué)出版社.2007年。九、附錄系統(tǒng)功能層次圖成績管理系統(tǒng)查詢所有添加修改刪除按學(xué)號分?jǐn)?shù)段及此分?jǐn)?shù)段人數(shù)按姓名個人總成績降序成績管理系統(tǒng)查詢所有添加修改刪除按學(xué)號分?jǐn)?shù)段及此分?jǐn)?shù)段人數(shù)按姓名個人總成績降序排序成績統(tǒng)計信息查詢信息維護排序成績統(tǒng)計信息查詢信息維護單科成績降序單科成績升序平均成績降序單科成績降序單科成績升序平均成績降序數(shù)據(jù)庫:基于C8051F單片機直流電動機反饋控制系統(tǒng)的設(shè)計與研究基于單片機的嵌入式Web服務(wù)器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設(shè)計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設(shè)計和應(yīng)用基于單片機的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設(shè)計Pico專用單片機核的可測性設(shè)計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構(gòu)建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學(xué)生單片機應(yīng)用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設(shè)計基于單片機的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機的低壓無功補償控制器的設(shè)計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機的疊圖機研究與教學(xué)方法實踐基于單片機嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機控制系統(tǒng)基于單片機的控制

溫馨提示

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

評論

0/150

提交評論