版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)庫</b></p><p><b> 課程設(shè)計說明書</b></p><p> 題目: 學(xué)生成績管理系統(tǒng) </p><p> 院 系: </p><p> 專業(yè)班級:
2、 </p><p> 學(xué) 號: </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 2012年 12 月 6 日</p><p>&l
3、t;b> 一 概述</b></p><p><b> 1.1目的與要求</b></p><p> 隨著科技的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據(jù)的機(jī)構(gòu)都開始使用計算機(jī)數(shù)據(jù)庫來做管理。幾乎所有學(xué)校也都已經(jīng)在使用計算機(jī)管理數(shù)據(jù)的機(jī)制,大大減少了學(xué)校學(xué)生成績管理的工作量。該課程設(shè)計要求設(shè)計一個學(xué)生成績的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫中要求包含學(xué)生的基本信息,學(xué)
4、科基本信息,以及學(xué)生所學(xué)課程的考試成績。要方便學(xué)生進(jìn)行成績查詢,通過該課程設(shè)計,應(yīng)該達(dá)到把數(shù)據(jù)庫理論知識更加的鞏固加深,加強(qiáng)動手能力與實踐能力,學(xué)以致用,與現(xiàn)實生活中的應(yīng)用充分的結(jié)合起來。</p><p><b> 1.2設(shè)計環(huán)境</b></p><p> ① Microsoft SQL Server 2008</p><
5、;p> ?、?#160; Microsoft Visual C#</p><p><b> 二 需求分析</b></p><p> 2.1 系統(tǒng)功能要求設(shè)計</p><p> 此系統(tǒng)實現(xiàn)如下系統(tǒng)功能:</p><p> ?。?)使得學(xué)生的成績管理工作更加清晰、條理化、自動化。</p>
6、<p> ?。?)通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學(xué)生所選課程成績,修改用戶密碼等功能。 容易地完成學(xué)生信息的查詢操作。</p><p> (3) 設(shè)計人機(jī)友好界面,功能安排合理,操作使用方便,并且進(jìn)一步考慮系統(tǒng)在安全性,完整性,并發(fā)控制,備份和恢復(fù)等方面的功能要求。</p><p> 2.2 系統(tǒng)模塊設(shè)計</p><p> 成績管理系統(tǒng)
7、大體可以分成二大模塊如, 一是學(xué)生的基本信息模塊,里面應(yīng)該包含學(xué)生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應(yīng)該包含有對學(xué)生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學(xué)生的統(tǒng)計等功能模塊;再其次還有教師、課程等相關(guān)信息的模塊;可以得到系統(tǒng)流程圖:</p><p><b> 2.3 數(shù)據(jù)字典</b></p><p> 數(shù)據(jù)項是數(shù)據(jù)庫的
8、關(guān)系中不可再分的數(shù)據(jù)單位,下表分別列出了數(shù)據(jù)的名稱、數(shù)據(jù)類型、長度、取值能否為空。利用SQL Server 2000建立“學(xué)生選課”數(shù)據(jù)庫,其基本表清單及表結(jié)構(gòu)描述如下:</p><p><b> 數(shù)據(jù)庫中用到的表:</b></p><p> Student基本情況數(shù)據(jù)表,結(jié)構(gòu)如下:</p><p> course數(shù)據(jù)表,結(jié)構(gòu)如下:<
9、;/p><p> score情況數(shù)據(jù)表,結(jié)構(gòu)如下:</p><p><b> 三 概念模型設(shè)計</b></p><p> 由需求分析的結(jié)果可知,本系統(tǒng)設(shè)計的實體包括:</p><p> (1)學(xué)生基本信息:學(xué)號,姓名,性別,地址,年齡,專業(yè)。</p><p> ?。?)課程基本信息: 課程名,
10、課程號,分?jǐn)?shù),學(xué)時,學(xué)分。 </p><p> 這些實體間的聯(lián)系包括:</p><p> ?。?)每位學(xué)生可以學(xué)習(xí)多門課程,每門課程可供多位學(xué)生學(xué)習(xí)。</p><p> 由上述分析可得到系統(tǒng)的E—R圖:</p><p> 四 邏輯和物理結(jié)構(gòu)設(shè)計</p><p> 4.1由系統(tǒng)E—R圖轉(zhuǎn)化而得到的關(guān)系模式如下:&
11、lt;/p><p> ?。?)學(xué)生(學(xué)號,姓名,性別,年齡,地址,系別),其主關(guān)鍵字為學(xué)號;</p><p> ?。?)課程(課程名,課程號,學(xué)時,學(xué)分),其中主關(guān)鍵字為課程號;</p><p> ?。?)成績(課程號,學(xué)號,分?jǐn)?shù))其中主關(guān)鍵字為學(xué)號和課程號??梢耘c學(xué)生關(guān)系模式合并為:學(xué)生(學(xué)號,姓名,性別,年齡,地址,系別,成績,課程號)。</p>&l
12、t;p> 4.2 確定關(guān)系模型的存取方法</p><p> 在將概念模型轉(zhuǎn)換成物理模型之后,我們可以對物理模型進(jìn)行設(shè)計,雙擊物理模型的關(guān)系,可以對該關(guān)系的名稱、注釋等信息進(jìn)行查詢??蓪υ撽P(guān)系的屬性列進(jìn)行設(shè)計,可分別設(shè)置其名稱、碼、數(shù)據(jù)類型以及主碼、是否為空等。在實際設(shè)計中最常用的存取方法是索引發(fā),使用索引可以大大減少數(shù)據(jù)的查詢時間,在建立索引時應(yīng)遵循:在經(jīng)常需要搜索的列上建立索引; 在主關(guān)鍵
13、字上建立索引;在經(jīng)常用于連接的列上建立索引,即在外鍵上建立索引;在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負(fù)面作用。</p><p> 4.3 確定數(shù)據(jù)庫的存儲結(jié)構(gòu)</p><p> 確定數(shù)據(jù)庫的存儲結(jié)構(gòu)主要指確定數(shù)據(jù)的存放位置和存儲結(jié)構(gòu),包括確定關(guān)系、索引、日志、備份等的存儲安排及存儲結(jié)構(gòu),以及確定系
14、統(tǒng)存儲參數(shù)的配置。因為該成績管理系統(tǒng)的數(shù)據(jù)量小,,所以我們只用把數(shù)據(jù)存儲在使用的電腦硬盤上,不用作更多的安排。</p><p> (1)創(chuàng)建學(xué)生基本信息表:</p><p> create table Student (</p><p> 學(xué)號 varchar(11) not null,</p&g
15、t;<p> 系別 varchar(5) not null,</p><p> 姓名 varchar(6) not null,</p><p> 性別 varchar(2) not null,</p><
16、;p> 年齡 char(2) not null,</p><p> 地址 varchar(20) not null,</p><p> constraint PK_STUDENT primary key (學(xué)號)</p><p><b>
17、)</b></p><p><b> go</b></p><p> execute sp_addextendedproperty 'MS_Description', </p><p> '學(xué)生基本信息描述',</p><p> 'user', '
18、;', 'table', 'StudentsInfo'</p><p><b> go</b></p><p><b> (2)創(chuàng)建課程表:</b></p><p> create table Course (</p><p> cno
19、 varchar(5) not null,</p><p> cname varchar(10) null,</p><p> xueshi smallint null,</p><p> xuefen
20、 int null,</p><p> constraint PK_COURSE primary key (課程號))</p><p><b> go</b></p><p> execute sp_addextendedproperty 'MS_Description&
21、#39;, </p><p> (3)創(chuàng)建學(xué)生與課程的成績表</p><p> create table SC ( sno varchar(11) not null,</p><p> cno varchar(5) not null,</p>
22、<p> chengji varchar(4) not null</p><p> constraint PK_SC primary key (學(xué)號, 課程號)</p><p><b> )</b></p><p><b> go</b></p>
23、;<p> 在SC表上創(chuàng)建索引SC_FK與SC2_FK</p><p> create index SC_FK on SC (學(xué)號 ASC)</p><p><b> Go</b></p><p> create index SC2_FK on SC (課程號 ASC)</p><p>&l
24、t;b> go</b></p><p><b> 建立課程號索引</b></p><p> create index TC_FK on TC (</p><p><b> 課程號 ASC</b></p><p><b> )</b></p&
25、gt;<p><b> go</b></p><p> 下圖顯示了學(xué)生,課程和成績?nèi)齻€關(guān)系的物理設(shè)計其中課程號與學(xué)號號分別為關(guān)系的主碼。</p><p> 五 數(shù)據(jù)庫的實施與維護(hù)</p><p> 5.1 數(shù)據(jù)庫的實施:</p><p> 此階段主要任務(wù)包括創(chuàng)建數(shù)據(jù)庫,加載初始數(shù)據(jù),數(shù)據(jù)庫試運(yùn)行,
26、數(shù)據(jù)庫的安全性和完整性控制數(shù)據(jù)庫的備份與恢復(fù),數(shù)據(jù)庫性能的監(jiān)督分析和改僅,數(shù)據(jù)庫的重組和重構(gòu)等。首先在數(shù)據(jù)庫中建立一個學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫,然后新建一個數(shù)據(jù)源。主要代碼如下:</p><p> #include "stdafx.h"</p><p> #include "StudentScore.h"</p><p>
27、 #include "Course.h"</p><p> #ifdef _DEBUG</p><p> #define new DEBUG_NEW</p><p> #undef THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p>&
28、lt;p> // CCourse</p><p> IMPLEMENT_DYNAMIC(CCourse, CRecordset)</p><p> CCourse::CCourse(CDatabase* pdb)</p><p> : CRecordset(pdb)</p><p> {//{{AFX_FIELD_INIT(
29、CCourse)</p><p> //}}AFX_FIELD_INIT</p><p> m_nDefaultType = snapshot;</p><p> CString CCourse::GetDefaultConnect()</p><p> {return _T("ODBC;DSN=");</
30、p><p><b> }</b></p><p> CString CCourse::GetDefaultSQL()</p><p> {return _T("");}</p><p> void CCourse::DoFieldExchange(CFieldExchange* pFX)<
31、/p><p><b> {</b></p><p> //{{AFX_FIELD_MAP(CCourse)</p><p> pFX->SetFieldType(CFieldExchange::outputColumn);</p><p> //}}AFX_FIELD_MAP</p><p&
32、gt;<b> }</b></p><p> // CCourse diagnostics</p><p> void CCourse::AssertValid() const</p><p> {CRecordset::AssertValid();}</p><p> void CCourse::Dump(
33、CDumpContext& dc) const</p><p> {CRecordset::Dump(dc);}</p><p> // MainFrm.h : interface of the CMainFrame class</p><p> class CMainFrame : public CFrameWnd</p><p
34、> {protected: // create from serialization only</p><p> CMainFrame();</p><p> DECLARE_DYNCREATE(CMainFrame)</p><p> // Attributes</p><p><b> public:</b
35、></p><p> // Operations</p><p><b> public:</b></p><p> // Overrides</p><p> // ClassWizard generated virtual function overrides</p><p>
36、 //{{AFX_VIRTUAL(CMainFrame)</p><p> virtual BOOL PreCreateWindow(CREATESTRUCT& cs);</p><p> //}}AFX_VIRTUAL</p><p> // Implementation</p><p><b> public:&
37、lt;/b></p><p> virtual ~CMainFrame();</p><p> protected: // control bar embedded members</p><p> //CStatusBar m_wndStatusBar;</p><p> //CToolBar m_wndToolBa
38、r;</p><p> // Generated message map functions</p><p> protected:</p><p> //{{AFX_MSG(CMainFrame)</p><p> afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);</p&
39、gt;<p> afx_msg void OnPassword();</p><p> afx_msg void OnUser();</p><p> afx_msg void OnStudent();</p><p> afx_msg void OnTeach();</p><p> afx_msg void OnT
40、eacher();</p><p> afx_msg void OnScore();</p><p> afx_msg void OnQueryTeach();</p><p> afx_msg void OnQueryScore();</p><p> afx_msg void OnCourse();</p><
41、p> //}}AFX_MSG</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b></p><p> //{{AFX_INSERT_LOCATION}}</p><p> // Microsoft Visual C++ will insert additio
42、nal declarations immediately before the previous line.</p><p> // CScoreAddDlg dialog</p><p> CScoreAddDlg::CScoreAddDlg(CWnd* pParent /*=NULL*/)</p><p> : CDialog(CScoreAddDlg::
43、IDD, pParent)</p><p> {/{{AFX_DATA_INIT(CScoreAddDlg)</p><p> //}}AFX_DATA_INIT</p><p><b> }</b></p><p> void CScoreAddDlg::DoDataExchange(CDataExchange
44、* pDX)</p><p><b> {</b></p><p> CDialog::DoDataExchange(pDX);</p><p> //{{AFX_DATA_MAP(CScoreAddDlg)</p><p> DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStud
45、ent);</p><p> DDX_Control(pDX, IDC_SCORE_SCORE, m_cScore);</p><p> DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);</p><p> //}}AFX_DATA_MAP</p><p><b> }</b&
46、gt;</p><p> BEGIN_MESSAGE_MAP(CScoreAddDlg, CDialog)</p><p> //{{AFX_MSG_MAP(CScoreAddDlg)</p><p> //}}AFX_MSG_MAP</p><p> END_MESSAGE_MAP()</p><p> v
47、oid CScoreAddDlg::OnOK()</p><p><b> {</b></p><p> CString student,course,score,student_no,course_no;</p><p> m_cStudent.GetWindowText(student);</p><p>
48、m_cCourse.GetWindowText(course);</p><p> m_cScore.GetWindowText(score);</p><p> else//成績不為空</p><p><b> {</b></p><p> CString strSQL;</p><p>
49、; //查出該學(xué)生的學(xué)號</p><p> strSQL.Format("select * from student where active_status='Y' and student_name='%s'",student);</p><p> CRecordset m_recordSet=&m_database;<
50、;/p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p> m_recordSet.GetFieldValue("student_no",student_no);</p><p> m_recordSet.Close();</p><p> /
51、/查出該課程的課程號 </p><p> strSQL.Format("select * from course where active_status='Y' and course_name='%s'",course);</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL
52、);</p><p> m_recordSet.GetFieldValue("course_no",course_no);;</p><p> m_recordSet.Close();</p><p> BOOL CScoreAddDlg::OnInitDialog()</p><p><b> {<
53、;/b></p><p> CDialog::OnInitDialog();</p><p> CRecordset m_recordSet;</p><p> if(!m_database.IsOpen())</p><p><b> {</b></p><p> m_datab
54、ase.Open(_T("student"));</p><p> m_recordSet.m_pDatabase=&m_database;</p><p><b> }</b></p><p> CString strSQL;</p><p> strSQL.Format("
55、;select course_name from course where active_status='Y'");</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p> for(int i=0;i<m_recordSet.GetRecordCount();i++){<
56、;/p><p> CString temp;</p><p> m_recordSet.GetFieldValue("course_name",temp);</p><p> m_cCourse.AddString(temp);</p><p> m_recordSet.MoveNext();</p>&
57、lt;p><b> }</b></p><p> m_recordSet.Close();</p><p> m_cCourse.SetCurSel(1);</p><p> strSQL.Format("select student_name from student where active_status='
58、Y'");</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p> for(int j=0;j<m_recordSet.GetRecordCount();j++){</p><p> CString temp;</p><p> m
59、_recordSet.GetFieldValue("student_name",temp);</p><p> m_cStudent.AddString(temp);</p><p> m_recordSet.MoveNext();</p><p><b> }</b></p><p> m_
60、recordSet.Close();</p><p> m_cStudent.SetCurSel(1);</p><p><b> {</b></p><p> this->SetWindowText("成績窗口");</p><p><b> }</b></
61、p><p> return true;</p><p><b> }</b></p><p> void CScoreAddDlg::OnCancel() </p><p><b> {</b></p><p> // TODO: Add extra cleanup h
62、ere</p><p> CDialog::OnCancel();</p><p><b> }</b></p><p> 5.2部分操作截圖:</p><p> 下圖顯示了學(xué)生登陸系統(tǒng)進(jìn)行查詢時界面:</p><p> 下圖顯示了進(jìn)行課程查詢時界面:</p><p&
63、gt;<b> 成績查詢功能:</b></p><p><b> 5.3數(shù)據(jù)庫的維護(hù)</b></p><p> 當(dāng)試運(yùn)行數(shù)據(jù)庫合格后,數(shù)據(jù)庫開發(fā)設(shè)計的工作就基本完成了,接下來就是正式運(yùn)行中的調(diào)試,應(yīng)為該系統(tǒng)比較簡單,數(shù)據(jù)量小,數(shù)據(jù)庫中幾乎不會發(fā)生什么大的變化,但是還是需要做好數(shù)據(jù)的備份,在sqlserver中我們可以利用備份數(shù)據(jù)庫的功能對已
64、經(jīng)設(shè)計好的數(shù)據(jù)做備份,如果數(shù)據(jù)庫受到破壞或系統(tǒng)故障,我們便可輕松的利用備份文件恢復(fù)數(shù)據(jù)庫的數(shù)據(jù)。當(dāng)然也可以利用其他各種方法進(jìn)行數(shù)據(jù)維護(hù)。</p><p><b> 六 總結(jié)</b></p><p> 進(jìn)一步深入理解數(shù)據(jù)庫設(shè)計的整個過程,該學(xué)生選課系統(tǒng)的需求分析、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計有關(guān)內(nèi)容等。掌握使用前臺程序設(shè)計技術(shù)VC和SQL Server結(jié)合設(shè)計</p&g
65、t;<p> C /S結(jié)構(gòu)的管理信息系統(tǒng)。綜合練習(xí)了SQL Server的使用和數(shù)據(jù)庫得管理技術(shù)。綜合熟悉并練習(xí)了SQL語言在編程中的使用。 綜合訓(xùn)練編程能力。認(rèn)識系統(tǒng),取得系統(tǒng)需求分析,更重要得是在編程方面提高了實現(xiàn)目標(biāo)代碼得能力及調(diào)試代碼得能力</p><p><b> 參考文獻(xiàn)</b></p><p> (1)《Visual C++數(shù)據(jù)庫開發(fā)
66、經(jīng)典實例精解》作者:夏邦國 劉凡馨 出版社:機(jī)械工業(yè)出版社</p><p> (2)《SQL SERVER 200管理,開發(fā)及應(yīng)用實例》作者:陳世洪 出版社:人民郵電出版社</p><p> (3)《Visual C++程序設(shè)計教程》 作者:周鳴揚(yáng) 于秋生 出版社:機(jī)械工業(yè)出版社</p><p> (4)《數(shù)據(jù)庫原理與應(yīng)用》 作者
67、:姜代紅 出版社:機(jī)械工業(yè)出版社</p><p> (5) S.Sanyal and P.Chattopadhyay.Effect of exponentially distributed deep levels on the current and capacitance of a MIS diode[J].Solid-state electronics,2001,45
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(學(xué)生成績管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫學(xué)生成績管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--- 學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)設(shè)計
評論
0/150
提交評論