版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成績數據庫課程設計課程名稱 數據庫課程設計 題目名稱 通用學生信息管理系統 學生學院 計算機學院 專業(yè)班級 網絡開發(fā)2班 學 號_ _學生姓名_ _指導教師 2010年5月25日廣東工業(yè)大學課程設計任務書題目名稱通用學生信息管理系統學生學院計算機學院專業(yè)班級網絡開發(fā)2班姓 名學 號一、課程設計的內容1研究學生信息管理系統在實際的應用和意義。2學習使用sql server2000 vc+的實際使用,odbc驅動程序的應用和對服務器的配置等!3創(chuàng)建數據庫,將其與vc+連接進行增刪改查的功能,并而設計登錄界面,對不同的用戶設計不同的權限等!4編寫課程設計的報告!二、課程設計的要求與數據1學生基本情況
2、數據:學號,姓名,性別,年齡,狀態(tài),電話和地址。2用戶數據:登錄名,狀態(tài),密碼和權限。3教師數據:教師號,教師名,狀態(tài),年齡,性別。4課程表數據:課程號,課程名,課時,學分和狀態(tài)。5成績數據:課程號,學生號,課程成績,狀態(tài)。6教學數據:課程號,老師號。三、課程設計應完成的工作開發(fā)一個用vc+技術的通用學生信息管理系統,主要功能包括:用戶登錄,用戶管理,學生教師管理,成績管理,數據維護,成績查詢,學生查詢,授課管理,授課查詢,課程管理等。四、課程設計進程安排序號設計(論文)各階段名稱地點起止日期1選定本次課程設計及其論文的研究課題宿舍11周星期四2對研究課題進行調查并做出詳細的需求分析宿舍12周
3、星期日3收集資料和參考文獻圖書館12周星期三4認真閱讀和學習資料、文獻并做出初步構思宿舍12周星期五5制定出整個系統的設計構想、設計思路和方法宿舍12周星期六6進行系統的設計、開發(fā)和編寫程序代碼宿舍13周星期一至四7對系統進行測試和系統調試宿舍13周星期五六8完成整個系統的開發(fā)并進行系統維護宿舍13周星期日9撰寫設計論文宿舍14周星期一10最終完成系統修改、論文撰寫和表格填寫宿舍14周星期二11上交課程設計、論文及表格教學樓6.6五、應收集的資料及主要參考文獻1王珊.數據庫系統概論.北京:高等教育出版社,20072程展鵬.vc+.北京:清華大學出版社,2005.3 李華. visual c +
4、 教程m.北京:機械工業(yè)出版社,2007.發(fā)出任務書日期:2010年 5月15 日 指導教師簽名:計劃完成日期: 2010年 6月 5 日 基層教學單位責任人簽章: 主管院長簽章:一、相關技術介紹41后臺數據庫42前臺開發(fā)工具4二、需求分析51權限表52數據字典63數據流圖6三、概念結構設計7四、邏輯結構設計71系統的邏輯關系圖72具體的表的數據結構83系統結構圖9五、數據庫模塊設計101系統結構圖102數據庫關系圖103用戶界面11六、數據庫實施121數據庫的創(chuàng)建122數據庫的備份133用戶界面設計與關鍵代碼14七、系統測試方案和測試報告291學生管理模塊測試292成績管理模塊測試303課程
5、管理模塊測試314教師管理模塊測試325授課管理模塊測試32八、系統的主要功能和使用33九、系統安裝說明33十、個人總結34參考文獻34一、相關技術介紹1后臺數據庫sql全稱是“結構化查詢語言(structured query language)”,sql server是一種使用傳統的transact-sql語言,基于客戶機/服務器,并且兩者間傳送請求和答復的關系型數據庫管理系統。sql server使用客戶機/服務器體系結構將所有的工作分解為客戶機和服務器任務,由兩者分別完成。sql server 2000是microsoft公司于2000年8月推出的最新數據庫引擎,作為大型電子商務,數據倉
6、庫的數據庫解決方案,它具有一下幾個特點:1 熟悉的界面sql server2000與sql server 7.0就界面而言并沒有太大的差別,相信許多曾經使用過sql server 7.0的讀者見到2000時就會有一種十分熟悉的感覺,就方便了用戶從7.0版本到2000的升級。2 更加強大的數據引擎sql server2000擁有增強的數據引擎,高級的管理方式,這樣就大大降低了檢索的開銷。此外sql server2000支xml,http,并與web相結合,使其功能更加強大。3與windows更好地結合。2前臺開發(fā)工具vc+是微軟公司開發(fā)的一個ide(集成開發(fā)環(huán)境),換句話說,就是使用c+的一個開
7、發(fā)平臺.有些軟件就是這個編出來的.另外還有vb,vf.只是使用不同語言.但是,vc+是windows平臺上的c+編程環(huán)境,學習vc要了解很多windows平臺的特性并且還要掌握mfc、atl、com等的知識,難度比較大。windows下編程需要了解windows的消息機制以及回調(callback)函數的原理;mfc是win32api的包裝類,需要理解文檔視圖類的結構,窗口類的結構,消息流向等等;com是代碼共享的二進制標準,需要掌握其基本原理等等。 vc作為一個主流的開發(fā)平臺一直深受編程愛好者的喜愛,但是很多人卻對它的入門感到難于上青天,究其原因主要是大家對他錯誤的認識造成的,嚴格的來說vc
8、+不是門語言,雖然它和c+之間有密切的關系,如果形象點比喻的話,可以c+看作為一種”工業(yè)標準”,而vc+則是某種操作系統平臺下的”廠商標準”,而”廠商標準”是在遵循”工業(yè)標準”的前提下擴展而來的。vc+應用程序的開發(fā)主要有兩種模式,一種是win api方式,另一種則是mfc方式,傳統的win api開發(fā)方式比較繁瑣,而mfc則是對win api再次封裝,所以mfc相對于win api開發(fā)更具備效率優(yōu)勢,但為了對windows開發(fā)有一個較為全面細致的認識,筆者在這里還是以講解win api的相關內容為主線。二、需求分析學生信息管理系統是各所高校教育環(huán)節(jié)不可缺少的一部分,它的內容對學校的決策者和管
9、理者來說至關重要,所以該系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統人工方式管理文件檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不便。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,他已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。早期的校園網絡、如今的web寬帶網都為我們共享數據提供了前所未有的方便,由此,建立高性能的學生信息管理系統,作為計算機應用的一部分,使用計算機對學生信息管理,具有手工管理無法比擬的優(yōu)點,如:檢索迅速、查找方便、可靠性高、存儲量大、保
10、密性好、壽命長、成本低等,這些優(yōu)點能夠極大的提高學生信息管理的效率,也是科學化、正規(guī)化的體現。因此,開發(fā)這樣的軟件系統是很必要的。1權限表學生信息管理系統的主要功能是為是實現對學生的管理,包括增加,刪除,修改,查詢等。方便日常教學工作,提高管理的效率,而且要確保其信息安全!所以系統設計了三種不同的用戶:學生,教師,管理員。他們的權限如下圖所示:修改密碼用戶管理學生管理教師管理課程管理授課管理成績管理成績查詢授課查詢學生教師管理員權限圖具體的功能分析如下:系統登錄:程序一開始就是登錄,用戶輸入用戶名和密碼,系統會通過查詢數據庫進行驗證,不正確就重新登錄,正確就能進入;登錄后根據權限給予功能!修改
11、密碼:用戶都可以修改自己的密碼。用戶管理:只有管理員才有這個功能,可以增加,刪除,修改,用戶屬性。成績查詢:用戶可以根據權限,使用這功能,可以按姓名或課程來查詢,還可能以分數進行查詢,方便用戶使用。授課查詢:可以查某老師的課程或某課程的老師名。學生管理:可以對學生的信息進行增加,刪除,修改,功能。成績管理:可以對成績進行增加,刪除,修改,功能。教師管理:可以對老師的信息進行增加,刪除,修改,功能。課程管理:對課程的基本信息進行添加,刪除,修改等操作。2數據字典(1)學生數據:學生編號,學號,姓名,性別,年齡,狀態(tài),電話和地址(2)用戶數據:用戶編號,登錄名,狀態(tài),密碼和權限(3)教師數據:教師
12、編號,教師號,教師名,狀態(tài),年齡,性別和權限(4)課程表數據:課程編號,課程號,課程名,課時,學分和狀態(tài)(5)成績數據:課程號,學生號,課程成績,狀態(tài)其中,多個學生由一個老師教授課程,多個老師教授一個學生。多個老師教授一門課程,多門課程也可由一個老師兼任。學生可選修多門課程,一門課程也可多個學生一起選修。因此這三個實體都是多對多的關系。3數據流圖數據流圖三、概念結構設計e-r圖四、邏輯結構設計1系統的邏輯關系圖userinfo(login_id,login_name,login_password,login_level,login_status);teach(teach_id,course_n
13、o,teache_no,teache_status);student(student_id,student_no,student_name,student_sex,student_age, student_phone, student_address, student_status)teacher(teacher_id,teacher_no,teacher_name,teacher_sex,teacher_age,teacher_status)course(course_id,course_no,course_name,course_hour,course_credit,course_stat
14、us)score(score_id, student_no, course_no, score_result, score_status)2具體的表的數據結構列 名數據類型長 度備 注login_idsmallint2主鍵,非空login_namevarchar50非空,用戶名login_passwordvarchar50非空,口令login_levelvarchar5非空,權限login_statuschar2非空,狀態(tài)用戶表(userinfo)列 名數據類型長 度備 注teach_idint4非空,主鍵course_nochar5非空,外鍵,課程名teache_nochar10非空,外鍵,
15、教師名teach_statuschar2非空,狀態(tài)教學表(teach)列 名數據類型長 度備 注student_idint4主鍵,非空student_nochar10非空,學號student_namevarchar20非空,姓名student_sexchar2非空,性別student_agesmallint2非空,年齡student_phonevarchar20電話student_addressvarchar100地址student_statuschar2非空,狀態(tài)學生表(student)列 名數據類型長 度備 注teacher_idint4主鍵,非空teacher_nochar10非空,教師
16、號teacher_namevarchar20非空,教師名teacher_sexchar2性別teacher_agesmallint2非空,年齡teacher_statuschar2非空,狀態(tài)教師表(teacher)列 名數據類型長 度備 注course_idint4非空course_nochar5非空,課程號course_namevarchar20非空,課程名course_hoursmallint2非空,授課時間course_creditnumeric5非空,學分course_statuschar2非空,狀態(tài)課程表(course)列 名數據類型長 度備 注score_idint4非空,主鍵st
17、udent_nochar10非空,外鍵,學號course_nochar5非空,外鍵,課程號score_resultsmallint2非空,成績score_statuschar2非空,狀態(tài)成績表(score)3系統結構圖視圖五、數據庫模塊設計1系統結構圖系統結構圖2數據庫關系圖數據庫關系圖3用戶界面用戶登錄界面:用戶名:黃振龍 密碼:3107006990進入后 基本界面:系統管理界面:基本信息管理界面:信息查詢界面:幫助界面:六、數據庫實施1數據庫的創(chuàng)建(1)創(chuàng)建studentscore數據庫create database studentscoreon( name = studentscore,
18、 filename = f:數據庫課程設計studentscore.mdf, size = 4, filegrowth = 2);(2)創(chuàng)建用戶表(userinfo)create table userinfo ( login_id smallint primary key clustered, login_name varchar(50) not null , login_password varchar(50) not null check(len(login_password)5), login_level varchar(5) not null, login_status char(2)
19、 default y check(login_status in(y,n) );(3)創(chuàng)建教師表(teacher)create table teacher( teacher_id int primary key clustered, teacher_no char(10) not null check(len(teacher_no)=10) unique, teacher_name varchar(20) not null, teacher_sex char(2) default 男 check(teacher_sex in(男 ,女), teacher_age smallint not nu
20、ll check(teacher_age2), teacher_status char(2) default y check(teacher_status in(y,n);(4)創(chuàng)建學生表(student)create table student(student_id int primary key clustered, student_no char(10) not null check(len(student_no)=10) unique, student_name varchar(20) not null, student_sex char(2) default 男 check(stud
21、ent_sex in(男 ,女), student_age smallint not null check(student_age2), student_phone varchar(20), student_address varchar(100), student_status char(2) default y check(student_status in(y,n);(5)創(chuàng)建課程表(course)create table course( course_id int primary key clustered, course_no char(5) not null check(len(c
22、ourse_no)=5) unique, course_name varchar(20) not null, course_hour smallint not null, course_credit numeric(2,1) not null, course_status char(2) default y check(course_status in (y,n);(6)創(chuàng)建教學表create table course( course_id int primary key clustered, course_no char(5) not null check(len(course_no)=5)
23、 unique, course_name varchar(20) not null, course_hour smallint not null, course_credit numeric(2,1) not null, course_status char(2) default y check(course_status in (y,n);(7)創(chuàng)建分數表reate table score( score_id int primary key clustered, student_no char(10) not null check(len(student_no)=10) , course_n
24、o char(5) not null check(len(course_no)=5) , score_result smallint not null check(score_result=0) and (score_result=100), score_status char(2) default y check(score_status in (y,n), foreign key(student_no) references student(student_no), foreign key(course_no) references course(course_no) );2數據庫的備份關
25、于數據庫的備份,可以在另一臺電腦上多建立一個數據庫作為備份,對數據庫的操作要同時對兩個數據庫的相同操作才可以進行!以后的災難出現時也可以用另 一個數據庫文件進行恢復!3用戶界面設計與關鍵代碼(1)用戶登錄界面如下void clogindlg:onok() / todo: add extra validation herecstring username,password;m_strusername.getwindowtext(username); /獲得輸入的用戶名m_strpassword.getwindowtext(password); /獲得輸入的密碼if(!m_database.iso
26、pen() /判斷數據庫是否打開,打開返回true,否則返回falseif(m_database.open(_t(studentscore) /嘗試打開數據庫m_recordset.m_pdatabase = &m_database ;cstring strsql;strsql.format(select * from userinfo where login_name=%s and login_password=%s and login_status=y,username,password);m_recordset.open(crecordset:forwardonly,strsql);/打
27、開記錄集if(m_recordset.getrecordcount()=0)messagebox(密碼錯誤,請重新輸入!,密碼錯誤,mb_ok | mb_iconwarning);m_strpassword.setwindowtext();m_strpassword.setfocus();elsem_recordset.getfieldvalue(login_level,m_userlevel);/獲得數據庫中用戶的級別cdialog:onok();m_recordset.close();m_database.close();elsemessagebox(無法打開數據庫!);void clog
28、indlg:oncancel() / todo: add extra cleanup hereif(messagebox(真的要退出系統嗎?,退出詢問,mb_okcancel | mb_iconquestion)=idok)cdialog:oncancel();bool clogindlg:oninitdialog() cdialog:oninitdialog();m_strpassword.setwindowtext(123456789);m_strusername.setwindowtext(liao);return true; / return true unless you set t
29、he focus to a control / exception: ocx property pages should return falsevoid clogindlg:onsetfocusloginuser() m_strusername.setwindowtext();m_strpassword.setwindowtext();(2)基本信息管理(學生管理)void cstudentdlg:refreshlist()m_list.deleteallitems();m_studentset.open();m_studentset.m_strfilter = student_status
30、=y;m_studentset.requery();for(int i=0;igetdlgitem(idc_student_female);p_maleradio = (cbutton*)this-getdlgitem(idc_student_male);m_badd.enablewindow(true);m_bdel.enablewindow(true);m_bedit.enablewindow(true);bool cstudentdlg:oninitdialog() cdialog:oninitdialog();/ todo: add extra initialization herem
31、_list.insertcolumn(0,編號);m_list.insertcolumn(1,學號);m_list.insertcolumn(2,姓名);m_list.insertcolumn(3,性別);m_list.insertcolumn(4,年齡);m_list.insertcolumn(5,電話);m_list.insertcolumn(6,地址);rect rectlist;m_list.getwindowrect(&rectlist);m_list.setcolumnwidth(0,45);m_list.setcolumnwidth(3,45);m_list.setcolumnw
32、idth(4,45);int othercolwidth = (rectlist.right-rectlist.left-4-45*3)/4;m_list.setcolumnwidth(1,othercolwidth);m_list.setcolumnwidth(2,othercolwidth);m_list.setcolumnwidth(5,othercolwidth);m_list.setcolumnwidth(6,othercolwidth);m_list.setextendedstyle(lvs_ex_fullrowselect);refreshlist();for(int j=0;j
33、getdlgitem(idc_student_female);p_maleradio = (cbutton*)this-getdlgitem(idc_student_male);resetbutton();return true; / return true unless you set the focus to a control / exception: ocx property pages should return falsevoid cstudentdlg:onclickliststudent(nmhdr* pnmhdr, lresult* presult) / todo: add
34、your control notification handler code hereint row = m_list.getselectionmark();/讓相應的空間顯示相應的 學號 姓名 性別 年齡 電話 地址cstring temp;temp = m_list.getitemtext(row,1);m_strno.setwindowtext(temp);temp = m_list.getitemtext(row,2);m_strname.setwindowtext(temp);temp = m_list.getitemtext(row,3);if(temp=女)checkradiob
35、utton(idc_student_female,idc_student_male,idc_student_female);elsecheckradiobutton(idc_student_female,idc_student_male,idc_student_male);temp = m_list.getitemtext(row,4);m_strage.selectstring(row,temp);temp = m_list.getitemtext(row,5);m_strphone.setwindowtext(temp);temp = m_list.getitemtext(row,6);m
36、_straddress.setwindowtext(temp);*presult = 0;void cstudentdlg:onstudentadd() / todo: add your control notification handler code here/以下為設置各個按鈕狀態(tài)cbutton *p_femaleradio,*p_maleradio;m_strname.enablewindow(true);m_strname.setwindowtext();m_strno.enablewindow(true);m_strno.setwindowtext();m_strage.enabl
37、ewindow(true);m_strage.selectstring(0,20);m_strphone.enablewindow(true);m_strphone.setwindowtext();m_straddress.enablewindow(true);m_straddress.setwindowtext();p_femaleradio =(cbutton*)this-getdlgitem(idc_student_female);p_femaleradio-enablewindow(true);p_maleradio = (cbutton*)this-getdlgitem(idc_st
38、udent_male); p_maleradio-enablewindow(true);m_bok.enablewindow(true);m_badd.enablewindow(false);m_bedit.enablewindow(false);m_bdel.enablewindow(false);/設置記錄集相關狀態(tài)m_studentset.open();m_studentset.addnew();void cstudentdlg:onstudentedit() / todo: add your control notification handler code hereint row =
39、 m_list.getselectionmark();cstring temp,strsql;cbutton *p_femaleradio,*p_maleradio;temp = m_list.getitemtext(row,0);if(!temp.isempty()strsql.format(student_id=%s,temp);m_studentset.open();m_studentset.m_strfilter = strsql;m_studentset.requery();m_studentset.edit();/單擊修改后,設置其他按鈕狀態(tài)m_bok.enablewindow(t
40、rue);m_badd.enablewindow(false);m_bdel.enablewindow(false);m_bedit.enablewindow(false);m_strname.enablewindow(true);m_strno.enablewindow(true);m_strphone.enablewindow(true);m_straddress.enablewindow(true);m_strage.enablewindow(true);p_femaleradio =(cbutton*)this-getdlgitem(idc_student_female);p_fema
41、leradio-enablewindow(true);p_maleradio = (cbutton*)this-getdlgitem(idc_student_male); p_maleradio-enablewindow(true);void cstudentdlg:onstudentdel() / todo: add your control notification handler code hereint row = m_list.getselectionmark();cstring temp,strsql;temp = m_list.getitemtext(row,0);if(!tem
42、p.isempty()if(messagebox(確認要刪除該記錄?,刪除詢問,mb_okcancel|mb_iconquestion)=idok)strsql.format(student_id=%s,temp);m_studentset.open();m_studentset.m_strfilter = strsql;m_studentset.requery();m_studentset.edit();m_studentset.m_student_status = n;m_studentset.update();m_studentset.close();refreshlist();void
43、 cstudentdlg:onstudentok() / todo: add your control notification handler code herecstring no,name,phone,address,strsex,temp;int age;m_strno.getwindowtext(no);m_strname.getwindowtext(name);m_strphone.getwindowtext(phone);m_straddress.getwindowtext(address);m_strage.getwindowtext(temp);age = atoi(temp
44、);switch(getcheckedradiobutton(idc_student_female,idc_student_male)case idc_student_female : strsex = 女; break;case idc_student_male : strsex = 男; break;if(name=)messagebox(請輸入學生姓名!);elsem_studentset.m_student_no = no;m_studentset.m_student_name = name;m_studentset.m_student_sex = strsex;m_studentse
45、t.m_student_age = age;m_studentset.m_student_phone = phone;m_studentset.m_student_address = address;m_studentset.m_student_status = y;m_studentset.update();m_studentset.close();refreshlist();resetbutton();void cstudentdlg:oncancel() / todo: add extra cleanup hereif(m_studentset.isopen()m_studentset.
46、close();resetbutton();cdialog:oncancel();(3)基本信息管理(成績管理)bool cscoredlg:oninitdialog() cdialog:oninitdialog();/ todo: add extra initialization here/初始化數據庫if(!m_database.isopen()m_database.open(_t(studentscore);m_recordset.m_pdatabase = &m_database;/初始化列表框m_list.insertcolumn(0,成績編號);m_list.insertcolum
47、n(1,學生名);m_list.insertcolumn(2,課程名);m_list.insertcolumn(3,分數);rect listrect;m_list.getwindowrect(&listrect);int width = listrect.right-listrect.left-4;for(int i=0;i4;i+)m_list.setcolumnwidth(i,width/4);m_list.setextendedstyle(lvs_ex_fullrowselect);refreshlist();return true; / return true unless you set the focus to a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個體化醫(yī)學診療行業(yè)營銷策略方案
- 化妝用皮膚調理霜產品供應鏈分析
- 光通信設備產品供應鏈分析
- 嬰兒尿褲產業(yè)鏈招商引資的調研報告
- 蔬菜盤商業(yè)機會挖掘與戰(zhàn)略布局策略研究報告
- 玻璃罐細分市場深度研究報告
- 市政供水處理行業(yè)相關項目經營管理報告
- 醫(yī)用柔性內窺鏡產業(yè)鏈招商引資的調研報告
- 辦公室家具出租行業(yè)經營分析報告
- 發(fā)動機用火花塞產業(yè)鏈招商引資的調研報告
- 食材配送服務方案投標方案(技術方案)
- 2024年國家保安員資格考試題庫及參考答案(完整版)
- 密封條范文模板(A4打印版)
- MOOC 科技英語寫作-西安電子科技大學 中國大學慕課答案
- 2024年白銀有色集團股份有限公司招聘筆試參考題庫含答案解析
- 辛亥革命(共16張PPT)
- XX元器件選用報告
- 工業(yè)設計史論考試模擬題(附答案)
- 主動脈瓣狹窄護理查房-1
- 保衛(wèi)黃河 殷承宗 獨奏鋼琴譜 完美完整版13頁
- 鐵路專用線名稱表
評論
0/150
提交評論