學(xué)生成績管理系統(tǒng)VB+SQL_第1頁
學(xué)生成績管理系統(tǒng)VB+SQL_第2頁
學(xué)生成績管理系統(tǒng)VB+SQL_第3頁
學(xué)生成績管理系統(tǒng)VB+SQL_第4頁
學(xué)生成績管理系統(tǒng)VB+SQL_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計任務(wù)書題目學(xué)生成績管理系統(tǒng)系(部)數(shù)理系專業(yè)班級學(xué)生姓名學(xué)號12月21日至12月25日指導(dǎo)教師(簽字)系主任(簽字)年月日學(xué)生成績管理系統(tǒng)通過完成從用戶需求分析、概念結(jié)構(gòu)設(shè)計,邏輯結(jié)構(gòu)設(shè)計等一系列的數(shù)據(jù)庫設(shè)計到上機編程、調(diào)試和應(yīng)用等全過程,進一步理解和掌握教材中的相關(guān)內(nèi)容。一.實驗要求(1)先對選定的實驗做簡單的需求分析;(2)做出數(shù)據(jù)流圖和數(shù)據(jù)字典;(3)在數(shù)據(jù)流圖和字典的基礎(chǔ)上做出E-R圖(概念結(jié)構(gòu)設(shè)計);(4)在E-R圖基礎(chǔ)上進行關(guān)系模式設(shè)計(至少滿足3NF)(邏輯結(jié)構(gòu)設(shè)計);(5)根據(jù)需求分析的各種數(shù)據(jù)請求得出各種視圖以及各種約束、規(guī)則、觸發(fā)器腳本描述;(6)根據(jù)第(5)的內(nèi)容在SQL-SERVER中設(shè)計中實例的數(shù)據(jù)庫;(7)用自己熟悉的一門語言進行設(shè)計的功能的實現(xiàn)(8)整理前面幾步的文檔和程序源碼,可執(zhí)行程序,形成最終的實驗報告。(9)實驗報告的最后寫出本次實驗完成中遇到的問題及解決方法二.需求分析1.功能需求本系統(tǒng)開發(fā)的目的,就是通過系統(tǒng)開發(fā),實現(xiàn)課程管理有關(guān)工作的計算機化,提高關(guān)鍵環(huán)節(jié)的處理速度和規(guī)范化,并對有關(guān)的工作進行集成和重組,通過網(wǎng)絡(luò)系統(tǒng)實現(xiàn)集中管理、分散操作,提高選課管理工作的質(zhì)量和效率。通過對學(xué)校的選課及成績管理工作進行實際調(diào)查,學(xué)生可以自由選擇課程、選老師,學(xué)生注冊的行政班和教學(xué)班是游離的,開發(fā)工作需要涉及任課教師、學(xué)生、管理員(教務(wù)工作人員)三種用戶。2.學(xué)生需求在學(xué)校規(guī)定的選課期間,學(xué)生通過任何一臺連接因特網(wǎng)計算機的瀏覽器就能進行網(wǎng)上選課。學(xué)生以用戶名和密碼進入選課系統(tǒng)。選課系統(tǒng)會根據(jù)用戶名和密碼自動識別所在的系,然后顯示出與學(xué)生有關(guān)的課程列表。系統(tǒng)必須控制某一門課程在學(xué)期間只能選一次。在學(xué)生選課時能自動進行有關(guān)邏輯判斷,如:是否選課超過了規(guī)定的門數(shù),是否選擇了不符合預(yù)修條件的課程,是否選擇的課程超過此課程最大選擇人數(shù),只有符合要求的選擇才能選課成功。學(xué)生可以更改部分個人信息如密碼,電話號碼等;學(xué)生可以查詢已修課程成績和已選課程信息。處理過程名:統(tǒng)計選擇輸入:學(xué)生記錄輸出:按規(guī)定統(tǒng)計成績處理要求:根據(jù)所輸入學(xué)生記錄查詢成績2.E_R圖學(xué)生實體E-R圖2)課程實體E-R圖教師實體E-R圖4)各實體之間的E-R圖 3.E—R圖轉(zhuǎn)換為關(guān)系模式:1)學(xué)生(XS)(學(xué)號(sno),姓名(sname),專業(yè)(sdept),性別(ssex),出生日期(sbirth),總 學(xué)分(all_credit))學(xué)生表:主碼:學(xué)號(sno)函數(shù)依賴:sno U.此表中,不存在非主屬性對碼的部分依賴,傳遞依賴,以及主屬性對碼的部分依賴和傳遞依賴,故滿足3NF2)課程(KC)(課程號(cno),課程名(cname),開課學(xué)期(term),學(xué)時(class_hour),學(xué)分(credit))課程表:主碼:課程號(cno)函數(shù)依賴:cno U此表中不存在非主屬性對碼的部分依賴,傳遞依賴,以及主屬性對碼的部分依賴和傳遞依賴,故滿足3NF3)選課(XS_KC)(學(xué)號(sno),課程號(cno),成績(grade))選課表:主碼:(學(xué)號,課程號)外碼:學(xué)號,課程號函數(shù)依賴:(sno,cno) U此表中不存在非主屬性對碼的部分依賴,傳遞依賴,以及主屬性對碼的部分依賴和傳遞依賴,故滿足3NF4)教師(TCH)(編號(tno),姓名(tname),性別(tsex),出生日期(tbirth),職稱(professional),專業(yè)(department))教師表:主碼:編號(tno)函數(shù)依賴:tno U此表中不存在非主屬性對碼的部分依賴,傳遞依賴,以及主屬性對碼的部分依賴和傳遞依賴,故滿足3NF5)授課(TCH_KC)(教師編號(tno),課程號(cno),上課地點(place))授課表:主碼:(教師編號,課程號)外碼:教師編號,課程號函數(shù)依賴:(tno,cno) U此表中不存在非主屬性對碼的部分依賴,傳遞依賴,以及主屬性對碼的部分依賴和傳遞依賴,故滿足3NF4.邏輯設(shè)計結(jié)果:數(shù)據(jù)庫表名XS(學(xué)生)字段名數(shù)據(jù)類型含義說明空值情況備注SnoChar(10)學(xué)號不能為空主鍵SnameChar(10)姓名不能為空ssexChar(10)性別可以為空只能取“男”“女”,默認為“男”Sbirthdate出生日期可以空SdeptChar(10)所在專業(yè)可以空All_creditInt總學(xué)分可以空數(shù)據(jù)庫表名KC(課程)字段名數(shù)據(jù)類型含義說明空值情況備注CnoChar(10)課程號不能為空主鍵SnameChar(10)課程名不能為空creditint學(xué)分可以空Class_hourInt課時數(shù)可以空TermInt開課學(xué)期可以空數(shù)據(jù)庫表名TCH(教師)字段名數(shù)據(jù)類型含義說明空值情況備注tnoChar(10)教師號不能為空主鍵tnameChar(10)姓名不能為空完全依賴Tno,是uniqueTbirthdate出生日期可以空TsexChar(10)性別可以空只能取“男”“女”,默認為男ProfessionalChar(10)職稱可以空DepartmentChar(10)專業(yè)可以空數(shù)據(jù)庫表名XS_KC(選課)字段名數(shù)據(jù)類型含義說明空值情況備注CnoChar(10)課程號不能為空主碼SnoChar(10)學(xué)號不能為空主碼Gradeint成績可以空數(shù)據(jù)庫表名TCH_KC(授課)字段名數(shù)據(jù)類型含義說明空值情況備注TnoChar(10)教師編號不能為空主碼CnoChar(10)課程號不能為空主碼PlaceChar(10)授課地點可以空四.?dāng)?shù)據(jù)庫應(yīng)用開發(fā)與運行此為主界面,有五個按鈕,可進行查詢,修改等操作。上圖為學(xué)生信息查詢窗口,可按學(xué)號,姓名,專業(yè)進行查詢下圖學(xué)生選課信息窗口,雙擊上圖學(xué)生信息查詢窗口中表格左邊,可彈出此窗口顯示該學(xué)生選課信息。上圖為教師信息查詢窗口,可按教師編號,姓名,職稱部門進行查詢,雙擊表格左部可顯示教師授課信息,如下圖所示。此為學(xué)生信息修改窗口,單擊一行,可在上面文本框中顯示該生信息,并進行插入,修改,刪除等操作。此為學(xué)生成績錄入窗口,單擊一行可現(xiàn)實該生學(xué)號及所選課程,并在成績文本框中進行添加及修改該課程成績操作。此為學(xué)生選課窗口,單擊一行顯示該行信息,可進行選課,刪除操作結(jié)果分析、結(jié)論與體會在這次課程設(shè)計中,我遇到的困難很多,在解決它們的同時我又學(xué)到了很多,受益匪淺,特別是如何分析、建立、開發(fā)一個系統(tǒng)。在一個系統(tǒng)開發(fā)的過程中編碼不是重要的,重要的是分析系統(tǒng)、建立起系統(tǒng)模型。在分析一個系統(tǒng)前,分析人員必須要對將要開發(fā)的系統(tǒng)所涉及到的各方面知識有一個認識,然后將系統(tǒng)的模型建立起來。在程序編寫中,我認識到軟件要有簡便的界面,良好的程序風(fēng)格。擁有這些條件,程序的可讀性才會好,開發(fā)的復(fù)雜度才能大大減少,修改代碼時更加容易下手。我認為,所謂友好的界面,就是用戶需要的界面,力求簡便全面。所以設(shè)計一個界面時,開發(fā)人員必須要了解用戶的想法,從用戶的角度去設(shè)計,當(dāng)然,開發(fā)不能全聽用戶的意見,在詳細分析了系統(tǒng)后,開發(fā)人員可以向用戶提出一些修改的意見,在雙方多次交流后定出程序所需的功能,以決定界面的實現(xiàn)。在編碼中,良好的編程風(fēng)格與習(xí)慣是提高工作效率的一個重要方面,而且良好的編程風(fēng)格與習(xí)慣也是使軟件便于維護的基礎(chǔ)。那如何是良好的編程風(fēng)格與習(xí)慣呢?我認為主要是程序的模塊化、必要的注釋。所謂模塊化就是使程序的功能實現(xiàn)分成多個單獨的功能模塊,而不能在一大段代碼中實現(xiàn)多個功能,如果這樣做,別的人是非常難讀懂你的程序。必要的注釋,顯而易見是要在程序的編寫中加入對程序的說明,原因就是為了別人能讀懂你的程序,過一段時間后你自己還能讀懂自己的程序。最后說明下這次課程設(shè)計給我感受最深的有三點:1.進行管理系統(tǒng)開發(fā)這樣的工作,要有恒心,要能靜下新來做,而不能浮躁。2.要善于同別人交流與合作,善于獲取各種有用的資源。3.要真真實實的多查資料,多問,多看。參考文獻及資料[1]《學(xué)用VisualBasic編程》潭浩西安電子科技大學(xué)出版社[2]《數(shù)據(jù)庫原理》丁寶康施伯樂著經(jīng)濟科學(xué)出版社[3]《SQLServer數(shù)據(jù)庫開發(fā)入門與范例解析》夏邦貴著北京機械工業(yè)出版社[4]《SQLServer2005應(yīng)用開發(fā)技術(shù)指南》彭東著北京清華大學(xué)出版社[5]《VisualBasic6.0》林陳雷著人民郵電出版社[6]《面向?qū)ο蟪绦蛟O(shè)計系列教材》龔沛曾著高等教育出版社[7]《VisualBasic6.0數(shù)據(jù)庫開發(fā)與專業(yè)應(yīng)用》敬錚著國防工業(yè)出版社[8]《VisualBasic6.0數(shù)據(jù)庫程序設(shè)計高手》溫賢發(fā)著科學(xué)出版社七.附錄SQLServer建立五張表VB程序及控件設(shè)置PrivateSubCommand3_Click()'取消Stusno.Text=""Stusname.Text=""Stusbirth.Text=""Stusdept.Text=""Stuall_credit.Text=""Stusexm=FalseStusexf=FalseEndSub'修改元組PrivateSubStuchange_Click()IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)ThenMsgBox"加*數(shù)據(jù)項不能為空,請重新設(shè)置",vbOKOnly,"信息提示"Stusno.SetFocusExitSubEndIfIfTrim(Stusbirth.Text)<>""ThenIfNotIsDate(Trim(Stusbirth.Text))ThenMsgBox"出生日期輸入不正確,請重新輸入",vbOKOnly,"信息提示"Stusbirth.SetFocusExitSubEndIfEndIfStuADO.Recordset.Fields("學(xué)號")=Trim(Stusno.Text)StuADO.Recordset.Fields("姓名")=Trim(Stusname.Text)StuADO.Recordset.Fields("出生日期")=Trim(Stusbirth.Text)StuADO.Recordset.Fields("專業(yè)")=Trim(Stusdept.Text)StuADO.Recordset.Fields("總學(xué)分")=Trim(Stuall_credit.Text)IfStusexm=TrueThenStuADO.Recordset.Fields("性別")="男"Else:Stusexf=TrueStuADO.Recordset.Fields("性別")="女"EndIfStuADO.Recordset.UpdateEndSub'刪除元組PrivateSubStuDel_Click()ret=MsgBox("是否要刪除"+StuADO.Recordset("學(xué)號")+"號學(xué)生的記錄?",vbYesNo,"提示")Ifret=vbYesThenStuADO.Recordset.DeleteEndIfStuADO.RecordSource="selectsno學(xué)號,sname姓名,sdept專業(yè),ssex性別,sbirth出生日期,all_credit總學(xué)分fromXS"Command3_ClickStuADO.RefreshEndSub'選中一行顯示元組PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("學(xué)號")Stusname.Text=StuADO.Recordset("姓名")Stusbirth.Text=StuADO.Recordset("出生日期")Stusdept.Text=StuADO.Recordset("專業(yè)")Stuall_credit=StuADO.Recordset("總學(xué)分")IfTrim(StuADO.Recordset("性別"))="男"ThenStusexm=TrueElseStusexf=TrueEndIfEndSub'插入元組PrivateSubStudinsert_Click()IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)ThenMsgBox"加*數(shù)據(jù)項不能為空,請重新設(shè)置",vbOKOnly,"信息提示"Stusno.SetFocusExitSubEndIfIfTrim(Stusbirth.Text)<>""ThenIfNotIsDate(Trim(Stusbirth.Text))ThenMsgBox"出生日期輸入不正確,請重新輸入",vbOKOnly,"信息提示"Stusbirth.SetFocusExitSubEndIfEndIfStuADO.Recordset.AddNewStuADO.Recordset.Fields("學(xué)號")=Trim(Stusno.Text)StuADO.Recordset.Fields("姓名")=Trim(Stusname.Text)StuADO.Recordset.Fields("出生日期")=Trim(Stusbirth.Text)StuADO.Recordset.Fields("專業(yè)")=Trim(Stusdept.Text)StuADO.Recordset.Fields("總學(xué)分")=Trim(Stuall_credit.Text)IfStusexm=TrueThenStuADO.Recordset.Fields("性別")="男"Else:Stusexf=TrueStuADO.Recordset.Fields("性別")="女"EndIfStuADO.Recordset.UpdateEndSub'取消PrivateSubStucancel_Click()Stusno.Text=""Stusname.Text=""Stucname.Text=""EndSub'選課PrivateSubStuchoose_Click()StuADOXS.RecordSource="select*fromXSwheresno='"+Trim(Stusno.Text)+"'"StuADOXS.RefreshIfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""OrTrim(Stucname.Text)=""Thenret=MsgBox("輸入不正確,請重新輸入!",vbYes,"錯誤!")ElseIfTrim(Stusname.Text)<>Trim(StuADOXS.Recordset("sname"))Thenret=MsgBox("輸入學(xué)號與姓名不匹配,請重新輸入!")ElseStuADOXS_KC.RecordSource="select*fromXS_KC"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.AddNewStuADOXS_KC.Recordset.Fields("sno")=Trim(Stusno.Text)StuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")StuADOXS_KC.Recordset.UpdateStuADO.RefreshEndIfEndSub'刪除元組PrivateSubStudelete_Click()ret=MsgBox("是否要刪除"+StuADO.Recordset("學(xué)號")+"號學(xué)生的選課記錄?",vbYesNo,"提示")Ifret=vbYesThenStuADOXS_KC.RecordSource="select*fromXS_KCwheresno='"+StuADO.Recordset("學(xué)號")+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.DeleteEndIfStuADO.RefreshStucancel_ClickEndSub'單擊顯示元組PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("學(xué)號")Stusname.Text=StuADO.Recordset("姓名")Stucname.Text=StuADO.Recordset("課程名")EndSubPrivateSubStuadd_Click()IfStugrade.Text=""Thenret=MsgBox("輸入為空,請重新輸入",vbYes,"錯誤提示")ElseStuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.RecordSource="select*fromXS_KCwherecno='"+StuADOKC.Recordset("cno")+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.Fields("sno")=Stusno.TextStuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")StuADOXS_KC.Recordset.Fields("grade")=Stugrade.TextStuADOXS_KC.Recordset.UpdateStuADO.RecordSource="selectsno學(xué)號,XS_KC.cno課程號,cname課程名,grade成績fromKC,XS_KCwhereKC.cno=XS_KC.cno"StuADO.RefreshEndIfEndSub'取消PrivateSubStucancel_Click()Stusno.Text=""Stucname.Text=""Stugrade.Text=""EndSub'刪除學(xué)生成績PrivateSubStudelete_Click()ret=MsgBox("是否要刪除"+Trim(StuADO.Recordset("學(xué)號"))+"號學(xué)生成績?",vbYesNo,"提示")Ifret=vbYesThenStuADO.Recordset("成績")=NullEndIfEndSub'單擊顯示元組PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("學(xué)號")Stucname.Text=StuADO.Recordset("課程名")EndSub'修改學(xué)生成績PrivateSubStusure_Click()IfStugrade.Text=""Thenret=MsgBox("輸入為空,請重新輸入",vbYes,"錯誤提示")ElseStuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.RecordSource="select*fromXS_KCwherecno='"+StuADOKC.Recordset("cno")+"'"+"andsno='"+Trim(Stusno.Text)+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.Fields("grade")=Trim(Stugrade.Text)StuADOXS_KC.Recordset.UpdateStuADO.RecordSource="selectsno學(xué)號,XS_KC.cno課程號,cname課程名,grade成績fromKC,XS_KCwhereKC.cno=XS_KC.cno"StuADO.RefreshEndIfEndSubPrivateSubCommand1_Click()StuSearch.ShowEndSubPrivateSubCommand2_Click()AddStu.ShowEndSubPrivateSubCommand3_Click()AddStuCourse.ShowEndSubPrivateSubCommand4_Click()AddStuGrade.ShowEndSubPrivateSubCommand5_Click()TchSearch.ShowEndSubDimSqlStrAsStringPublicSubMakeSqlStr()SqlStr=""IfTrim(Stusno)<>""ThenSqlStr=SqlStr+"andsnolike'%"+Trim(Stusno.Text)+"%'"EndIfIfTrim(Stusname)<>""ThenSqlStr=SqlStr+"andsnamelike'%"+Trim(Stusname.Text)+"%'"EndIfIfTrim(Stusdept)<>""ThenSqlStr=SqlStr+"andsdept='"+Trim(Stusdept.Text)+"'"EndIfEndSubPrivateSubCommand1_Click()MakeSqlStrStuADO.RecordSource="selectsno學(xué)號,sname姓名,sdept專業(yè),ssex性別,sbirth出生日期,all_credit總學(xué)分fromXSwhere(ssex='男'orssex='女')"_&SqlStrStuADO.RefreshEndSubPrivateSubStuDG_DblClick()ShowStuKC.StuKCADO.RecordSource="selectsname姓名,cname課程名,grade成績,credit學(xué)分,term開課學(xué)期,class_hour課時fromXS,KC,XS_KC"_&"whereXS.sno=XS_K

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論