數(shù)據(jù)庫課程設計——學生成績管理系統(tǒng)_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  正文:</b></p><p><b>  數(shù)據(jù)庫原理與應用</b></p><p><b>  課程設計說明書</b></p><p>  題目: 學生成績管理系統(tǒng) </p><p>  院 系:

2、 </p><p>  專業(yè)班級: </p><p>  學 號: </p><p>  學生姓名: </p><p>  指導教師:     &l

3、t;/p><p>  2008年 12 月 22 日</p><p><b>  一 概述</b></p><p><b>  1.1目的與要求</b></p><p>  隨著科技的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據(jù)的機構都開始使用計算機數(shù)據(jù)庫來做管理。幾乎所有學校也都已經在使用計算機管理數(shù)據(jù)的機

4、制,大大減少了學校學生成績管理的工作量。該課程設計要求設計一個學生成績的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫中要求包含學生的基本信息,學科基本信息,以及學生所學課程的考試成績。要方便學生進行成績查詢,通過該課程設計,應該達到把數(shù)據(jù)庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現(xiàn)實生活中的應用充分的結合起來。</p><p><b>  1.2設計環(huán)境</b></p><

5、;p> ?、?#160; Microsoft SQL Server 2000</p><p> ?、?#160;   Microsoft Visual C++ 6.0</p><p><b>  二 需求分析</b></p><p>  2.1 系統(tǒng)功能要求設計</p><p&g

6、t;  此系統(tǒng)實現(xiàn)如下系統(tǒng)功能:</p><p> ?。?)使得學生的成績管理工作更加清晰、條理化、自動化。</p><p>  (2)通過用戶名和密碼登錄系統(tǒng),查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能。 容易地完成學生信息的查詢操作。</p><p>  (3) 設計人機友好界面,功能安排合理,操作使用方便,并且進一步考慮系統(tǒng)在安全性,完整性,并發(fā)控

7、制,備份和恢復等方面的功能要求。</p><p>  2.2 系統(tǒng)模塊設計</p><p>  成績管理系統(tǒng)大體可以分成二大模塊如, 一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統(tǒng)計等功能模塊;再其次還有教師、課程等相關信息的模塊;可以得到系統(tǒng)流程圖:<

8、;/p><p><b>  2.3 數(shù)據(jù)字典</b></p><p>  數(shù)據(jù)項是數(shù)據(jù)庫的關系中不可再分的數(shù)據(jù)單位,下表分別列出了數(shù)據(jù)的名稱、數(shù)據(jù)類型、長度、取值能否為空。利用SQL Server 2000建立“學生選課”數(shù)據(jù)庫,其基本表清單及表結構描述如下:</p><p><b>  數(shù)據(jù)庫中用到的表:</b></p

9、><p>  Student基本情況數(shù)據(jù)表,結構如下:</p><p>  course數(shù)據(jù)表,結構如下:</p><p>  score情況數(shù)據(jù)表,結構如下:</p><p><b>  三 概念模型設計</b></p><p>  由需求分析的結果可知,本系統(tǒng)設計的實體包括:</p>

10、<p> ?。?)學生基本信息:學號,姓名,性別,地址,年齡,專業(yè)。</p><p> ?。?)課程基本信息: 課程名,課程號,分數(shù),學時,學分。 </p><p>  這些實體間的聯(lián)系包括:</p><p> ?。?)每位學生可以學習多門課程,每門課程可供多位學生學習。</p><p>  由上述分析可得到系統(tǒng)的E—R圖:<

11、;/p><p>  四 邏輯和物理結構設計</p><p>  4.1由系統(tǒng)E—R圖轉化而得到的關系模式如下:</p><p> ?。?)學生(學號,姓名,性別,年齡,地址,系別),其主關鍵字為學號;</p><p> ?。?)課程(課程名,課程號,學時,學分),其中主關鍵字為課程號;</p><p> ?。?)成績(課程

12、號,學號,分數(shù))其中主關鍵字為學號和課程號。可以與學生關系模式合并為:學生(學號,姓名,性別,年齡,地址,系別,成績,課程號)。</p><p>  4.2 確定關系模型的存取方法</p><p>  在將概念模型轉換成物理模型之后,我們可以對物理模型進行設計,雙擊物理模型的關系,可以對該關系的名稱、注釋等信息進行查詢??蓪υ撽P系的屬性列進行設計,可分別設置其名稱、碼、數(shù)據(jù)類型以及主碼、是

13、否為空等。在實際設計中最常用的存取方法是索引發(fā),使用索引可以大大減少數(shù)據(jù)的查詢時間,在建立索引時應遵循:在經常需要搜索的列上建立索引;  在主關鍵字上建立索引;在經常用于連接的列上建立索引,即在外鍵上建立索引;在經常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負面作用。</p><p>  4.3 確定數(shù)據(jù)庫的存儲結構</

14、p><p>  確定數(shù)據(jù)庫的存儲結構主要指確定數(shù)據(jù)的存放位置和存儲結構,包括確定關系、索引、日志、備份等的存儲安排及存儲結構,以及確定系統(tǒng)存儲參數(shù)的配置。因為該成績管理系統(tǒng)的數(shù)據(jù)量小,,所以我們只用把數(shù)據(jù)存儲在使用的電腦硬盤上,不用作更多的安排。</p><p>  (1)創(chuàng)建學生基本信息表:</p><p>  create table Student (</p

15、><p>  學號 varchar(11) not null,</p><p>  系別 varchar(5) not null,</p><p>  姓名 varchar(6) not null,</p&g

16、t;<p>  性別 varchar(2) not null,</p><p>  年齡 char(2) not null,</p><p>  地址 varchar(20) not null,</p><

17、p>  constraint PK_STUDENT primary key (學號)</p><p><b>  )</b></p><p><b>  go</b></p><p>  execute sp_addextendedproperty 'MS_Description', </p&

18、gt;<p>  '學生基本信息描述',</p><p>  'user', '', 'table', 'StudentsInfo'</p><p><b>  go</b></p><p><b>  (2)創(chuàng)建課程表:</b>

19、</p><p>  create table Course (</p><p>  cno varchar(5) not null,</p><p>  cname varchar(10) null,</p><p>  xueshi

20、 smallint null,</p><p>  xuefen int null,</p><p>  constraint PK_COURSE primary key (課程號))</p><p><b>  go</b

21、></p><p>  execute sp_addextendedproperty 'MS_Description', </p><p>  (3)創(chuàng)建學生與課程的成績表</p><p>  create table SC ( sno varchar(11) not null,</p&

22、gt;<p>  cno varchar(5) not null,</p><p>  chengji varchar(4) not null</p><p>  constraint PK_SC primary key (學號, 課程號)</p><p&

23、gt;<b>  )</b></p><p><b>  go</b></p><p>  在SC表上創(chuàng)建索引SC_FK與SC2_FK</p><p>  create index SC_FK on SC (學號 ASC)</p><p><b>  Go</b></

24、p><p>  create index SC2_FK on SC (課程號 ASC)</p><p><b>  go</b></p><p><b>  建立課程號索引</b></p><p>  create index TC_FK on TC (</p><p>

25、<b>  課程號 ASC</b></p><p><b>  )</b></p><p><b>  go</b></p><p>  下圖顯示了學生,課程和成績三個關系的物理設計其中課程號與學號號分別為關系的主碼。</p><p>  五 數(shù)據(jù)庫的實施與維護</p&g

26、t;<p>  5.1 數(shù)據(jù)庫的實施:</p><p>  此階段主要任務包括創(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ù)源。主要代碼如下:</p><p>  #include "stdafx.h"&l

27、t;/p><p>  #include "StudentScore.h"</p><p>  #include "Course.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef TH

28、IS_FILE</p><p>  static char THIS_FILE[] = __FILE__;</p><p>  // CCourse</p><p>  IMPLEMENT_DYNAMIC(CCourse, CRecordset)</p><p>  CCourse::CCourse(CDatabase* pdb)</p

29、><p>  : CRecordset(pdb)</p><p>  {//{{AFX_FIELD_INIT(CCourse)</p><p>  //}}AFX_FIELD_INIT</p><p>  m_nDefaultType = snapshot;</p><p>  CString CCourse::GetD

30、efaultConnect()</p><p>  {return _T("ODBC;DSN=");</p><p><b>  }</b></p><p>  CString CCourse::GetDefaultSQL()</p><p>  {return _T("");

31、}</p><p>  void CCourse::DoFieldExchange(CFieldExchange* pFX)</p><p><b>  {</b></p><p>  //{{AFX_FIELD_MAP(CCourse)</p><p>  pFX->SetFieldType(CFieldExch

32、ange::outputColumn);</p><p>  //}}AFX_FIELD_MAP</p><p><b>  }</b></p><p>  // CCourse diagnostics</p><p>  void CCourse::AssertValid() const</p><

33、p>  {CRecordset::AssertValid();}</p><p>  void CCourse::Dump(CDumpContext& dc) const</p><p>  {CRecordset::Dump(dc);}</p><p>  // MainFrm.h : interface of the CMainFrame cl

34、ass</p><p>  class CMainFrame : public CFrameWnd</p><p>  {protected: // create from serialization only</p><p>  CMainFrame();</p><p>  DECLARE_DYNCREATE(CMainFrame)<

35、;/p><p>  // Attributes</p><p><b>  public:</b></p><p>  // Operations</p><p><b>  public:</b></p><p>  // Overrides</p><p&

36、gt;  // ClassWizard generated virtual function overrides</p><p>  //{{AFX_VIRTUAL(CMainFrame)</p><p>  virtual BOOL PreCreateWindow(CREATESTRUCT& cs);</p><p>  //}}AFX_VIRTUAL&l

37、t;/p><p>  // Implementation</p><p><b>  public:</b></p><p>  virtual ~CMainFrame();</p><p>  protected: // control bar embedded members</p><p> 

38、 //CStatusBar m_wndStatusBar;</p><p>  //CToolBar m_wndToolBar;</p><p>  // Generated message map functions</p><p>  protected:</p><p>  //{{AFX_MSG(CMainFrame)<

39、/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();</p&

40、gt;<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 void

41、OnQueryScore();</p><p>  afx_msg void OnCourse();</p><p>  //}}AFX_MSG</p><p>  DECLARE_MESSAGE_MAP()</p><p><b>  };</b></p><p>  //{{AFX_INSER

42、T_LOCATION}}</p><p>  // Microsoft Visual C++ will insert additional declarations immediately before the previous line.</p><p>  // CScoreAddDlg dialog</p><p>  CScoreAddDlg::CScore

43、AddDlg(CWnd* pParent /*=NULL*/)</p><p>  : CDialog(CScoreAddDlg::IDD, pParent)</p><p>  {/{{AFX_DATA_INIT(CScoreAddDlg)</p><p>  //}}AFX_DATA_INIT</p><p><b>  }&l

44、t;/b></p><p>  void CScoreAddDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialog::DoDataExchange(pDX);</p><p>  //{{AFX_DATA_MAP(C

45、ScoreAddDlg)</p><p>  DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStudent);</p><p>  DDX_Control(pDX, IDC_SCORE_SCORE, m_cScore);</p><p>  DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);&

46、lt;/p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(CScoreAddDlg, CDialog)</p><p>  //{{AFX_MSG_MAP(CScoreAddDlg)</p><p>  /

47、/}}AFX_MSG_MAP</p><p>  END_MESSAGE_MAP()</p><p>  void CScoreAddDlg::OnOK()</p><p><b>  {</b></p><p>  CString student,course,score,student_no,course_no;&l

48、t;/p><p>  m_cStudent.GetWindowText(student);</p><p>  m_cCourse.GetWindowText(course);</p><p>  m_cScore.GetWindowText(score);</p><p>  else//成績不為空</p><p>&l

49、t;b>  {</b></p><p>  CString strSQL;</p><p>  //查出該學生的學號</p><p>  strSQL.Format("select * from student where active_status='Y' and student_name='%s'&qu

50、ot;,student);</p><p>  CRecordset m_recordSet=&m_database;</p><p>  m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p>  m_recordSet.GetFieldValue("student_no",s

51、tudent_no);</p><p>  m_recordSet.Close();</p><p>  //查出該課程的課程號 </p><p>  strSQL.Format("select * from course where active_status='Y' and course_name='%s'",

52、course);</p><p>  m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p>  m_recordSet.GetFieldValue("course_no",course_no);;</p><p>  m_recordSet.Close();</p>&l

53、t;p>  BOOL CScoreAddDlg::OnInitDialog()</p><p><b>  {</b></p><p>  CDialog::OnInitDialog();</p><p>  CRecordset m_recordSet;</p><p>  if(!m_database.IsOp

54、en())</p><p><b>  {</b></p><p>  m_database.Open(_T("student"));</p><p>  m_recordSet.m_pDatabase=&m_database;</p><p><b>  }</b>&l

55、t;/p><p>  CString strSQL;</p><p>  strSQL.Format("select course_name from course where active_status='Y'");</p><p>  m_recordSet.Open(CRecordset::forwardOnly,strSQL)

56、;</p><p>  for(int i=0;i<m_recordSet.GetRecordCount();i++){</p><p>  CString temp;</p><p>  m_recordSet.GetFieldValue("course_name",temp);</p><p>  m_cCour

57、se.AddString(temp);</p><p>  m_recordSet.MoveNext();</p><p><b>  }</b></p><p>  m_recordSet.Close();</p><p>  m_cCourse.SetCurSel(1);</p><p>  

58、strSQL.Format("select student_name from student where active_status='Y'");</p><p>  m_recordSet.Open(CRecordset::forwardOnly,strSQL);</p><p>  for(int j=0;j<m_recordSet.GetR

59、ecordCount();j++){</p><p>  CString temp;</p><p>  m_recordSet.GetFieldValue("student_name",temp);</p><p>  m_cStudent.AddString(temp);</p><p>  m_recordSet.M

60、oveNext();</p><p><b>  }</b></p><p>  m_recordSet.Close();</p><p>  m_cStudent.SetCurSel(1);</p><p><b>  {</b></p><p>  this->Se

61、tWindowText("成績窗口");</p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p>  void CScoreAddDlg::OnCancel() </p><

62、p><b>  {</b></p><p>  // TODO: Add extra cleanup here</p><p>  CDialog::OnCancel();</p><p><b>  }</b></p><p>  5.2部分操作截圖:</p><p>

63、;  下圖顯示了學生登陸系統(tǒng)進行查詢時界面:</p><p>  下圖顯示了進行課程查詢時界面:</p><p><b>  成績查詢功能:</b></p><p><b>  5.3數(shù)據(jù)庫的維護</b></p><p>  當試運行數(shù)據(jù)庫合格后,數(shù)據(jù)庫開發(fā)設計的工作就基本完成了,接下來就是正式運行

64、中的調試,應為該系統(tǒng)比較簡單,數(shù)據(jù)量小,數(shù)據(jù)庫中幾乎不會發(fā)生什么大的變化,但是還是需要做好數(shù)據(jù)的備份,在sqlserver中我們可以利用備份數(shù)據(jù)庫的功能對已經設計好的數(shù)據(jù)做備份,如果數(shù)據(jù)庫受到破壞或系統(tǒng)故障,我們便可輕松的利用備份文件恢復數(shù)據(jù)庫的數(shù)據(jù)。當然也可以利用其他各種方法進行數(shù)據(jù)維護。</p><p><b>  六 總結</b></p><p>  進一步深入

65、理解數(shù)據(jù)庫設計的整個過程,該學生選課系統(tǒng)的需求分析、數(shù)據(jù)庫概念結構設計有關內容等。掌握使用前臺程序設計技術VC和SQL Server結合設計</p><p>  C /S結構的管理信息系統(tǒng)。綜合練習了SQL Server的使用和數(shù)據(jù)庫得管理技術。綜合熟悉并練習了SQL語言在編程中的使用。 綜合訓練編程能力。認識系統(tǒng),取得系統(tǒng)需求分析,更重要得是在編程方面提高了實現(xiàn)目標代碼得能力及調試代碼得能力</p>

66、<p><b>  參考文獻</b></p><p> ?。?)《Visual C++數(shù)據(jù)庫開發(fā)經典實例精解》作者:夏邦國 劉凡馨 出版社:機械工業(yè)出版社</p><p>  (2)《SQL SERVER 200管理,開發(fā)及應用實例》作者:陳世洪 出版社:人民郵電出版社</p><p> ?。?)《Visual C++程序設

67、計教程》 作者:周鳴揚 于秋生 出版社:機械工業(yè)出版社</p><p>  (4)《數(shù)據(jù)庫原理與應用》 作者:姜代紅 出版社:機械工業(yè)出版社</p><p> ?。?) S.Sanyal and P.Chattopadhyay.Effect of exponentially distributed deep levels on

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論