版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《SQL數據庫課程設計》</p><p> 題 目:學生成績管理系統的設計與實現</p><p> 學習中心: </p><p> 專 業(yè): </p><p> 年 級: 年 春/秋 季 <
2、;/p><p> 學 號: </p><p> 學 生: </p><p> 指導教師: </p><p><b> 1 項目概況</b></p><p>
3、 隨著科技的發(fā)展,基本上所有的具有一定數量數據的機構都開始使用計算機數據庫來做管理。幾乎所有學校也都已經在使用計算機管理數據的機制,大大減少了學校學生成績管理的工作量。該課程設計要求設計一個學生成績的數據庫管理系統,數據庫中要求包含學生的基本信息,學科基本信息,以及學生所學課程的考試成績。要方便學生進行成績查詢,通過該課程設計,應該達到把數據庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現實生活中的應用充分的結合起來。&
4、lt;/p><p> 2.1 SQL 數據庫簡介</p><p> SQL Server 2008是一個重大的產品版本,它推出了許多新的特性和關鍵的改進,使得它成為至今為止的最強大和最全面的SQL Server版本。這篇文章詳細介紹了Microsoft SQL Server 2008中的新的特性、優(yōu)點和功能。 在現今數據的世界里,公司要獲得成功和不斷發(fā)展,他們需要定位主要的數據趨勢的愿景
5、。微軟的這個數據平臺愿景幫助公司滿足這些數據爆炸和下一代數據驅動應用程序的需求。微軟將繼續(xù)投入和發(fā)展以下的關鍵領域來支持他們的數據平臺愿景:關鍵任務企業(yè)數據平臺、動態(tài)開發(fā)、關系數據和商業(yè)智能。</p><p> SQL Server 2008出現在微軟數據平臺愿景上是因為它使得公司可以運行他們最關鍵任務的應用程序,同時降低了管理數據基礎設施和發(fā)送觀察和信息給所有用戶的成本。這個平臺有以下特點:</p>
6、;<p> 1.可信任的:使得公司可以以很高的安全性、可靠性和可擴展性來運行他們最關鍵任務的應用程序。</p><p> 2.高效的:使得公司可以降低開發(fā)和管理他們的數據基礎設施的時間和成本。</p><p> 3.智能的:提供了一個全面的平臺,可以在你的用戶需要的時候給他發(fā)送觀察和信息。</p><p> 2.2 Microsoft Vis
7、ual C++ 6.0概述</p><p> Microsoft Visual C++是Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向對象的可視化集成編程系統。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發(fā)多種程序等優(yōu)點,而且通過簡單的設置就可使其生成的程序框架支持數據庫接口、OLE2,WinSock網絡、3D控制界面。</p><p>
8、 Visual C++6.0由Microsoft開發(fā), 它不僅是一個C++ 編譯器,而且是一個基于Windows操作系統的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調試器以及程序向導AppWizard、類向導Class Wizard等開發(fā)工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。M
9、icrosoft的主力軟件產品。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實際中,
10、更多的是以Visual C++6.0為平臺。</p><p> Visual C++6.0以擁有“語法高亮”,自動編譯功能以及高級除錯功能而著稱。比如,它允許用戶進行遠程調試,單步執(zhí)行等。還有允許用戶在調試期間重新編譯被修改的代碼,而不必重新啟動正在調試的程序。其編譯及創(chuàng)建預編譯頭文件(stdafx.h)、最小重建功能及累加連結(link)著稱。這些特征明顯縮短程序編輯、編譯及連結的時間花費,在大型軟件計劃上尤
11、其顯著。</p><p> 由于C++是由C語言發(fā)展起來的,也支持C語言的編譯。6.0版本是使用最多的版本,很經典。最大的缺點是對于模版的支持比較差。現在最新補丁為SP6,推薦安裝,否則易出現編譯時假死狀態(tài)。僅支持Windows操作系統。發(fā)現與windows 7兼容性不好,安裝成功后可能會出現無法打開cpp文件的現象。</p><p> 2.1 學生成績管理系統概述</p>
12、;<p> 本程序為學生信息管理程序,有如下兩大模塊構成:一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統計等功能模塊;二是教師、課程等相關信息的模塊。后臺使用SQL Server 2008數據庫,開發(fā)工具為Visual C++ 6.0。此系統實現如下系統功能:</p><
13、;p> ?。?)使得學生的成績管理工作更加清晰、條理化、自動化。</p><p> ?。?)通過用戶名和密碼登錄系統,查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能。 容易地完成學生信息的查詢操作。</p><p> (3) 設計人機友好界面,功能安排合理,操作使用方便,并且進一步考慮系統在安全性,完整性,并發(fā)控制,備份和恢復等方面的功能要求。</p><
14、;p><b> 2 需求分析</b></p><p><b> 2.1 需求分析</b></p><p><b> 1.信息需求</b></p><p> 高校學生的成績管理工作量大、繁雜,人工處理非常困難。學生成績管理系統借助于計算機強大的處理能力,大大減輕了管理人員的工作量,并提
15、高了處理的準確性。學生成績管理系統的開發(fā)運用,實現了學生成績管理的自動化,不僅把廣大教師從繁重的成績管理工作中解脫出來、把學校從傳統的成績管理模式中解放出來,而且對學生成績的判斷和整理更合理、更公正,同時也給教師提供了一個準確、清晰、輕松的成績管理環(huán)境。</p><p><b> 2.功能需求</b></p><p> 能夠進行數據庫的數據定義、數據操縱、數據控制
16、等處理功能,進行聯機處理的相應時間要短。</p><p> 具體功能應包括:系統應該提供課程安排數據的插入、刪除、更新、查詢;成績的添加、修改、刪除、查詢,學生及教職工基本信息查詢的功能。</p><p><b> 安全性與完整性要求</b></p><p><b> 2.2 數據分析</b></p>
17、<p> 數據項是數據庫的關系中不可再分的數據單位,下表分別列出了數據的名稱、數據類型、長度、取值能否為空。利用SQL Server 2000建立“學生選課”數據庫,其基本表清單及表結構描述如下:</p><p><b> 數據庫中用到的表:</b></p><p> Student基本情況數據表,結構如下:</p><p>
18、 course數據表,結構如下:</p><p> score情況數據表,結構如下:</p><p><b> 2.3 功能分析</b></p><p> 一個完整的數據庫不可缺少的就是數據表,若干個數據表的集合成一個數據庫。數據表主要用來存放一定格式的記錄,數據表中的行被稱為記錄,列被稱為字段。創(chuàng)建數據表的過程其實就是定義字段的過程
19、。</p><p> (1)創(chuàng)建學生基本信息表:</p><p> create table Student (</p><p> 學號 varchar(11) not null,</p><p> 系別 varchar(5) not n
20、ull,</p><p> 姓名 varchar(6) not null,</p><p> 性別 varchar(2) not null,</p><p> 年齡 char(2) not null,<
21、;/p><p> 地址 varchar(20) not null,</p><p> constraint PK_STUDENT primary key (學號)</p><p><b> go)</b></p><p><b> go</b>&
22、lt;/p><p> execute sp_addextendedproperty 'MS_Description', </p><p> '學生基本信息描述',</p><p> 'user', '', 'table', 'StudentsInfo'</p>
23、;<p><b> go</b></p><p><b> (2)創(chuàng)建課程表:</b></p><p> create table Course (</p><p> cno varchar(5) not null,</p><
24、p> cname varchar(10) null,</p><p> xueshi smallint null,</p><p> xuefen int null,</p><p
25、> constraint PK_COURSE primary key (課程號))</p><p><b> go</b></p><p> execute sp_addextendedproperty 'MS_Description', </p><p> (3)創(chuàng)建學生與課程的成績表</p>&
26、lt;p> create table SC ( sno varchar(11) not null,</p><p> cno varchar(5) not null,</p><p> chengji varchar(4) no
27、t null</p><p> constraint PK_SC primary key (學號, 課程號)</p><p><b> )</b></p><p><b> go</b></p><p> 在SC表上創(chuàng)建索引SC_FK與SC2_FK</p><p>
28、 create index SC_FK on SC (學號 ASC)</p><p><b> Go</b></p><p> create index SC2_FK on SC (課程號 ASC)</p><p><b> go</b></p><p><b> 建立課
29、程號索引</b></p><p> create index TC_FK on TC (</p><p><b> 課程號 ASC</b></p><p><b> )</b></p><p><b> go </b></p><p&
30、gt; 下圖顯示了學生,課程和成績三個關系的物理設計其中課程號與學號號分別為關系的主碼。</p><p><b> 3 詳細設計</b></p><p> 成績管理系統大體可以分成二大模塊如, 一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不
31、及格學生的統計等功能模塊;再其次還有教師、課程等相關信息的模塊;可以得到系統流程圖:</p><p> 3.1 系統結構圖</p><p> 由需求分析的結果可知,本系統設計的實體包括:</p><p> ?。?)學生基本信息:學號,姓名,性別,地址,年齡,專業(yè)。</p><p> ?。?)課程基本信息: 課程名,課程號,分數,學時,學
32、分。 </p><p> 這些實體間的聯系包括:</p><p> 每位學生可以學習多門課程,每門課程可供多位學生學習。</p><p> 由上述分析可得到系統的E—R圖:</p><p><b> 3.2 系統實現</b></p><p> 由系統E-R圖轉化而得到的關系模式如下:&
33、lt;/p><p> ?。?)學生(學號,姓名,性別,年齡,地址,系別),其主關鍵字為學號;</p><p> (2)課程(課程名,課程號,學時,學分),其中主關鍵字為課程號;</p><p> ?。?)成績(課程號,學號,分數)其中主關鍵字為學號和課程號??梢耘c學生關系模式合并為:學生(學號,姓名,性別,年齡,地址,系別,成績,課程號)。</p>&l
34、t;p> 3.3.1 主界面模塊</p><p> 下圖顯示了學生登陸系統進行查詢時界面:</p><p> 3.3.2 成績查詢功能模塊</p><p> 3.3.3 課程查詢時界面模塊</p><p> 3.3 數據庫實現</p><p> 此階段主要任務包括創(chuàng)建數據庫,加載初始數據,數據
35、庫試運行,數據庫的安全性和完整性控制數據庫的備份與恢復,數據庫性能的監(jiān)督分析和改僅,數據庫的重組和重構等。首先在數據庫中建立一個學生成績管理系統數據庫,然后新建一個數據源。</p><p> 3.3.1 數據庫的建立</p><p><b> 數據庫建立代碼:</b></p><p> #include "stdafx.h&q
36、uot;</p><p> #include "StudentScore.h"</p><p> #include "Course.h"</p><p> #ifdef _DEBUG</p><p> #define new DEBUG_NEW</p><p> #un
37、def THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p><p> // CCourse</p><p> IMPLEMENT_DYNAMIC(CCourse, CRecordset)</p><p> CCourse::CCourse(CDatabase* pdb)
38、</p><p> : CRecordset(pdb)</p><p> {//{{AFX_FIELD_INIT(CCourse)</p><p> //}}AFX_FIELD_INIT</p><p> m_nDefaultType = snapshot;</p><p> CString CCourse
39、::GetDefaultConnect()</p><p> {return _T("ODBC;DSN=");</p><p><b> }</b></p><p> CString CCourse::GetDefaultSQL()</p><p> {return _T("&q
40、uot;);}</p><p> void CCourse::DoFieldExchange(CFieldExchange* pFX)</p><p><b> {</b></p><p> //{{AFX_FIELD_MAP(CCourse)</p><p> pFX->SetFieldType(CFie
41、ldExchange::outputColumn);</p><p> //}}AFX_FIELD_MAP</p><p><b> }</b></p><p> // CCourse diagnostics</p><p> void CCourse::AssertValid() const</p>
42、<p> {CRecordset::AssertValid();}</p><p> void CCourse::Dump(CDumpContext& dc) const</p><p> {CRecordset::Dump(dc);}</p><p> // MainFrm.h : interface of the CMainFr
43、ame class</p><p> class CMainFrame : public CFrameWnd</p><p> {protected: // create from serialization only</p><p> CMainFrame();</p><p> DECLARE_DYNCREATE(CMainFra
44、me)</p><p> // Attributes</p><p><b> public:</b></p><p> // Operations</p><p><b> public:</b></p><p> // Overrides</p>
45、<p> // ClassWizard generated virtual function overrides</p><p> //{{AFX_VIRTUAL(CMainFrame)</p><p> virtual BOOL PreCreateWindow(CREATESTRUCT& cs);</p><p> //}}AFX_VIR
46、TUAL</p><p> // Implementation</p><p><b> public:</b></p><p> virtual ~CMainFrame();</p><p> protected: // control bar embedded members</p><
47、p> //CStatusBar m_wndStatusBar;</p><p> //CToolBar m_wndToolBar;</p><p> // Generated message map functions</p><p> protected:</p><p> //{{AFX_MSG(CMainFram
48、e)</p><p> afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);</p><p> afx_msg void OnPassword();</p><p> afx_msg void OnUser();</p><p> afx_msg void OnStudent();&
49、lt;/p><p> afx_msg void OnTeach();</p><p> afx_msg void OnTeacher();</p><p> afx_msg void OnScore();</p><p> afx_msg void OnQueryTeach();</p><p> afx_msg
50、 void OnQueryScore();</p><p> afx_msg void OnCourse();</p><p> //}}AFX_MSG</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b></p><p> 3.3.2
51、數據庫的更新</p><p> 插入數據表的核心代碼:</p><p> //{{AFX_INSERT_LOCATION}}</p><p> // Microsoft Visual C++ will insert additional declarations immediately before the previous line.</p>
52、<p> // CScoreAddDlg dialog</p><p> CScoreAddDlg::CScoreAddDlg(CWnd* pParent /*=NULL*/)</p><p> : CDialog(CScoreAddDlg::IDD, pParent)</p><p> {/{{AFX_DATA_INIT(CScoreAddDlg
53、)</p><p> //}}AFX_DATA_INIT</p><p><b> }</b></p><p> void CScoreAddDlg::DoDataExchange(CDataExchange* pDX)</p><p><b> {</b></p><p
54、> CDialog::DoDataExchange(pDX);</p><p> //{{AFX_DATA_MAP(CScoreAddDlg)</p><p> DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStudent);</p><p> DDX_Control(pDX, IDC_SCORE_SCORE, m_cS
55、core);</p><p> DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);</p><p> //}}AFX_DATA_MAP</p><p><b> }</b></p><p> BEGIN_MESSAGE_MAP(CScoreAddDlg, CDialog)
56、</p><p> //{{AFX_MSG_MAP(CScoreAddDlg)</p><p> //}}AFX_MSG_MAP</p><p> END_MESSAGE_MAP()</p><p> void CScoreAddDlg::OnOK()</p><p><b> {</b>
57、;</p><p> CString student,course,score,student_no,course_no;</p><p> m_cStudent.GetWindowText(student);</p><p> m_cCourse.GetWindowText(course);</p><p> m_cScore.Ge
58、tWindowText(score);</p><p> else//成績不為空</p><p><b> {</b></p><p> CString strSQL;</p><p> //查出該學生的學號</p><p> strSQL.Format("select * f
59、rom student where active_status='Y' and student_name='%s'",student);</p><p> CRecordset m_recordSet=&m_database;</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQ
60、L);</p><p> m_recordSet.GetFieldValue("student_no",student_no);</p><p> m_recordSet.Close();</p><p> //查出該課程的課程號 </p><p> strSQL.Format("select * fro
61、m course where active_status='Y' and course_name='%s'",course);</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p> m_recordSet.GetFieldValue("course_no
62、",course_no);;</p><p> m_recordSet.Close();</p><p> BOOL CScoreAddDlg::OnInitDialog()</p><p><b> {</b></p><p> CDialog::OnInitDialog();</p>
63、<p> CRecordset m_recordSet;</p><p> if(!m_database.IsOpen())</p><p><b> {</b></p><p> m_database.Open(_T("student"));</p><p> m_recordS
64、et.m_pDatabase=&m_database;</p><p><b> }</b></p><p> CString strSQL;</p><p> strSQL.Format("select course_name from course where active_status='Y'&qu
65、ot;);</p><p> m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p> for(int i=0;i<m_recordSet.GetRecordCount();i++){</p><p> CString temp;</p><p> m_recordSe
66、t.GetFieldValue("course_name",temp);</p><p> m_cCourse.AddString(temp);</p><p> m_recordSet.MoveNext();</p><p><b> }</b></p><p> m_recordSet.C
67、lose();</p><p> m_cCourse.SetCurSel(1);</p><p> strSQL.Format("select student_name from student where active_status='Y'");</p><p> m_recordSet.Open(CRecordset::
68、forwardOnly,strSQL);</p><p> for(int j=0;j<m_recordSet.GetRecordCount();j++){</p><p> CString temp;</p><p> m_recordSet.GetFieldValue("student_name",temp);</p>
69、<p> m_cStudent.AddString(temp);</p><p> m_recordSet.MoveNext();</p><p><b> }</b></p><p> m_recordSet.Close();</p><p> m_cStudent.SetCurSel(1);&
70、lt;/p><p><b> {</b></p><p> this->SetWindowText("成績窗口");</p><p><b> }</b></p><p> return true;</p><p><b> }<
71、;/b></p><p> void CScoreAddDlg::OnCancel() </p><p><b> {</b></p><p> // TODO: Add extra cleanup here</p><p> CDialog::OnCancel();</p><p>
72、;<b> }</b></p><p> 3.4 數據庫的維護</p><p> 當試運行數據庫合格后,數據庫開發(fā)設計的工作就基本完成了,接下來就是正式運行中的調試,應為該系統比較簡單,數據量小,數據庫中幾乎不會發(fā)生什么大的變化,但是還是需要做好數據的備份,在sqlserver中我們可以利用備份數據庫的功能對已經設計好的數據做備份,如果數據庫受到破壞或系統故障,
73、我們便可輕松的利用備份文件恢復數據庫的數據。當然也可以利用其他各種方法進行數據維護。</p><p><b> 4 總結</b></p><p> 進一步深入理解數據庫設計的整個過程,該學生選課系統的需求分析、數據庫概念結構設計有關內容等。掌握使用前臺程序設計技術VC和SQL Server結合設計C/S結構的管理信息系統。綜合練習了SQL Server的使用和數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- sql學生成績管理系統課程設計數據庫
- sql數據庫課程設計---學生成績管理系統設計說明
- 數據庫課程設計---學生成績管理系統數據庫設計
- 學生成績管理系統數據庫課程設計
- 數據庫課程設計---學生成績管理系統
- 數據庫課程設計(學生成績管理系統)
- 數據庫課程設計--學生成績管理系統
- 學生成績管理系統-數據庫課程設計
- 學生成績管理系統數據庫課程設計
- 數據庫學生成績管理系統課程設計
- 數據庫課程設計——學生成績管理系統
- 數據庫課程設計--學生成績管理系統
- 數據庫課程設計----學生成績管理系統
- 數據庫課程設計--學生成績管理系統
- 數據庫課程設計--- 學生成績管理系統
- 數據庫課程設計--學生成績管理系統
- 數據庫課程設計----學生成績管理系統
- 學生成績管理系統-數據庫課程設計
- 學生成績管理系統-數據庫課程設計
- 數據庫課程設計--學生成績管理系統
評論
0/150
提交評論