版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGE18數(shù)據(jù)庫課程設(shè)計(jì)(學(xué)生成績管理系統(tǒng))(xiaoy)[1]正文:數(shù)據(jù)庫原理與應(yīng)用課程設(shè)計(jì)說明書題目:學(xué)生成績管理系統(tǒng)院系: 專業(yè)班級(jí): 學(xué)號(hào): 學(xué)生姓名: 指導(dǎo)教師:2008年12月22日一概述1.1目的與要求隨著科技的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據(jù)的機(jī)構(gòu)都開始使用計(jì)算機(jī)數(shù)據(jù)庫來做管理。幾乎所有學(xué)校也都已經(jīng)在使用計(jì)算機(jī)管理數(shù)據(jù)的機(jī)制,大大減少了學(xué)校學(xué)生成績管理的工作量。該課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)學(xué)生成績的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫中要求包含學(xué)生的基本信息,學(xué)科基本信息,以及學(xué)生所學(xué)課程的考試成績。要方便學(xué)生進(jìn)行成績查詢,通過該課程設(shè)計(jì),應(yīng)該達(dá)到把數(shù)據(jù)庫理論知識(shí)更加的鞏固加深,加強(qiáng)動(dòng)手能力與實(shí)踐能力,學(xué)以致用,與現(xiàn)實(shí)生活中的應(yīng)用充分的結(jié)合起來。1.2設(shè)計(jì)環(huán)境 ①
MicrosoftSQLServer2000②
MicrosoftVisualC++6.0二需求分析2.1系統(tǒng)功能要求設(shè)計(jì)此系統(tǒng)實(shí)現(xiàn)如下系統(tǒng)功能:(1)使得學(xué)生的成績管理工作更加清晰、條理化、自動(dòng)化。(2)通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學(xué)生所選課程成績,修改用戶密碼等功能。容易地完成學(xué)生信息的查詢操作。(3)設(shè)計(jì)人機(jī)友好界面,功能安排合理,操作使用方便,并且進(jìn)一步考慮系統(tǒng)在安全性,完整性,并發(fā)控制,備份和恢復(fù)等方面的功能要求。2.2系統(tǒng)模塊設(shè)計(jì)登陸失敗學(xué)生管理課程管理登陸失敗學(xué)生管理課程管理退出系統(tǒng)用戶驗(yàn)證成績查詢登陸成功2.3數(shù)據(jù)字典 數(shù)據(jù)項(xiàng)是數(shù)據(jù)庫的關(guān)系中不可再分的數(shù)據(jù)單位,下表分別列出了數(shù)據(jù)的名稱、數(shù)據(jù)類型、長度、取值能否為空。利用SQLServer2000建立“學(xué)生選課”數(shù)據(jù)庫,其基本表清單及表結(jié)構(gòu)描述如下:數(shù)據(jù)庫中用到的表:數(shù)據(jù)庫表名關(guān)系模式名稱備注Student學(xué)生學(xué)生學(xué)籍信息表Course課程課程基本信息表Score成績選課成績信息表Student基本情況數(shù)據(jù)表,結(jié)構(gòu)如下:字段名字段類型NotNull說明Student_snoCharPrimarykey學(xué)號(hào)Student_sncharNotNull學(xué)生姓名Student_sexchar‘男’或‘女’性別Student_deptchar系別Student_agechar年齡Student_addresschar地址course數(shù)據(jù)表,結(jié)構(gòu)如下:字段名字段類型約束控制說明course_cnochar主鍵(primarykey)課程號(hào)course_cnamecharnotnull課程名稱course_hourintnotnull課時(shí)course_scorenumeric(2,1)notnull學(xué)分score情況數(shù)據(jù)表,結(jié)構(gòu)如下:字段名字段類型約束控制說明score_idintnotnull成績記錄號(hào)course_cnochar外部鍵課程號(hào)student_snochar外部鍵學(xué)號(hào)scoreint成績?nèi)拍钅P驮O(shè)計(jì)由需求分析的結(jié)果可知,本系統(tǒng)設(shè)計(jì)的實(shí)體包括:(1)學(xué)生基本信息:學(xué)號(hào),姓名,性別,地址,年齡,專業(yè)。(2)課程基本信息:課程名,課程號(hào),分?jǐn)?shù),學(xué)時(shí),學(xué)分。這些實(shí)體間的聯(lián)系包括:(1)每位學(xué)生可以學(xué)習(xí)多門課程,每門課程可供多位學(xué)生學(xué)習(xí)。由上述分析可得到系統(tǒng)的E—R圖:選修課程選修課程成績學(xué)生課程號(hào)課程名學(xué)時(shí)學(xué)分分?jǐn)?shù)學(xué)號(hào)姓名性別系別地址年齡四邏輯和物理結(jié)構(gòu)設(shè)計(jì)4.1由系統(tǒng)E—R圖轉(zhuǎn)化而得到的關(guān)系模式如下:(1)學(xué)生(學(xué)號(hào),姓名,性別,年齡,地址,系別),其主關(guān)鍵字為學(xué)號(hào);(2)課程(課程名,課程號(hào),學(xué)時(shí),學(xué)分),其中主關(guān)鍵字為課程號(hào);(3)成績(課程號(hào),學(xué)號(hào),分?jǐn)?shù))其中主關(guān)鍵字為學(xué)號(hào)和課程號(hào)??梢耘c學(xué)生關(guān)系模式合并為:學(xué)生(學(xué)號(hào),姓名,性別,年齡,地址,系別,成績,課程號(hào))。4.2確定關(guān)系模型的存取方法在將概念模型轉(zhuǎn)換成物理模型之后,我們可以對(duì)物理模型進(jìn)行設(shè)計(jì),雙擊物理模型的關(guān)系,可以對(duì)該關(guān)系的名稱、注釋等信息進(jìn)行查詢??蓪?duì)該關(guān)系的屬性列進(jìn)行設(shè)計(jì),可分別設(shè)置其名稱、碼、數(shù)據(jù)類型以及主碼、是否為空等。在實(shí)際設(shè)計(jì)中最常用的存取方法是索引發(fā),使用索引可以大大減少數(shù)據(jù)的查詢時(shí)間,在建立索引時(shí)應(yīng)遵循:在經(jīng)常需要搜索的列上建立索引;
在主關(guān)鍵字上建立索引;在經(jīng)常用于連接的列上建立索引,即在外鍵上建立索引;在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負(fù)面作用。4.3確定數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)確定數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)主要指確定數(shù)據(jù)的存放位置和存儲(chǔ)結(jié)構(gòu),包括確定關(guān)系、索引、日志、備份等的存儲(chǔ)安排及存儲(chǔ)結(jié)構(gòu),以及確定系統(tǒng)存儲(chǔ)參數(shù)的配置。因?yàn)樵摮煽児芾硐到y(tǒng)的數(shù)據(jù)量小,,所以我們只用把數(shù)據(jù)存儲(chǔ)在使用的電腦硬盤上,不用作更多的安排。(1)創(chuàng)建學(xué)生基本信息表:createtableStudent(學(xué)號(hào)varchar(11)notnull,系別varchar(5)notnull,姓名varchar(6)notnull,性別varchar(2)notnull,年齡char(2)notnull,地址varchar(20)notnull,constraintPK_STUDENTprimarykey(學(xué)號(hào)))goexecutesp_addextendedproperty'MS_Description','學(xué)生基本信息描述','user','','table','StudentsInfo'go(2)創(chuàng)建課程表:createtableCourse(cnovarchar(5)notnull,cnamevarchar(10)null,xueshismallintnull,xuefenintnull,constraintPK_COURSEprimarykey(課程號(hào)))goexecutesp_addextendedproperty'MS_Description',(3)創(chuàng)建學(xué)生與課程的成績表createtableSC(snovarchar(11)notnull,cnovarchar(5)notnull,chengjivarchar(4)notnullconstraintPK_SCprimarykey(學(xué)號(hào),課程號(hào)))go在SC表上創(chuàng)建索引SC_FK與SC2_FKcreateindexSC_FKonSC(學(xué)號(hào)ASC)GocreateindexSC2_FKonSC(課程號(hào)ASC)go建立課程號(hào)索引createindexTC_FKonTC(課程號(hào)ASC)go下圖顯示了學(xué)生,課程和成績?nèi)齻€(gè)關(guān)系的物理設(shè)計(jì)其中課程號(hào)與學(xué)號(hào)號(hào)分別為關(guān)系的主碼。五數(shù)據(jù)庫的實(shí)施與維護(hù)5.1數(shù)據(jù)庫的實(shí)施:此階段主要任務(wù)包括創(chuàng)建數(shù)據(jù)庫,加載初始數(shù)據(jù),數(shù)據(jù)庫試運(yùn)行,數(shù)據(jù)庫的安全性和完整性控制數(shù)據(jù)庫的備份與恢復(fù),數(shù)據(jù)庫性能的監(jiān)督分析和改僅,數(shù)據(jù)庫的重組和重構(gòu)等。首先在數(shù)據(jù)庫中建立一個(gè)學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫,然后新建一個(gè)數(shù)據(jù)源。主要代碼如下:#include"stdafx.h"#include"StudentScore.h"#include"Course.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;//CCourseIMPLEMENT_DYNAMIC(CCourse,CRecordset)CCourse::CCourse(CDatabase*pdb) :CRecordset(pdb){ //{{AFX_FIELD_INIT(CCourse) //}}AFX_FIELD_INIT m_nDefaultType=snapshot;CStringCCourse::GetDefaultConnect(){ return_T("ODBC;DSN=");}CStringCCourse::GetDefaultSQL(){ return_T("");}voidCCourse::DoFieldExchange(CFieldExchange*pFX){ //{{AFX_FIELD_MAP(CCourse) pFX->SetFieldType(CFieldExchange::outputColumn); //}}AFX_FIELD_MAP}//CCoursediagnosticsvoidCCourse::AssertValid()const{ CRecordset::AssertValid();}voidCCourse::Dump(CDumpContext&dc)const{ CRecordset::Dump(dc);}//MainFrm.h:interfaceoftheCMainFrameclassclassCMainFrame:publicCFrameWnd{protected://createfromserializationonly CMainFrame(); DECLARE_DYNCREATE(CMainFrame)//Attributespublic://Operationspublic://Overrides //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CMainFrame) virtualBOOLPreCreateWindow(CREATESTRUCT&cs); //}}AFX_VIRTUAL//Implementationpublic: virtual~CMainFrame();protected://controlbarembeddedmembers //CStatusBarm_wndStatusBar; //CToolBarm_wndToolBar;//Generatedmessagemapfunctionsprotected: //{{AFX_MSG(CMainFrame) afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct); afx_msgvoidOnPassword(); afx_msgvoidOnUser(); afx_msgvoidOnStudent(); afx_msgvoidOnTeach(); afx_msgvoidOnTeacher(); afx_msgvoidOnScore(); afx_msgvoidOnQueryTeach(); afx_msgvoidOnQueryScore(); afx_msgvoidOnCourse(); //}}AFX_MSG DECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.//CScoreAddDlgdialogCScoreAddDlg::CScoreAddDlg(CWnd*pParent/*=NULL*/) :CDialog(CScoreAddDlg::IDD,pParent){/{{AFX_DATA_INIT(CScoreAddDlg) //}}AFX_DATA_INIT}voidCScoreAddDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CScoreAddDlg) DDX_Control(pDX,IDC_SCORE_STUDENT,m_cStudent); DDX_Control(pDX,IDC_SCORE_SCORE,m_cScore); DDX_Control(pDX,IDC_SCORE_COURSE,m_cCourse); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CScoreAddDlg,CDialog) //{{AFX_MSG_MAP(CScoreAddDlg) //}}AFX_MSG_MAPEND_MESSAGE_MAP()voidCScoreAddDlg::OnOK(){ CStringstudent,course,score,student_no,course_no; m_cStudent.GetWindowText(student); m_cCourse.GetWindowText(course);m_cScore.GetWindowText(score); else//成績不為空 { CStringstrSQL; //查出該學(xué)生的學(xué)號(hào) strSQL.Format("select*fromstudentwhereactive_status='Y'andstudent_name='%s'",student); CRecordsetm_recordSet=&m_database; m_recordSet.Open(CRecordset::forwardOnly,strSQL);m_recordSet.GetFieldValue("student_no",student_no); m_recordSet.Close(); //查出該課程的課程號(hào)strSQL.Format("select*fromcoursewhereactive_status='Y'andcourse_name='%s'",course); m_recordSet.Open(CRecordset::forwardOnly,strSQL);m_recordSet.GetFieldValue("course_no",course_no);; m_recordSet.Close();BOOLCScoreAddDlg::OnInitDialog(){ CDialog::OnInitDialog(); CRecordsetm_recordSet; if(!m_database.IsOpen()) { m_database.Open(_T("student")); m_recordSet.m_pDatabase=&m_database; } CStringstrSQL; strSQL.Format("selectcourse_namefromcoursewhereactive_status='Y'");m_recordSet.Open(CRecordset::forwardOnly,strSQL); for(inti=0;i<m_recordSet.GetRecordCount();i++){ CStringtemp; m_recordSet.GetFieldValue("course_name",temp); m_cCourse.AddString(temp);m_recordSet.MoveNext(); } m_recordSet.Close();m_cCourse.SetCurSel(1); strSQL.Format("selectstudent_namefromstudentwhereactive_status='Y'");m_recordSet.Open(CRecordset::forwardOnly,strSQL); for(intj=0;j<m_recordSet.GetRecordCount();j++){ CStringtemp; m_recordSet.GetFieldValue("student_name",temp); m_cStudent.AddString(temp);m_recordSet.MoveNext(); } m_recordSet.Close();m_cStudent.SetCurSel(1); { this->SetWindowText("成績窗口"); } returntrue;}voidCScoreAddDlg::OnCancel(){ //TODO:Addextracleanuphere CDialog::OnCancel();}PAGE165.2部分操作截圖:下圖顯示了學(xué)生登陸系統(tǒng)進(jìn)行查詢時(shí)界面:下圖顯示了進(jìn)行課程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年貨物運(yùn)輸合同規(guī)定運(yùn)輸方式與責(zé)任
- 2025年度歷史建筑保護(hù)拆墻工程合作協(xié)議4篇
- 2024豬場租賃承包合同
- 2024節(jié)能減排協(xié)議書
- 《中樞性高熱患者的護(hù)理與治療》課件
- 2025年度新媒體運(yùn)營與公關(guān)合作服務(wù)合同范本4篇
- 2024年05月云南廣發(fā)銀行昆明分行招考筆試歷年參考題庫附帶答案詳解
- 2025年度大數(shù)據(jù)分析服務(wù)合同樣本8篇
- 2025變頻器代理商銷售合同:市場拓展與品牌推廣合作3篇
- 二零二五年度高端酒店集團(tuán)食材供應(yīng)與服務(wù)合同3篇
- 常見老年慢性病防治與護(hù)理課件整理
- 履約情況證明(共6篇)
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 設(shè)備機(jī)房出入登記表
- 六年級(jí)語文-文言文閱讀訓(xùn)練題50篇-含答案
- 醫(yī)用冰箱溫度登記表
- 零售學(xué)(第二版)第01章零售導(dǎo)論
- 大學(xué)植物生理學(xué)經(jīng)典05植物光合作用
- 口袋妖怪白金光圖文攻略2周目
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數(shù)據(jù)標(biāo)準(zhǔn)
- 三年級(jí)下冊(cè)生字組詞(帶拼音)
評(píng)論
0/150
提交評(píng)論