基于sql的學生成績管理系統課程設計報告.doc
《基于sql的學生成績管理系統課程設計報告.doc》由會員分享,可在線閱讀,更多相關《基于sql的學生成績管理系統課程設計報告.doc(12頁珍藏版)》請在裝配圖網上搜索。
一、實驗題目 學生證管理系統數據庫的設計與實現 描述:設計一個學生證管理系統。實現下列功能: 1.錄入某位學生的學生證信息 2.給定學號,查詢某位學生的學生證信息; 3.給定班號,顯示該班所有學生的學生證信息; 4.給定學號,修改該學生的學生證信息; 5.給定學號,刪除該學生的學生證信息; 三、實驗目的 數據庫課程設計課程實驗是對學生的一種全面綜合訓練,是與課堂聽講、自學和練習相輔相成的必不可少的一個教學環(huán)節(jié),通過實驗達到深化理解和靈活掌握教學內容的目的,以及提高學生分析問題、解決問題的應用能力。同時,使學生的工作規(guī)范和科學作風得到培養(yǎng)。 通過該課程的學習,要求學生能獨立分析問題,設計算法,實現程序的各項功能,得到正確的可執(zhí)行程序,學會調試程序,對設計過程進行系統的總結。 本實踐課的主要目的: 1、掌握運用數據庫原理進行系統分析和設計的方法; 2、掌握關系數據庫的設計方法; 3、掌握利用SQL Server 2000技術; 4、熟悉各種SQL語句及對數據庫的訪問方法。 四、實驗要求 1.對各個系統進行系統功能需求分析 2. 數據庫設計分析階段,進行詳細的數據庫需求分析,進行概念數據庫的設計,畫出數據庫的E-R圖(局部和整體E-R圖) 3. 設計出詳細的邏輯數據庫結構,將各個實體和聯系轉化為相應的二維表即關系模式,指定各個關系的主關鍵字和外部關鍵字,并對各個關系的約束加以限定 4. 通過企業(yè)管理器或是查詢分析器實現各個二維關系(建議最好用SQL代碼實現),要求建立相關的索引 5. 根據系統功能需求設計相應的查詢視圖 6. 要求根據系統功能需求建立存儲過程 7. 根據功能需求建立相應的觸發(fā)器以保證數據的一致性 8. 通過建立用戶和權限分配實現數據庫一定的安全性,考慮數據庫的備份與恢復 五、實現思路 (一)系統需求分析 需求分析師整個數據庫設計過程的基礎,要收集數據庫所有用戶的信息內容和處理要求,并加以規(guī)格化分析。這是最費時、最復雜的一步,但是也是最重要的一步,相當于待構建的數據庫大廈的地基,它決定了以后各步設計的速度和質量。需求分析做的不好,可能會導致整個數據庫設計返工重做。在分析用戶需求時,要確保用戶目標的一致性。 需求分析的任務是:對現實世界要處理的對象(組織、部門、企業(yè))等進行詳細的調查,通過對原系統的了解,收集支持新系統的基礎數據并對其進行處理,在此基礎上確定新系統的功能。 具體地說,需求分析階段的任務包括下述三項。 1.調查分析用戶活動 2.收集和分析需求數據,確定系統邊界 3.編寫系統分析報告 在本課程設計中,是對學生證的信息進行管理,學生證的信息不僅包括學生本身信息,也包括系別的信息及注冊學生證的相關注冊信息,因此本課程設計中要用到三個表,即學生信息表、系別信息表和學生證注冊表。 對學生證信息的處理包括信息的錄入、查詢、修改及刪除。 1.數據流圖: 錄入、修改、查詢、刪除 學生證 身份證明 學生 注冊 2.數據字典: 數據字典是對系統中數據的詳細描述,是各類數據結構和屬性的清單。任何字典最主要的用途都是供人查閱不了解的條目的解釋,數據字典的作用也正是在軟件分析和設計過程中給人提供關于數據的描述信息。數據流圖和數據字典共同構成系統的邏輯模型,沒有數據字典數據流圖就不嚴格,然而沒有數據流圖數據字典也難于發(fā)揮作用。只有數據流圖和對數據流圖精確的定義放在一起,才能共同構成系統的規(guī)格說明。 我們采用卡片形式書寫數據字典,每張卡片上保存描述一個數據元素的信息。這種做法較好的實現了上述要求,特別是更新修改起來很方便,能夠單獨處理每個數據元素的信息。每張卡片上包含的信息有:名字,描述,定義,位置。 (1)對學生信息的管理 編號 1 名稱 學生信息管理 簡述 維護學生信息的完整性 輸入 學生姓名、學號、班級號、出生年月、性別、民族、籍貫 處理 1. 新增學生信息的錄入 2. 修改學生信息 3. 刪除學生信息記錄 4. 查詢個人學生信息及班級學生信息 輸出 學生信息表 (2)對系別信息的管理 編號 2 名稱 系別信息管理 簡述 維護系別信息的完整性 輸入 系別名,班級號等 處理 1.新增系別信息的錄入 2.修改系別信息 3.刪除系別信息記錄 4.查詢系別信息 輸出 系別信息表 (3)對學生證注冊信息的管理 編號 3 名稱 學生證注冊信息管理 簡述 維護學生證注冊信息的完整性 輸入 學號,注冊日期,截止日期 處理 1.新增注冊信息的錄入 2.修改注冊信息 3.刪除注冊信息記錄 4.查詢注冊信息 輸出 注冊信息表 (二)概念結構設計 概念結構設計就是將需求分析得到的用戶需求抽象為信息結構,即概念模型。概念模型作為概念結構設計的表達工具,為數據庫提供一個說明性結構,是設計數據庫邏輯結構即邏輯模型的基礎。因此,概念模型必須具備以下特點: (1)語意表達能力豐富。 (2)易于交流和理解。 (3)易于修改和擴充。 (4)易于向各種數據模型轉換。 1.局部E-R圖: 學生信息表: 學生 姓名 學號 班級號 性別 出生年月 籍貫 民族 系別信息表: 系別 系別名 班級號 注冊信息表: 注冊信息 學號 注冊日期 截止日期 2.全局E-R圖: 系別 系別名 學生證 1 班級號 1 注冊日期 擁有 注冊 截止日期 n 1 學生 姓名 學號 性別 出生年月 籍貫 民族 (三)邏輯結構設計 數據庫邏輯設計的任務是將概念模型轉換成特定DBMS所支持的數據模型的過程。 在本課程設計中,存在三個實體(學生,系別,學生證),兩個聯系(包含,注冊),在學生實體中,學號作為其關鍵字;在系別實體中,系別名作為其關鍵字;而學生證的信息是由學生信息、系別信息及注冊信息組成。因此得到下列關系模式: 實體關系模式: 學生(學號,姓名,性別,出生年月,籍貫,民族) 系別(系別名,班級號) 聯系關系模式: 擁有(系別名,學號) 注冊(學號,注冊日期,截止日期) (四)物理結構設計 數據庫物理設計的任務是為上一階段得到的數據庫邏輯模式,即數據庫的邏輯結構選擇合適的應用環(huán)境的物理結構,既確定有效地實現邏輯結構模式的數據庫存儲模式,確定在物理設備上所采用的存儲結構和存取方法,然后對該存儲模式進行性能評價、修改設計,經過多次反復,最后得到一個性能較好的存儲模式。數據庫物理設計內容包括記錄存儲結構的設計,存儲路徑的設計,記錄集簇的設計。 確定數據存放位置:一臺裝有Windows系統的計算機的C盤。 確定存儲結構:確定關系、索引、聚簇。 六、實現過程 (一)建表 在企業(yè)管理器中,新建數據庫,并設置名為student。 在該數據庫中創(chuàng)建三個表,即學生信息表、系別信息表和注冊信息表,分別命名為S,D,C。 首先設計學生信息表S,包括以下屬性,及各屬性的數據類型和長度: 含義 標識 數據類型 長度 約束 姓名 stu_name varchar 30 Not null 學號 stu_no char 10 Not null,primary key 班級號 class_no char 6 Not null 性別 stu_sex char 2 出生年月 stu_birthday datetime 8 民族 stu_native char 10 Default ‘漢’ 籍貫 stu_birthday varchar 30 系別信息表D: 含義 標識 數據類型 長度 約束 系別名 dept varchar 30 Not null 班級號 class_no char 6 注冊信息表C: 含義 標識 數據類型 長度 約束 學號 stu_no char 10 Not null,primary key 注冊日期 login_date datetime 8 Not null 截止日期 validity_date datetime 8 Not null 在設計表后即可向表中添加數據,在添加時要注意各項的約束條件及數據長度限制。 (二)設置安全性及用戶權限 1.在企業(yè)管理器中,安全性一項中,新建登錄。 (1)設置登錄名為ll,并設置SQL server身份驗證密碼,及默認登錄的數據庫為student。 (2)設置該登錄用戶的服務器角色為:System Administrators。 (3)設置該登錄用戶均可訪問所有數據庫。 2.編輯SQL server注冊屬性。 (1)選擇使用SQL Server身份驗證。 (2)設置登錄名ll及密碼。 (3)選擇總是提示輸入登錄名和密碼。 3.在student數據庫中,為用戶設置權限。 (1)設置用戶ll的數據庫角色為:public和db_owner。 (2)設置ll的用戶權限,即對S,D,C三個表均能夠Select,Update,Delete,Insert和DRI。 (三)創(chuàng)建學生證視圖 創(chuàng)建學生證信息的視圖,從三個表中選擇學生證所需信息,以便對視圖以外的數據進行保密,簡化了查詢操作,并保證了數據的邏輯獨立性。 以下創(chuàng)建視圖Stu_card,連接D表,C表和S表,選擇所需數據項組成視圖。 Create view Stu_card(Dept,SName,SNo,ClassNo,Sex,Birthday,Native,Birthplace, LoginDate,ValidityDate) AS SELECT dept,S.*,login_date,validity_date FROM D,C,S WHERE D.class_no=S.class_no and C.stu_no=S.stu_no (四)實現對學生證的各操作功能 1.錄入學生證信息 (1)對某學生的學生證信息錄入之前,需先判斷該學生的學生證信息是否存在,如已經存在就不能再錄入了;如果不存在,還需判斷該學生的學生信息是否存在,因為如果該學生已存在學生信息,但沒有注冊學生證,則該學生也不存在學生證信息。在判斷之后再根據不同情況進行學生證信息的錄入。 創(chuàng)建存儲過程InsertIf,判斷是否錄入學生證信息: create procedure InsertIf --判斷是否錄入 ( @sno varchar(10) )--設置參數,通過學號查詢該學生的學生證信息使否存在 as begin declare @cant varchar(50) declare @sel varchar(50) declare @aa varchar(70) declare @bb varchar(70) set @cant=信息已存在,不能錄入 set @sel=無此學生證信息,請錄入 set @aa=有此學生信息,但未注冊,請注冊(執(zhí)行InsertC)! set @bb=無此學生信息,請錄入學生信息并為其注冊(執(zhí)行InsertS和InsertC)! if exists (select * from Stu_card where SNo=@sno) --如果存在該學生 print @cant --的學生證信息就打印出來 else begin print @sel if exists(select * from S where Stu_no=@sno) --如果不存在 print @aa --該學生證信息,但存在學生信息,說明為注冊 else print @bb --不存在學生信息,可以錄入該學生信息并注冊 end end (2)判斷后,如不存在學生證信息但存在學生信息,則需注冊。 創(chuàng)建存儲過程InsertC,對學生進行注冊 create procedure InsertC --注冊,向表C中添加學生證注冊信息 ( @sno char(10), @logindate datetime, @validate datetime ) as insert into C values(@sno,@logindate,@validate) (3)判斷后,如不存在學生信息,則需錄入該學生信息,并進行學生證注冊 創(chuàng)建存儲過程InsertS,錄入學生信息: create procedure InsertS //向S表中添加學生信息 ( @sname varchar(30), @sno char(10), @classno char(6), @sex char(2), @birthday datetime, @native char(2), @birthplace varchar(30) ) as insert into S values(@sname,@sno,@classno,@sex,@birthday,@native,@birthplace) 在錄入學生證信息時,先添加學生信息,再執(zhí)行存儲過程InsertC,注冊學生證,才完整的錄入一條學生證信息。 2.查詢學生證信息 (1)給定學號,查詢某位學生的學生證信息 由于學生證信息是在視圖中體現的,因此通過查詢視圖,可以查看學生的學生證信息. 創(chuàng)建存儲過程QureyInfor,傳遞參數sno,通過給定學號,判斷該學生的學生證信息是否存在,如不存在,則告知不存在該學生證信息;如存在,則顯示出該學生的學生證信息. create procedure QureyInfor ( @sno char(10) ) as begin declare @cant varchar(50) set @cant=信息不存在 if exists (select * from Stu_card where SNo=@sno) select * from Stu_card where SNo=@sno else print @cant end (2)給定班號,查詢該班所有學生的學生證信息 該查詢與前一查詢方法是相同的,通過查詢視圖,查看信息。 創(chuàng)建存儲過程DisplayInfor,傳遞參數classno,通過給定班級號,判斷該班學生的學生證信息是否存在,如不存在,則告知"不存在該班學生證信息";如存在,則顯示出該班全部學生的學生證信息。 create procedure DisplayInfor ( @classno char(6) ) as begin declare @cant varchar(50) set @cant=無相關信息 if exists (select * from Stu_card where ClassNo=@classno) select * from Stu_card where ClassNo=@classno else print @cant end 3.修改學生證信息 學生證信息的修改,雖然是對視圖進行修改,但實質是對各表的修改。 對于學生證信息的修改,是先通過給定學生學號,先判斷該學生的學生證信息是否存在,如存在,再通過添加表信息來添加學生證信息。 (1)首先創(chuàng)建存儲過程ModIf,用來判斷需修改的學生證信息是否存在,如不存在,則告知"不存在該學生證信息";如存在,則將該學生證原本信息顯示出來,表明可以進行修改。 create procedure ModIf ( @sno char(10) ) as begin declare @cant varchar(50) set @cant=無此學生證信息,不能修改 if exists (select * from Stu_card where SNo=@sno) begin select * from Stu_card where SNo=@sno end else print @cant end (2)再創(chuàng)建存儲過程ModS,ModC及ModD,通過更新操作update對表進行修改,以修改學生證信息。 create procedure ModS //更新S表中學生信息 ( @sname varchar(30), @sno char(10), @classno char(6), @sex char(2), @birthday datetime, @native char(2), @birthplace varchar(30) ) as update S Set stu_name=@sname,stu_no=@sno,class_no=@classno,stu_sex@sex, stu_birthday=@birthday,stu_native=@native,stu_birthplace=@birthplace create procedure ModD //更新D表中學生信息 ( @dept varchar(30), @classno char(6), ) as update S Set dept=@dept,class_no=@classno create procedure ModC --修改表C中信息 ( @sno char(10), @logindate datetime, @validate datetime ) as update C set stu_no=@sno,login_date=@logindate,validity_date=@validate 4.刪除學生證信息 在刪除學生證信息時,并不是將學生證中的學生信息及相關系別信息也相應刪除,而只是刪除該學生證的注冊信息。應保證在刪除學生證信息同時保留該學生的學生信息及相關的系別信息。 (1)判斷該學生證信息是否存在 創(chuàng)建存儲過程,給定學號參數,判斷是否存在該學生的學生證信息,如不存在,則告知"不存在該學生證信息",即無法刪除;如存在,則告知"存在信息",并顯示出該條信息。 該操作同樣可以使用存儲過程ModIf來完成,因此不需再重新創(chuàng)建。 (2)刪除信息 創(chuàng)建存儲過程DelInfor,給出要刪除的學生學號,通過delete操作刪除注冊信息表C中的該條記錄,即完成學生證信息的刪除工作。 create procedure DelInfor ( @sno char(6) ) as delete from C where stu_no=@sno (3)顯示刪除后信息 在刪除完成后,通過顯示剩余全部學生證信息,確認要刪除的學生證信息是否刪除成功。 創(chuàng)建觸發(fā)器DisplayAll,完成刪除工作的檢驗工作,當對表C進行delete操作時,通過查詢視圖,顯示剩余全部學生證信息。 create trigger DisplayAll on C for delete as select * from Stu_card 七、實驗總結 通過一周的課程設計,完成了一個簡單的學生證管理系統,并成功實現了各要求所需功能。 首先,在設計方面,考慮到數據的冗余及沖突等問題,將學生證信息分別存儲到三個表中,考慮了系別信息數據,學生信息數據及學生證注冊信息數據的獨立性問題。其次,在設計表時,注意了數據的數據類型及長度的選擇,考慮各種數據的添加情況,如漢族非少數民族,在添加該項時將“漢”設置為默認情況,同時還要保證不浪費數據的存儲空間。第三,使用了視圖view,實現數據的保密性,將學生證所需信息以視圖方式存放,在數據查詢時使用視圖查詢。第四,對于各功能的實現,均使用了存儲過程procedure,通過傳遞參數得到想要的結果。在實現功能時,注意了條件的判斷,根據分析各種情況,實現不同的操作。例如,在實現信息的添加時,總的分兩種情況,一是存在信息,另一個則是不存在信息,在不存在信息中又需考慮兩種情況,即存在該學生信息,但由于未注冊學生證,因此也不存在學生證信息;另一是根本不存在該學生信息。針對這兩種情況,在添加信息時就有兩種不同的方法。第四,在本系統中使用了觸發(fā)器trigger,觸發(fā)器用于響應數據庫更新,因此在刪除信息時,我使用了觸發(fā)器,在信息刪除后,顯示其余信息,用來確認信息是否成功刪除。第五,設置了安全性,在數據庫中,安全性十分重要,因此,我創(chuàng)建了自己的登錄名,并對數據庫及各表的訪問設置了權限,用以保護數據,防止他人任意修改。 但由于個人的經驗、知識等方面的不足,并且時間比較匆忙,本系統還存在著許多缺陷。首先,在需求分析時,未能做到完全滿足用戶需要,而且整個系統漏洞很多,對表的設計也不夠完善,對數據的完整性,獨立性等方面的要求考慮的還不夠充分。其次,本系統可以與VC,VB等編譯工具相互配合,使其實現的更人性化,界面化,操作更方便,安全性更好。 在本系統中,還有很多需改進的地方,相信通過一點點的改善,該系統會更完善。 八、心得體會 通過這次課程設計,我了解到自身在許多相關知識方面都認識得不夠深刻,致使在實際的運行操作中遇到許多困難與阻礙。在實驗過程中,許多問題都在與同學的討論中得到解決,并在討論過程中,又對所學有了新的體會,學到了更多的知識。經過一周的課程設計,體會到想要做一個完善的,功能全面的系統,僅僅依靠課本上學習的知識是遠遠不夠的,不僅僅相關的專業(yè)知識要熟練運用,對所做的系統用途也要充分了解,等等這些都要花費時間與精力。在設計過程中,發(fā)現到合作的重要性,相互之間的溝通對系統的完成也有很大幫助??傊?,這一周的課程設計,不僅僅是一次簡單的見習,對以后的工作與生活都是一次經驗的積累。- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 基于 sql 學生 成績管理系統 課程設計 報告
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.820124.com/p-6522907.html