數(shù)據(jù)庫課程設計(學生成績管理系統(tǒng))(.xiaoy)
《數(shù)據(jù)庫課程設計(學生成績管理系統(tǒng))(.xiaoy)》由會員分享,可在線閱讀,更多相關《數(shù)據(jù)庫課程設計(學生成績管理系統(tǒng))(.xiaoy)(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、正文: 數(shù)據(jù)庫原理與應用課程設計說明書題目:學生成績管理系統(tǒng) 院系:專業(yè)班級:學號:學生姓名:指導教師: 2008年12月22日 1 概述 1.1目的與要求 隨著科技的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據(jù)的機構都開始使用計算機數(shù)據(jù)庫來做管理。幾乎所有學校也都已經(jīng)在使用計算機管理數(shù)據(jù)的機制,大大減少了學校學生成績管理的工作量。該課程設計要求設計一個學生成績的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫中要求包含學生的基本信息,學科基本信息,以及學生所學課程的考試成績。要方便學生進行成績查詢,通過該課程設計,應該達到把數(shù)據(jù)庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現(xiàn)實生活中的應用充分
2、的結合起來。 1.2設計環(huán)境 ①MicrosoftSQLServer2000 6.0 2.1 系統(tǒng)功能要求設計 此系統(tǒng)實現(xiàn)如下系統(tǒng)功能: 1)使得學生的成績管理工作更加清晰、條理化、自動化。 2)通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能。容易地完成學生信息的查詢操作。 (3)設計人機友好界面,功能安排合理,操作使用方便,并且進一步考慮系統(tǒng)在安全性,完整性,并發(fā)控制,備份和恢復等方面的功能要求。 2.2 系統(tǒng)模塊設計 成績管理系統(tǒng)大體可以分成二大模塊如,一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊,在
3、該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統(tǒng)計等功能模塊;再其次還有教師、課程等相關信息的模塊;可以得到系統(tǒng)流程圖: 2.3 數(shù)據(jù)字典 數(shù)據(jù)項是數(shù)據(jù)庫的關系中不可再分的數(shù)據(jù)單位,下表分別列出了數(shù)據(jù)的名稱、數(shù)據(jù)類型、長度、取值能否為空。利用SQLServer2000建立“學生選課”數(shù)據(jù)庫,其基本表清單及表結構描述如下:數(shù)據(jù)庫中用到的表: 數(shù)據(jù)庫表名 關系模式名稱 備注 Student 學生 學生學籍信息表 Course 課程 課程基本信息表 Score 成績 選課成績信息表 Student基本情況數(shù)據(jù)
4、表,結構如下: 字段名 字段類型 NotNull 說明 Studentsno Char Primarykey 學號 Studentsn char NotNull 學生姓名 Studentsex char '男'或'女' 性別 Studentdept char 系別 Studentage char 年齡 Studentaddress char 地址 course數(shù)據(jù)表,結構如下: 字段名 字段類型 約束控制 說明 course_cno char 主鍵(primarykey) 課程號 course_cname
5、 char notnull 課程名稱 coursehour int notnull 課時 course_score numeric(2,l) notnull 學分 score情況數(shù)據(jù)表,結構如下: 字段名 字段類型 約束控制 說明 score_id int notnull 成績記錄號 course_cno char 外部鍵 課程號 student_sno char 外部鍵 學號 score int 成績 三 概念模型設計 由需求分析的結果可知,本系統(tǒng)設計的實體包括: 1)學生基本信息:學號,姓名,性別,地址,年齡,
6、專業(yè)。 2)課程基本信息:課程名,課程號,分數(shù),學時,學分。這些實體間的聯(lián)系包括: (1)每位學生可以學習多門課程,每門課程可供多位學生學習 由上述分析可得到系統(tǒng)的E—R圖: 四 邏輯和物理結構設計 4.1由系統(tǒng)E-R圖轉化而得到的關系模式如下: (1)學生(學號,姓名,性別,年齡,地址,系別),其主關鍵字為學號; (2)課程(課程名,課程號,學時,學分),其中主關鍵字為課程號; (3)成績(課程號,學號,分數(shù))其中主關鍵字為學號和課程號??梢耘c學生關系模式合并為:學生(學號,姓名,性別,年齡,地址,系別,成績,課程號)。 4.2確定關系模型的存取方法 在將概念模型
7、轉換成物理模型之后,我們可以對物理模型進行設計,雙擊物理模型的關系,可以對該關系的名稱、注釋等信息進行查詢??蓪υ撽P系的屬性列進行設計,可分別設置其名稱、碼、數(shù)據(jù)類型以及主碼、是否為空等。在實際設計中最常用的存取方法是索引發(fā),使用索引可以大大減少數(shù)據(jù)的查詢時間,在建立索引時應遵循:在經(jīng)常需要搜索的列上建立索引;在主關鍵字上建立索引;在經(jīng)常用于連接的列上建立索引,即在外鍵上建立索引;在經(jīng)常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負面作用。 4.3 確定數(shù)據(jù)庫的存儲結構 確定數(shù)據(jù)庫的存儲結構主要指確定數(shù)據(jù)的存放位置
8、和存儲結構,包括確定關系、索引、日志、備 因為該成績管理系統(tǒng)的數(shù)據(jù)量小,,所以 份等的存儲安排及存儲結構,以及確定系統(tǒng)存儲參數(shù)的配置。我們只用把數(shù)據(jù)存儲在使用的電腦硬盤上,不用作更多的安排 (1)創(chuàng)建學生基本信息表: createtableStudent( 學號 varchar(11) notnull, 系別 varchar(5) notnull, 姓名 varchar(6) notnull, 性別 varchar(2) notnull, 年齡 char(2) notnull, 地址 varchar(20) notnull, con
9、straintPK_STUDENTprimarykey (學號) 6 # go executesp_addextendedproperty'MS_Description','學生基本信息描述', 'user','','table','StudentsInfo'go (2)創(chuàng)建課程表:createtableCourse( cno cname xueshi varchar(5) varchar(10)smallint int xuefen constraintPK_COURSEprimarykey(課程號)) notnull, null,
10、 null, null, # go MS_Description', executesp_addextendedproperty' createtableSC(sno (3)創(chuàng)建學生與課程的成績表 cno varchar(5) notnull, chengji varchar(4) notnull varchar(11) notnull, constraintPK_SCprimarykey(學號,課程號)) go 在SC表上創(chuàng)建索引SC_FK與SC2_FKcreateindexSC_FKonSC(學號ASC) Go createindexSC
11、2_FKonSC(課程號ASC) go 建立課程號索引 createindexTC_FKonTC( 課程號ASC ) go 下圖顯示了學生,課程和成績?nèi)齻€關系的物理設計其中課程號與學號號分別為關系的主碼。 "student+ SCOTC+ 五 數(shù)據(jù)庫的實施與維護 5.1數(shù)據(jù)庫的實施: 此階段主要任務包括創(chuàng)建數(shù)據(jù)庫,加載初始數(shù)據(jù),數(shù)據(jù)庫試運行,數(shù)據(jù)庫的安全性和完整性控制數(shù)據(jù)庫的備份與恢復,數(shù)據(jù)庫性能的監(jiān)督分析和改僅,數(shù)據(jù)庫的重組和重構等。首先在數(shù)據(jù)庫中建立一個學生成績管理系統(tǒng)數(shù)據(jù)庫,然后新建一個數(shù)據(jù)源。主要代碼如下: #include"stdafx.h" #inc
12、lude"StudentScore.h" #include"Course.h" #ifdef_DEBUG #definenewDEBUG_NEW #undefTHIS_FILE staticcharTHIS_FILE[]=__FILE__; //CCourse IMPLEMENT_DYNAMIC(CCourse,CRecordset) CCourse::CCourse(CDatabase*pdb) :CRecordset(pdb) {〃{{AFX_FIELD_INIT(CCourse)//}}AFX_FIELD_INITm_nDefaultType=snapshot; C
13、StringCCourse::GetDefaultConnect() {return_T("ODBC;DSN="); } CStringCCourse::GetDefaultSQL() {return_T("");} voidCCourse::DoFieldExchange(CFieldExchange*pFX) { //{{AFX_FIELD_MAP(CCourse)pFX->SetFieldType(CFieldExchange::outputColumn);//}}AFX_FIELD_MAP } //CCoursediagnostics voidCCourse::As
14、sertValid()const {CRecordset::AssertValid();}voidCCourse::Dump(CDumpContext&dc)const {CRecordset::Dump(dc);} //MainFrm.h:interfaceoftheCMainFrameclassclassCMainFrame:publicCFrameWnd{protected://createfromserializationonly CMainFrame();DECLARE_DYNCREATE(CMainFrame) //Attributespublic: //Operati
15、onspublic: //Overrides //ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CMainFrame) virtualBOOLPreCreateWindow(CREATESTRUCT&cs);//}}AFX_VIRTUAL //Implementation public: virtual~CMainFrame(); protected://controlbarembeddedmembers //CStatusBarm_wndStatusBar;//CToolBarm_wndToolBar;
16、 //Generatedmessagemapfunctionsprotected: //{{AFX_MSG(CMainFrame)afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);afx_msgvoidOnPassword(); afx_msgvoidOnUser(); afx_msgvoidOnStudent(); afx_msgvoidOnTeach(); afx_msgvoidOnTeacher(); afx_msgvoidOnScore(); afx_msgvoidOnQueryTeach(); afx_msgvoidO
17、nQueryScore(); afx_msgvoidOnCourse(); //}}AFX_MSGDECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} //MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline. //CScoreAddDlgdialog CScoreAddDlg::CScoreAddDlg(CWnd*pParent/*=NULL*/) :CDialog(CScoreAddDlg::IDD,pParent)
18、 {/{{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
19、,m_cCourse); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CScoreAddDlg,CDialog) //{{AFX_MSG_MAP(CScoreAddDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() voidCScoreAddDlg::OnOK() { CStringstudent,course,score,student_no,course_no;m_cStudent.GetWindowText(student);m_cCourse.GetWindowText(course);m_cScore.GetW
20、indowText(score); else//成績不為空 { CStringstrSQL; //查出該學生的學號 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.Clo
21、se(); //查出該課程的課程號 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
22、_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 23、temp;
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 24、etRecordCount();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
25、CDialog::OnCancel();
}
10
5.2部分操作截圖:
下圖顯示了學生登陸系統(tǒng)進行查詢時界面:
成績查詢功能:
下圖顯示了進行課程查詢時界面:
5.3數(shù)據(jù)庫的維護
當試運行數(shù)據(jù)庫合格后,數(shù)據(jù)庫開發(fā)設計的工作就基本完成了,接下來就是正式運行中的調(diào)試,應為該系統(tǒng)比較簡單,數(shù)據(jù)量小,數(shù)據(jù)庫中幾乎不會發(fā)生什么大的變化,但是還是需要做好數(shù)據(jù)的備份,在sqlserver中我們可以利用備份數(shù)據(jù)庫的功能對已經(jīng)設計好的數(shù)據(jù)做備份,如果數(shù)據(jù)庫受到破壞或系統(tǒng)故障,我們便可輕松的利用備份文件恢復數(shù)據(jù)庫的數(shù)據(jù)。當然也可以利用其他各*方法進行數(shù)據(jù)維護。
六總纟口
進一步深入理解數(shù)據(jù)庫設計的整個過程,該學生選課系統(tǒng)的需求分析、數(shù)據(jù)庫概念結構設計有關內(nèi)容等。掌握使用前臺程序設計技術VC和SQLServer結合設計
C/S結構的管理信息系統(tǒng)。綜合練習了SQLServer的使用和數(shù)據(jù)庫得管理技術。綜合熟悉并練習了SQL語言在編程中的使用。綜合訓練編程能力。認識系統(tǒng),取得系統(tǒng)需求分析,更重要得是在編程方面提高了實現(xiàn)目標代碼得能力及調(diào)試代碼得能力
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結+在機關“弘揚憲法精神推動發(fā)改工作高質量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結
- 2024-2025年秋季第一學期初中歷史上冊教研組工作總結
- 2024年小學高級教師年終工作總結匯報
- 2024-2025年秋季第一學期初中物理上冊教研組工作總結
- 2024年xx鎮(zhèn)交通年度總結
- 2024-2025年秋季第一學期小學語文教師工作總結
- 2024年XX村陳規(guī)陋習整治報告
- 2025年學校元旦迎新盛典活動策劃方案
- 2024年學校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告