數(shù)據(jù)庫課程設(shè)計報告學(xué)生成績管理系統(tǒng)1_第1頁
數(shù)據(jù)庫課程設(shè)計報告學(xué)生成績管理系統(tǒng)1_第2頁
數(shù)據(jù)庫課程設(shè)計報告學(xué)生成績管理系統(tǒng)1_第3頁
數(shù)據(jù)庫課程設(shè)計報告學(xué)生成績管理系統(tǒng)1_第4頁
數(shù)據(jù)庫課程設(shè)計報告學(xué)生成績管理系統(tǒng)1_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)庫課程設(shè)計報告 1.功能需求本報告主要介紹學(xué)生成績管理系統(tǒng)的數(shù)據(jù)庫設(shè)計,從需求分析到數(shù)據(jù)庫的運行與維護(hù)都進(jìn)行詳細(xì)的敘述。該系統(tǒng)是利用sql開發(fā)出來的。通過sql建立學(xué)生成績管理系統(tǒng),大大方便和簡化了數(shù)據(jù)的查詢和處理,管理員可以通過sql語言對表內(nèi)數(shù)據(jù)進(jìn)行添加,刪除,修改,查詢等操作,還可以建立多用戶,對其使用權(quán)限進(jìn)行分配和回收。報告分為4部分,第一部分是課題簡介及設(shè)計的內(nèi)容與目的,需求分析,此階段是數(shù)據(jù)庫設(shè)計的起點。第二部分是概念設(shè)計,邏輯結(jié)構(gòu)設(shè)計,它是將需求分析的用戶需求抽象為信息結(jié)構(gòu),并將概念模型轉(zhuǎn)換為某個dbms所支持的數(shù)據(jù)模型。第三部分是數(shù)據(jù)庫的實施與運行,它包括數(shù)據(jù)的載入及數(shù)據(jù)困

2、的運行和數(shù)據(jù)庫和數(shù)據(jù)表的創(chuàng)建(代碼)。第四部分是課程設(shè)計的總結(jié)。1.1開發(fā)環(huán)境及開發(fā)語言本次課程設(shè)計是以學(xué)生信息管理系統(tǒng)為模擬模型,運用c+編程語言結(jié)合sql數(shù)據(jù)庫所開發(fā)系統(tǒng)。開發(fā)平臺為vc6.0和sql2008。1.2 設(shè)計目的隨著學(xué)生數(shù)量的日益增多,學(xué)校對學(xué)生的管理要求也越來越高,為了使學(xué)生成績的管理更加系統(tǒng)化,數(shù)字化,因此我們設(shè)計了該學(xué)生信息管理系統(tǒng)。1.3 設(shè)計內(nèi)容運用基于e-r模型的數(shù)據(jù)庫設(shè)計方法和關(guān)系規(guī)范化理論做指導(dǎo)完成從系統(tǒng)的分析到設(shè)計直至系統(tǒng)的最終實現(xiàn),開發(fā)學(xué)生成績管理系統(tǒng),完成學(xué)生成績管理系統(tǒng)的全部功能。首先做好需求分析,并完成數(shù)據(jù)流圖,其次做概念分析,利用實體聯(lián)系的方法將需

3、求分析的用戶需求抽象為信息結(jié)構(gòu),得到e-r圖,然后就是邏輯結(jié)構(gòu)設(shè)計,將e-r圖轉(zhuǎn)換為計算機(jī)系統(tǒng)所支持的邏輯模型。最后利用sql完成具體的實例。1.4.需求分析1、問題的提出:為了高效率的完成學(xué)生成績的管理,決定開發(fā)學(xué)生成績管理系統(tǒng)。2、 需完成的功能:(1)能提供管理員及普通用戶(除刪除和修改)錄入、注銷、顯示當(dāng)前用戶、修改、刪除、查詢、輸出,學(xué)生的檔案信息,這些信息包括學(xué)生的成績、課程、個人信息等。(2) 觸發(fā)器,索引,存儲過程的建立及使用。2. 概念設(shè)計(1)(e-r圖) studentsnamesexbirthdaytelsnoaddressgradescorepoliticacultu

4、recourcesnocnotestuserusernmuserpwusertyp(2)物理結(jié)構(gòu)設(shè)計studentcolumnnamedatetypewidth空值情況snonchar10主關(guān)鍵字snamenchar 10不為空sexnchar10不為空birthdaynumeric10可為空addressnchar10可為空gradenchar10不為空po;iticnchar10不為空cuturenchar10不為空telnchar10不為空cource columnnamedatetypewidth空值情況snonchar10主關(guān)鍵字cnonchar10不為空scorenchar10可為

5、空usercolumnnamedatetypewidth空值情況user_namenchar20主關(guān)鍵字user_pswdnchar20不為空user_typeint可為空(3)分析關(guān)系模式對于關(guān)系模式student(sno|sname|sex|age|address|grade|class|tel|politic|cuture )假定姓名也具有唯一性,那么student就有兩個碼,這兩個碼都由單個屬性組成,彼此不相交。其它屬性不存在對碼的傳遞依賴與部分依賴,又因為student中除學(xué)號、姓名外沒有其它的因素,所以student屬于bcnf。對于關(guān)系模式cource(|sno|cno|scor

6、e|)有兩個碼,這兩個碼都由單個屬性組成,彼此不相交,其它屬性不存在對碼的傳遞依賴與部分依賴,又因為成績中除學(xué)號、課程號外沒有其它的決定因素,所以成績屬于bcnf。對于關(guān)系模式user(|username|usertype|userpswd|)中,它只有一個碼,這里沒有任何屬性對課程號部分依賴或傳遞依賴,同時用戶名是唯一的決定因素,所以課程屬于bcnf。它和學(xué)生信息和成績沒有直接的聯(lián)系,因此它是一張單獨的表。3.sql語句3.1 創(chuàng)建表學(xué)生表create table student( sno nchar(10) primary key, sname nchar(10) not null sex

7、 nchar(10) not nullage numeric(10)address nchar(10)class nchar(10) not nullgrade nchar(10) not nulltel nchar(10) not nullpoliticnchar(10)not nullcuturenchar(10) not null)成績表create table exam( sno nchar(10) primary key /主鍵約束 cno nchar(10) not null score nchar(10)foreign key (cno) references course /外

8、鍵約束check(score=0) /完整性約束)用戶表create table teacher( username nchar(10) not null userpswd nchar(10) not null usertype nchar(10) not null)3.2數(shù)據(jù)初始化將學(xué)生類別加入表student中insert into studentvalues (000,張明,m,哈爾濱,軟件一班,大一,15880000,無,群眾) insert into studentvalues(001,李三,m,長春,軟件二班,大三 15233000.無,群眾) insert into studen

9、tvalues(002,王強(qiáng),m,哈爾濱,軟件二班,大二 15850040.無,群眾) insert into studentvalues(003,張雪,f,哈爾濱,軟件一班,大一 156809802.無,群眾) insert into studentvalues(004,李力,m,大連,軟件一班,大三 15980000.無,群眾) insert into studentvalues(005,張小,m,哈爾濱,軟件三班,大一 15884444.無,群眾) 將考試類別加入cource表中 insert into cource values (000,a-123,85 )insert into c

10、ource values(001,b-123,77 )insert into cource values(002,c-123,91 )insert into cource values(003,a-123,80 )insert into courcevalues(004,b-123,75 )insert into cource values(005,a-123,89 )將課程加入user表中insert into user values(阿生,921,0)insert into uservalues(光光,111,1)insert into uservalues( 甜甜,111,1)索引的使用

11、use studentcreate unique nonclustered index index_sno on student(sno )觸發(fā)器create trigger reminderon studentafter insert,updateas raiserror(你在插入或修改學(xué)生的數(shù)據(jù),16,10)drop trigger reminderselect * from studentwhere sno=002存儲過程create procedure usp_getstudent name nchar(40)as select * from student where sname=n

12、ame執(zhí)行存儲過程execute usp_getstudent 張明4、sql與c+結(jié)合(可視化的界面管理)1、準(zhǔn)備創(chuàng)建好的數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)源在創(chuàng)建數(shù)據(jù)庫的應(yīng)用程序之前,必須有一個可供應(yīng)用程序使用的數(shù)據(jù)庫。2、(1)建立了數(shù)據(jù)庫之后,必須配備 odbc 數(shù)據(jù)源,使其指向剛剛建立的數(shù)據(jù)庫。選擇“控制面板”中“管理工具”下的“數(shù)據(jù)源(odbc)”項。雙擊 odbc 圖標(biāo),彈出“odbc 數(shù)據(jù)源管理器”對話框。在這里用戶可以設(shè)置 odbc數(shù)據(jù)源的一些信息,其中的“用戶 dsn”選項卡是用戶定義的在本地計算機(jī)上使用的數(shù)據(jù)源名(dsn),(2) 為新的數(shù)據(jù)源選擇數(shù)據(jù)庫驅(qū)動程序。由于使用的是 access

13、 數(shù)據(jù)庫,所以選擇 driver do microsoft access(*.mdb)選項,并單擊“完成”按鈕。 (3) “odbc microsoft access 安裝”對話框中,為該數(shù)據(jù)源起一個簡短的名稱。本例為 teacherdb,可以在下一個編輯框中輸入對該數(shù)據(jù)庫的說明。(4) 指定數(shù)據(jù)庫的位置。單擊“選擇”按鈕,然后指定所創(chuàng)建的 access 數(shù)據(jù)庫。 (5) 單擊“確定”按鈕,剛才創(chuàng)建的用戶數(shù)據(jù)源被添加在“用戶 dsn”選項卡的“用戶數(shù)據(jù)源”列表框中。3. 創(chuàng)建 mfc appwizard 應(yīng)用程序 用 mfc appwizard(exe)創(chuàng)建一個對話框應(yīng)用程序 teacherm

14、is。為了使程序能支持?jǐn)?shù)據(jù)庫對象,在頭文件 stdafx.h 中加入#include。 4. 用 classwizard 為數(shù)據(jù)庫中的每一個表映射一個記錄集類 首先為表 users 映射記錄集類 cuserset。打開項目工作區(qū)的 classview 選項卡,選擇項目名稱,右擊,彈出快捷菜單,選擇 new class 命令彈出的 new class對話框,輸入記錄集類名稱 cuserset,并為其選擇基類 crecordset,單擊 ok 按鈕,彈出的database options 對話框,為記錄集類選擇 odbc 數(shù)據(jù)源 teacherdb,單擊 ok 按鈕,彈出select databa

15、se tables 對話框,為記錄集類選擇數(shù)據(jù)庫表 users,單擊ok 按鈕,即完成記錄集類 cuserset 的定義。5、根據(jù)類屬性之間的關(guān)系添加如下類:6、c+中實現(xiàn)對數(shù)據(jù)庫的管理(及增加、刪除、修改、查找、退出)(1)增加:void cscore:onbuttonadd()strsql.format(insert into score values(%s,%s,%s),m_sno, m_cno,m_score); doexecutesql(strsql);(2)刪除:cscore:onbuttondel()strsql.format(delete from score where sn

16、o=%sand cno=%s ,m_sno,m_cno); doexecutesql(strsql);(3)修改:void cscore:onbuttonedit()strsql.format(update score set cno=%s,score=%s where sno=%sand cno=%s and score=%s , m_cno,m_score,save_sno,save_cno,save_score ); doexecutesql(strsql);(4)查找:void csore:onbuttonfind()strsql.format(select * from teache

17、rs where %s =%s,strfield, m_fieldvalue);(5)退出:void csore:oncancel()cdialog:oncancel();(6)顯示當(dāng)前用戶:m_corr_user=login.getusernm();(7)注銷:void cteachermisdlg:onlogout()m_score.close(); cdialog:oncancel(); clogindlg login; login.setuser(); login.domodal();7、運行截圖(1)用戶登錄:(2)學(xué)生信息管理系統(tǒng):3、成績管理系統(tǒng):5、設(shè)計中遇到的問題及心得在設(shè)計中遇到的幾個問題:1、 關(guān)系圖的連接:當(dāng)數(shù)據(jù)庫創(chuàng)建的時候沒把他們的關(guān)系圖連接起來,導(dǎo)致在投影時出問題,查詢的時候也出現(xiàn)了錯誤2、 刪除時錯誤:在刪除操作的時候,由于沒考慮表之間的關(guān)系,和刪除次序。導(dǎo)致了一張表的數(shù)據(jù)元素刪除了,而另外一張的任然存在。3、 對同一學(xué)生插入同一課程號:剛開始的思想是使用not in進(jìn)行判斷該記錄是否存在,再插入我用的下面的這句語句strsql.format(insert into sc val

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論