數據庫課程設計--學生選課成績管理系統_第1頁
數據庫課程設計--學生選課成績管理系統_第2頁
數據庫課程設計--學生選課成績管理系統_第3頁
數據庫課程設計--學生選課成績管理系統_第4頁
數據庫課程設計--學生選課成績管理系統_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數據庫系統概論課程設計實驗報告書姓名:學號:專業(yè):軟件工程班級:軟093班學院:計算機 一 概述1.1.1 問題的提出 隨著科技的發(fā)展,基本上所有的具有一定數量數據的機構都開始使用計算機數據庫來做管理。幾乎所有學校也都已經在使用計算機管理數據的機制,大大減少了學校學生成績管理的工作量。系統概述:通過對學校日常教學管理中的課程、選課、學生、教師、成績等相關內容進行分析,完成具有學生管理、成績管理、課程管理等相關功能的小型數據庫管理應用系統?;疽螅和瓿蓪W生、班級、課程表的維護。 完成成績表的維護、瀏覽查找 。 按班級、按課程計算平均成績、最高成績、最低成績、及格率。統計某學生、某學期的所有課程

2、的平均成績。 完成用戶管理功能。 完成數據備份與恢復功能,1.1.2 本課題的意義通過該課程設計,可以達到把數據庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現實生活中的應用充分的結合起來。1.2設計環(huán)境  Oracle 11G    C# .net平臺二 需求分析2.1 系統功能要求設計此系統實現如下系統功能:(1)使得學生的成績管理工作更加清晰、條理化、自動化。(2)通過用戶名和密碼登錄系統,查詢課程基本資料,學生所選課程成績,修改用戶密碼等功能。 容易地完成學生信息的查詢操作。(3) 設計人機友好界面,功能安排合

3、理,操作使用方便,并且進一步考慮系統在安全性,完整性,并發(fā)控制,備份和恢復等方面的功能要求。登陸失敗學生管理課程管理退出系統用戶驗證成績查詢登陸成功教師管理2.2 系統模塊設計成績管理系統大體可以分成二大模塊如, 一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統計等功能模塊;再其次還有教師、課程等相關信息的模塊; 2.3 數據字典 數據項是數據庫的關系中不可再分的數據單位,下表分別列出了數據的名稱、數據類型、長度、取值能否為空。利用SQL Server 2000建

4、立“學生選課”數據庫,其基本表清單及表結構描述如下:數據庫中用到的表:數據庫表名關系模式名稱備注Student學生表學生學籍信息表Course課程表課程基本信息表Teach教師表教師基本信息Stu_Cour選課表學生選課信息Score成績選課成績信息表Student基本情況數據表,結構如下:字段名字段類型Not Null說明SnoCharPrimary key學號SnamecharNot Null學生姓名Sdeptchar學院Sclasschar班級Sageintr年齡Ssexchar性別Teach基本情況數據表,結構如下字段名字段類型Not Null說明TnoCharPrimary key教

5、師號TnamecharNot Null教師姓名Tsexchar性別Cnochar外部碼所授課程Tageint年齡Tdeptchar學院Course數據表,結構如下:字段名字段類型約束控制說明Cnochar主鍵(primary key)課程號Cnamecharnot null課程名稱Ctimeintnot null課時Stu_cour情況數據表,結構如下:字段名字段類型約束控制說明Cnochar外部鍵課程號Snochar外部鍵學號Score情況數據表,結構如下:字段名字段類型約束控制說明Cnochar外部鍵課程號Snochar外部鍵學號scoreint成績三 概念模型設計由需求分析的結果可知,本

6、系統設計的實體包括:(1)學生基本信息:學號,姓名,學院,班級,年齡,性別。(2)課程基本信息: 課程名,課程號,學時。(3)教師基本信息:教師號,教師姓名,職稱,年齡,性別,學院(4)學院基本信息:學院名、學院號、院長姓名這些實體間的聯系包括:(1) 每位學生可以學習多門課程,每門課程可供多位學生學習。(2) 每門課可以由多個老師教,每個老師可以教多門課程(3) 學生每選一門課就可以得到一個成績,不選此課就不能取得該課程成績由上述分析可得到系統的ER圖:選修課程成績學生課程號課程名學時學分分數學號姓名性別系別 地址年齡教授擁有學院代碼擁有學院職稱教師教師號學院名學院性別教師名院長名四 邏輯和

7、物理結構設計4.1由系統ER圖轉化而得到的關系模式如下:(1)學生(學號,姓名,性別,年齡,學院,班級),其主關鍵字為學號;(2)課程(課程名,課程號,學時),其中主關鍵字為課程號;(3)教師(教師號,教師姓名,職稱,年齡,性別,學院,所授課程號)(4)選課(課程號,學號)其中主關鍵字為學號和課程號(4)成績(課程號,學號,分數)其中主關鍵字為學號和課程號。4.2 確定關系模型的存取方法在將概念模型轉換成物理模型之后,我們可以對物理模型進行設計,雙擊物理模型的關系,可以對該關系的名稱、注釋等信息進行查詢。可對該關系的屬性列進行設計,可分別設置其名稱、碼、數據類型以及主碼、是否為空等。在實際設計

8、中最常用的存取方法是索引發(fā),使用索引可以大大減少數據的查詢時間,在建立索引時應遵循:在經常需要搜索的列上建立索引;  在主關鍵字上建立索引;在經常用于連接的列上建立索引,即在外鍵上建立索引;在經常需要根據范圍進行搜索的列上創(chuàng)建索引,因為索引已經排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負面作用。4.3 確定數據庫的存儲結構確定數據庫的存儲結構主要指確定數據的存放位置和存儲結構,包括確定關系、索引、日志、備份等的存儲安排及存儲結構,以及確定系統存儲參數的配置。因為該成績管理系統的數據量小,所以我們只用把數據存儲在使用的電腦硬盤上,不用作更多的安排。(1)創(chuàng)

9、建學生基本信息表:CREATE TABLE Student ( SNO CHAR(5) , SNAME CHAR(10) NOT NULL, SDEPT CHAR(2) NOT NULL, SCLASS CHAR(2) NOT NULL, SAGE NUMBER(2), SSEX CHAR(2),CONSTRAINT SNO_PK PRIMARY KEY(SNO);2,創(chuàng)建表CourseCREATE TABLE Course(CNO CHAR(3),CNAME VARCHAR2(16) ,CTIME NUMBER(3),CONSTRAINT CNO_PK PRIMARY KEY(CNO)3,創(chuàng)

10、建表Teach CREATE TABLE Teach( TNO VARCHAR(6), TNAME VARCHAR(8), TSEX CHAR(2), CNO CHAR(3), TAGE NUMBER(2), TDEPT CHAR(2), CONSTRAINT TT_PK PRIMARY KEY(TNO), CONSTRAINT CNO_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)4,創(chuàng)建表Stu_cnoCREATE TABLE Score(SNO CHAR(5),CNO CHAR(3),CONSTRAINT SC_PK PRIMARY KEY(SNO,

11、CNO),CONSTRAINT SNO_FK FOREIGN KEY(SNO) REFERENCES Student(SNO),CONSTRAINT CNOM_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)5.創(chuàng)建成績表CREATE TABLE Score(SNO CHAR(5),CNO CHAR(3),SCORE NUMBER(5,2),CONSTRAINT SC_PK PRIMARY KEY(SNO,CNO),CONSTRAINT SNO_FK FOREIGN KEY(SNO) REFERENCES Student(SNO),CONSTRAINT CN

12、OM_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)CONSTRAINT Score_FK FOREIGN KEY(SNO,CNO) REFERENCES Stu_cno(SNO,CNO)二、插入數據1,StudentINSERT INTO Student VALUES('96001','馬小燕','CS','01',21,'女');INSERT INTO Student VALUES('96002','黎明','CS','

13、;01',18,'男');INSERT INTO Student VALUES('96003','劉東明','MA','01',18,'男');INSERT INTO Student VALUES('96004','趙志勇','IS','02',20,'男');INSERT INTO Student VALUES('97001','馬蓉','MA','02&

14、#39;,19,'女');INSERT INTO Student VALUES('97002','李成功','CS','01',20,'男');INSERT INTO Student VALUES('97003','黎明','IS','03',19,'女');INSERT INTO Student VALUES('97004','李麗','CS','02',

15、19,'女');INSERT INTO Student VALUES('96005','司馬志明','CS','02',18,'男'); 2,CourseINSERT INTO Course VALUES('001','數學分析',144);INSERT INTO Course VALUES('002','普通物理',144);INSERT INTO Course VALUES('003','微機原理',

16、72);INSERT INTO Course VALUES('004','數據結構',72);INSERT INTO Course VALUES('005','操作系統',64);INSERT INTO Course VALUES('006','數據庫原理',64);INSERT INTO Course VALUES('007','DB_Design',48);INSERT INTO Course VALUES('008','程序設計'

17、,56);3,TeachINSERT INTO Teach VALUES('9401','王成鋼','男','004',35,'CS');INSERT INTO Teach VALUES('9402','李正科','男','003',40,'CS');INSERT INTO Teach VALUES('9403','嚴敏','女','001',33,'MA'

18、);INSERT INTO Teach VALUES('9404','趙高','男','004',28,'IS');INSERT INTO Teach VALUES('9405','李正科','男','003',32,'MA');INSERT INTO Teach VALUES('9406','李玉蘭','女','006',43,'CS');INSERT I

19、NTO Teach VALUES('9407','王成鋼','男','004',49,'IS');INSERT INTO Teach VALUES('9408','馬悅','女','008',35,'CS');INSERT INTO Teach VALUES('9409','王成鋼','男','007',48,'CS');4,ScoreINSERT INTO

20、 Score VALUES('96001','001',77.5);INSERT INTO Score VALUES('96001','003',89);INSERT INTO Score VALUES('96001','004',86);INSERT INTO Score VALUES('96001','005',82);INSERT INTO Score VALUES('96002','001',88);INSERT INTO Sc

21、ore VALUES('96002','003',92.5);INSERT INTO Score VALUES('96002','006',90);INSERT INTO Score VALUES('96005','004',92);INSERT INTO Score VALUES('96005','005',90);INSERT INTO Score VALUES('96005','006',89);INSERT INTO Score

22、 VALUES('96005','007',76);INSERT INTO Score VALUES('96003','001',69);INSERT INTO Score VALUES('97001','001',96);INSERT INTO Score VALUES('97001','008',95);INSERT INTO Score VALUES('96004','001',87);INSERT INTO Score VALU

23、ES('96003','003',91);INSERT INTO Score VALUES('97002','003',91);INSERT INTO Score VALUES('97002','004','');INSERT INTO Score VALUES('97002','006',92);INSERT INTO Score VALUES('97004','005',90);INSERT INTO Score V

24、ALUES('97004','006',85);INSERT INTO Score VALUES('97004','008',75);INSERT INTO Score VALUES('97003','001',59);INSERT INTO Score VALUES('97003','003',58) 五 數據庫的實施與維護5.1 數據庫的實施:此階段主要任務包括創(chuàng)建數據庫,加載初始數據,數據庫試運行,數據庫的安全性和完整性控制數據庫的備份與恢復,數據庫性能的監(jiān)督分

25、析和改僅,數據庫的重組和重構等。首先在數據庫中建立一個學生成績管理系統數據庫,然后新建一個數據源。部分截圖和代碼如下:學生表的增刪改查:增加學生信息更新學生信息刪除學生信息學生表增加、刪除、修改代碼(部分)using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.OracleClient;using System.Drawing;using System.Linq;using System.Text;using System.Wind

26、ows.Forms;namespace MyProgram public partial class Form3 : Form private string ConnectionString = "Data Source=ahut;" + "User ID=Scott;Password=123456" private OracleConnection conn = null; private OracleDataAdapter DataAdapter = null; private DataSet dataset = null; / private Or

27、acleCommand command= null; public Form3() InitializeComponent(); private void Form3_Load(object sender, EventArgs e) conn = new OracleConnection(ConnectionString); showData(); private void showData() string tname = "" try if (conn = null) conn.Open(); DataAdapter = new OracleDataAdapter(&q

28、uot;select * from student", conn); dataset = new DataSet(); DataAdapter.Fill(dataset); dataGridView1.DataSource = dataset; dataGridView1.DataMember = dataset.Tables0.ToString(); tname = dataset.Tables0.ToString(); /先清除所有綁定,然后再重新綁定 textBox1.DataBindings.Clear(); textBox2.DataBindings.Clear(); te

29、xtBox3.DataBindings.Clear(); textBox4.DataBindings.Clear(); textBox5.DataBindings.Clear(); textBox6.DataBindings.Clear(); textBox1.DataBindings.Add("Text", dataset, "table.sno"); textBox2.DataBindings.Add("Text", dataset, "table.sname"); textBox3.DataBindings.

30、Add("Text", dataset, "table.sdept"); textBox4.DataBindings.Add("Text", dataset, "table.sclass"); textBox5.DataBindings.Add("Text", dataset, "table.sage"); textBox6.DataBindings.Add("Text", dataset, "table.ssex"); catch (

31、Exception ex) MessageBox.Show(ex.ToString(); private void button1_Click(object sender, EventArgs e) string strOracle = "insert into student values(" strOracle += "'" + textBox1.Text;/學號 strOracle += "','" + textBox2.Text;/姓名 strOracle += "','&qu

32、ot; + textBox3.Text;/學院 strOracle += "','" + textBox4.Text;/班級 strOracle += "'," + textBox5.Text;/年齡 strOracle += ",'" + textBox6.Text + "')"/性別 OracleCommand command = null; try command = new OracleCommand(); command.Connection = conn; com

33、mand.CommandText = strOracle; conn.Open(); int n = command.ExecuteNonQuery();/執(zhí)行Insert語句 if (n > 0) MessageBox.Show("成功插入數據!"); catch (Exception ex) MessageBox.Show(ex.Message); finally if (conn != null) conn.Close(); command.Dispose(); showData(); private void button2_Click(object send

34、er, EventArgs e) Form7 f7 = new Form7(); f7.Show(); private void button3_Click(object sender, EventArgs e) try OracleCommandBuilder builder = new OracleCommandBuilder(DataAdapter); int n = DataAdapter.Update(dataset, "Table"); MessageBox.Show("成功更新數據,有" + n.ToString() + "行受到

35、更新!"); catch MessageBox.Show("更新不成功!"); private void button4_Click(object sender, EventArgs e) string curNo = "" if (dataGridView1.Rows.Count <= 1) return; int index = dataGridView1.CurrentRow.Index; dataGridView1.Rowsindex.Selected = true; curNo = this.dataGridView1.Rows

36、index.Cells0.Value.ToString(); OracleCommand command = null; string strOracle = "delete from student where sno='" + curNo + "'" try command = new OracleCommand(); command.Connection = conn; command.CommandText = strOracle; conn.Open(); int n = command.ExecuteNonQuery(); c

37、atch (Exception ex) MessageBox.Show(ex.Message); finally if (conn != null) conn.Close(); command.Dispose(); showData(); MessageBox.Show("成功刪除一行!"); 選擇檢索條件(學生表查詢)學生表查詢代碼using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.OracleClient

38、;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace MyProgram public partial class Form7 : Form private string ConnectionString = "Data Source=ahut;" + "User ID=Scott;Password=123456" private OracleConnection conn = null; private OracleD

39、ataAdapter DataAdapter = null; private DataSet dataset = null; private OracleCommand cmd = null; public Form7() InitializeComponent(); private void Form7_Load(object sender, EventArgs e) try conn = new OracleConnection(ConnectionString); conn.Open(); DataAdapter = new OracleDataAdapter(); dataset =

40、new DataSet(); cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * from student" DataAdapter.SelectCommand = cmd; DataAdapter.Fill(dataset, "t1"); comboBox1.Items.Clear(); for (int i = 0; i < dataset.Tables"t1".Columns.Count; i+) comboBox1.I

41、tems.Add(dataset.Tables"t1".Columnsi.ToString(); dataset.Clear(); comboBox2.Items.Add("="); comboBox2.Items.Add("<"); comboBox2.Items.Add(">"); comboBox2.Items.Add("like"); catch (Exception ex) MessageBox.Show(ex.Message); private void button1_

42、Click(object sender, EventArgs e) string tb1 = textBox1.Text; if (comboBox2.Text = "like") tb1 = "%" + textBox1.Text + "%" string strOracle = "select * from student where" strOracle += " " + comboBox1.Text + " " + comboBox2.Text + " &q

43、uot; + "'" + tb1 + "'" try cmd.CommandText = strOracle; DataAdapter.SelectCommand = cmd; dataset.Clear(); DataAdapter.Fill(dataset, "t1"); dataGridView1.DataSource = dataset; dataGridView1.DataMember = "t1" catch MessageBox.Show("請正確設置檢索條件!")

44、; finally if (conn != null) conn.Close(); 教師表信息成績表信息學生成績檢索(單表操作)按照課程檢索最高分、最低分和平均分按照課程檢索選課總數按照個人檢索最高分、最低分和平均分按照班級檢索最高分、最低分和平均分按照班級檢索選課總數成績表查詢代碼#include "stdafx.h"using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.OracleClient;using

45、System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace MyProgram public partial class Form9 : Form private string ConnectionString = "Data Source=ahut;" + "User ID=Scott;Password=123456" private OracleConnection conn = null; private OracleDataAdap

46、ter DataAdapter = null; private DataSet dataset = null; private OracleCommand cmd = null; public Form9() InitializeComponent(); private void button1_Click(object sender, EventArgs e) string tb1 = textBox1.Text; if (comboBox2.Text = "like") tb1 = "%" + textBox1.Text + "%"

47、; string strOracle = "select * from score where" strOracle += " " + comboBox1.Text + " " + comboBox2.Text + " " + "'" + tb1 + "'" try cmd.CommandText = strOracle; DataAdapter.SelectCommand = cmd; dataset.Clear(); DataAdapter.Fill(da

48、taset, "t1"); dataGridView1.DataSource = dataset; dataGridView1.DataMember = "t1" catch MessageBox.Show("請正確設置檢索條件!"); finally if (conn != null) conn.Close(); private void Form9_Load(object sender, EventArgs e) try conn = new OracleConnection(ConnectionString); conn.Ope

49、n(); DataAdapter = new OracleDataAdapter(); dataset = new DataSet(); cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * from score" DataAdapter.SelectCommand = cmd; DataAdapter.Fill(dataset, "t1"); comboBox1.Items.Clear(); for (int i = 0; i < dataset

50、.Tables"t1".Columns.Count; i+) comboBox1.Items.Add(dataset.Tables"t1".Columnsi.ToString(); dataset.Clear(); comboBox2.Items.Add("="); comboBox2.Items.Add("<"); comboBox2.Items.Add(">"); comboBox2.Items.Add("like"); comboBox3.Items.Add("Max(score)"); comboBox3.Items.Add("Min(score)"); comb

溫馨提示

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

評論

0/150

提交評論