大學生選課管理系統實驗報告(共26頁)_第1頁
大學生選課管理系統實驗報告(共26頁)_第2頁
大學生選課管理系統實驗報告(共26頁)_第3頁
大學生選課管理系統實驗報告(共26頁)_第4頁
大學生選課管理系統實驗報告(共26頁)_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、數據庫技專題(zhunt)訓練I(2015年春)序號:數據庫專題(zhunt)訓練-數據庫應用(yngyng)系統開發實驗報告系別:計算機科學與技術班級:計12-1班姓名:劉杰學號:12101020128成績:評語:指導教師簽字: 日期:大學生選課管理系統需求(xqi)分析1.需求(xqi)說明教務處的管理人員錄入全校的課程基本(jbn)信息和本學期的課程授課教師、地點、時間;在學生入學的時候,學院的管理人員錄入學生基本信息;學生每學期自己上網登錄系統選課,選課成功后信息存入數據庫中,學生自己可以查詢選課的情況;學生選課不成功的情況有:所選課程的先修課還沒有記錄,系統提示“缺先修課,選課失敗”

2、;本學期所選課程的上課時間有沖突,系統提示“上課時間有沖突,選課失敗”;學生一學期所選課程的學分最多不能超18學分學生可以注銷所選課程。學院管理員可以查詢學生前幾學期的選課信息、可以查詢課程基本信息、學生基本信息;當學生退學時,由教務處的管理人注銷學生基本信息;如果開課之后,學生要求退課,則由教務處的工作人員為學生注銷所選課程;允許學生休學,教務處為休學的退學做學籍凍結處理;復學后為其辦理解凍處理;每學期教務處為學生辦理學期注冊手續;沒有辦理學期注冊的學生不能選課;學期末,學院工作人員負責錄入學生的成績。2.數據流程圖a.頂層數據流圖b.分解(fnji)數據流圖3.數據(shj)字典角色(ju

3、 s)信息=角色編號+角色名稱角色編號=“1”.“4”角色(ju s)名稱=2(漢字(Hnz)6用戶(yngh)信息=用戶編號+角色編號+用姓名+用戶密碼用戶編號=2(字母或數字)18角色編號=“1”.“4”用戶姓名=2(漢字)6用戶密碼=2(字母或數字)18學生基本信息=學號 +姓名+性別+民族+出生年月+學院+系+專業+入學時間+政治面貌+住址+備注學號=(數字)11姓名=2(漢字)6性別=“男”/“女”民族=2(漢字)6出生年月=年+月學院=2(字母或數字)11系=2(字母或數字)11專業=2(字母或數字)11入學時間=年+月+日政治面貌=“黨員”/“預備黨員”/“團員”/“群眾”住址=

4、2(漢字)18備注=0(漢字或字母)100教師基本信息=工號 +姓名+密碼+性別+年齡+民族+學院+住址+備注工號=2(字母或數字)11姓名=2(漢字)6密碼=2(字母或數字)18性別=“男”/“女”年齡=“20“”60“民族=2(漢字)6學院=2(漢字)12住址=2(漢字)18備注=0(漢字或字母)100課程信息=課程號+課程名稱+先修課+學分+學時+課程類別+開課學院課程號=2(字母或數字)11課程名稱=2(漢字)15先修課=2(字母或數字)11學分=“1“”16“學時=“16“”128“課程類別=“專業選修“/”專業必修“/”公共選修“/”公共必修“開課學院=2(字母或數字)11課程任務

5、=任務編號+課程編號+課程名稱+任課教師+課堂容量+選課人數+上課時間段+上課日期+上課地點+合班標志+開課季別+開始周+結束周+課程介紹任務編號=2(字母或數字)11課程編號=2(字母或數字)11課程名稱=2(漢字(Hnz))15任課教師=2(字母(zm)或數字)11課堂(ktng)容量=“0“.”240“選課人數=“0“.”9999“上課時間段=“1-2節“”11-12節“上課日期=“周一“”周日“上課地點=2(漢字)15合班標志=2(漢字)15開課季別=“春季學期“/”秋季學期“開始周=“1“”20“結束周=“8“”28“課程介紹=0(漢字)100學生選課信息表=學號+課程號 +成績+選

6、課年份+選課季別+中簽標志學號=2(字母或數字)11課程號=2(字母或數字)11成績=“0“”100“選課年份=年選課季別=“春季學期“/”秋季學期“中簽標志=“0“/“1“留言=留言編號+發送者+接收者+日期+留言內容留言編號=“0“.”99999999“發送者=2(字母或數字)11接收者=2(字母或數字)11日期=年+月+日留言內容=2(字母或漢字)200文件信息=文件編號+課程編號+文件名稱+文件路徑文件編號=“0“”99999“課程編號=2(字母或數字)11文件名稱=2(字母,數字或漢字)20文件路徑=2(字母或數字)100學院信息=學院編號+學院名稱學院編號=2(字母或數字)11學院

7、名稱=5(漢字)20專業信息=專業編號+專業名稱+所屬學院專業編號=2(字母或數字)11專業名稱=5(漢字)20所屬學院=2(字母或數字)11班級信息=班級編號+班級名稱+所屬專業班級編號=2(字母或數字)11班級名稱=5(漢字)20所屬專業=2(字母或數字)114.系統(xtng)E-R圖系統(xtng)設計(shj)1.系統模塊結構圖a.頂層模塊結構圖b.詳細模塊結構圖2.系統(xtng)用例圖a.學生(xu sheng)用例圖b.教師(jiosh)用例圖c.管理員用例圖3.系統數據庫詳細(xingx)設計a.表字(bioz)段說明表名稱:角色表 簡稱:t_role名稱簡稱類型長度是否可為

8、空備注角色編號roleidint4否主鍵,自增角色名稱rolenamenvarchar(50)50否表名稱:用戶表 簡稱:user_inf名稱簡稱類型長度是否可為空備注用戶編號useridnvarchar(50)50否主鍵用戶類型roleidint4否外鍵用戶密碼pwdnvarchar(50)50否表名稱:教師信息表 簡稱:teacher_inf名稱簡稱類型長度是否可為空備注教師編號tnonvarchar(50)50否主鍵教師姓名tnamenvarchar(50)50否密碼tpwdnvarchar(50)50否性別tsexnvarchar(50)50否年齡tageint4否民族tracenva

9、rchar(20)20否所屬學院sdeptnoNvarchar20)20否外鍵家庭住址taddressnvarchar(60)60是其它anothernvarchar(100)100是表名稱: 學生信息表 簡稱:stu_inf名稱簡稱類型長度是否可為空備注學號Snonvarchar(50)50否主鍵姓名Snamenvarchar(50)50否密碼Spwdnvarchar(50)50否性別Ssexnvarchar(20)20否民族Sracenvarchar(20)20否所屬學院Sdeptnonvarchar(20)20否班級ClassNvarchar(50)50否專業Smajornvarchar

10、(50)50否入學時間Entertimenvarchar(50)50否畢業時間Graduatetimenvarchar(50)50否政治面貌Poli_statusnvarchar(20)20否住址saddressnvarchar(60)60是其它anothernvarchar(100)100是表名稱:課程基本信息表 簡稱:course_inf名稱簡稱類型長度是否可為空備注課程號Cnonvarchar(50)50否主鍵課程名稱Cnamenvarchar(50)50否先修課Pro_cnonvarchar(50)50否學分Creditint4否學時Ctimeint4否課程類別Course_kindn

11、varchar(50)50否開課學院sdeptnvarchar(50)50否表名稱:課程任務表 簡稱:course_task名稱簡稱類型長度是否可為空備注任務編號tasknonvarchar(50)50否主鍵課程編號cnonvarchar(50)50否外鍵課程名稱cnamenvarchar(50)50否任課教師cteachernvarchar(50)50否課堂容量capacityint4否選課人數Sel_personint4否上課時間段classtimenvarchar(50)50否上課日期weekdaysnvarchar(30)30否上課地點locationnvarchar(50)50否合班

12、標志classflagnvarchar(50)50否開課季別seasonnvarchar(50)50否開始周startweekint4否結束周endweekint4是課程介紹introductionnvarchar(200)200是表名稱:選課記錄表 簡稱:sel_course_record名稱簡稱類型長度是否可為空備注學號snonvarchar(50)50否主鍵課程號cnonvarchar(50)50否成績gradeint4是選課年份yearint4否中簽標志flagint4否選課季別seasonnvarchar(50)50否表名稱:留言記錄表 簡稱:msg名稱簡稱類型長度是否可為空備注留言

13、編號msgnoint4否主鍵,自增發送方sendernvarchar(50)50否接收方receivernvarchar(50)50否日期datenvarchar(50)50否留言內容msgnvarchar(200)200否表名稱:文件信息表 簡稱:file_up名稱簡稱類型長度是否可為空備注文件編號fileidint 4否主鍵,自增課程編號cnonvarchar(50)50否文件名稱file_namenvarchar(50)50否文件路徑file_pathnvarchar(100)100否表名稱:學院信息表 簡稱:sdept_inf名稱簡稱類型長度是否允許為空備注學院編號SdeptnoNva

14、rchar(20)20否主鍵學院名稱SdeptnameNvarchar(50)50否表名稱:專業信息表 簡稱:major_inf名稱簡稱類型長度是否允許為空備注專業編號majornoNvarchar(20)20否主鍵專業名稱majornameNvarchar(50)50否所屬學院sdeptnoNvarchar(20)20否外鍵表名稱:班級信息表 簡稱:class_inf名稱簡稱類型長度是否允許為空備注班級編號ClassnoNvarchar(20)20否主鍵班級名稱classnameNvarchar(50)50否所屬專業majornoNvarchar(20)20否外鍵b.表創建(chungjin

15、)create table t_role( roleid int identity(1,1) not null primary key, rolename nvarchar(50) not null unique ) create table sdept_inf (sdeptno nvarchar(20) not null primary key,sdeptname nvarchar(50) not null ) create table major_inf( majorno nvarchar(20) not null primary key, majorname nvarchar(50) n

16、ot null, sdeptno nvarchar(20) not null foreign key(sdeptno) references sdept_inf(sdeptno) ) create table user_inf ( userid nvarchar(50) not null primary key, roleid int not null, pwd nvarchar(50) not null, foreign key(roleid) references t_role(roleid) ) create table teacher_inf ( tno nvarchar(50) no

17、t null primary key, tname nvarchar(50) not null, tpwd nvarchar(50) not null, tsex nvarchar(20) not null, tage int not null, trace nvarchar(20) not null, sdeptno nvarchar(20) not null, taddress nvarchar(60), another nvarchar(100) foreign key(sdeptno) references sdept_inf(sdeptno) ) /*學生(xu sheng)基本信息

18、*/ create table stu_inf( sno nvarchar(50) not null primary key, sname nvarchar(50) not null, spwd nvarchar(50) not null, ssex nvarchar(20) not null, sage int not null, srace nvarchar(20) not null, sdeptno nvarchar(20) not null, class nvarchar(50) not null, smajor nvarchar(50) not null, entrancetime

19、nvarchar(50) not null, graduattime nvarchar(50) not null, politicalstatus nvarchar(20) not null, saddress nvarchar(60), another nvarchar(100) foreign key(sdeptno) references sdept_inf(sdeptno) ) /*課程基本(jbn)信息*/ create table course_inf(cno nvarchar(50) not null primary key,pro_cno nvarchar(50) ,cname

20、 nvarchar(50) not null,credit int not null,ctime int not null,course_kind nvarchar(50) not null,sdept nvarchar(50) not null, ) /*學院(xuyun)開課信息*/ create table course_task ( taskno nvarchar(50) not null primary key, cno nvarchar(50) not null, cname nvarchar(50) not null, cteachar nvarchar(50)not null,

21、 capacity int not null, classtime nvarchar(50)not null, weekdays nvarchar(30) not null, location nvarchar(50)not null, classflag nvarchar(50) not null, season nvarchar(50) not null, startweek int not null, endweek int null, introduction nvarchar(200), ) /*選課記錄表*/create table sel_course_record(sno nv

22、archar(50)not null,cno nvarchar(50)not null,grade int ,year int not null,flag int not null,/*中簽(zhng qin)標志*/season nvarchar(50) not null,primary key(sno,cno)系統(xtng)實現系統主要(zhyo)功能界面設計登陸界面學生操作界面教師(jiosh)操作界面學院(xuyun)管理員操作界面系統管理員操作界面系統主要功能界面(jimin)代碼實現登陸(dng l)界面namespace WindowsFormsApplication2 pub

23、lic partial class login : Form public login() InitializeComponent(); private void button1_Click(object sender, EventArgs e) /登陸(dng l)按鈕 string userid = textBox1.Text;/用戶名 string pwd = textBox2.Text; /密碼 string rolename = comboBox1.Text; string conn_string = Data Source=MR_LIULIUJIE;Initial Catalog=

24、course_sel;Integrated Security=True; User ID=sa; pwd=liujie260593; SqlConnection con = new SqlConnection(); con.ConnectionString = conn_string; try con.Open(); /獲取角色(ju s)編號 / Class_role role = new Class_role(); SqlCommand cm = new SqlCommand(select roleid from t_role where rolename=rolename , con);

25、 cm.Parameters.Add(new SqlParameter(rolename, rolename); Form_main.roleid= (int)cm.ExecuteScalar(); con.Close(); con.Open(); string str_sql = select count(userid) from user_inf where userid=userid and pwd=pwd and roleid=(select roleid from t_role where rolename=rolename);/執行(zhxng)的命令Sql SqlCommand

26、cmd = new SqlCommand(str_sql, con); cmd.Parameters.Add(new SqlParameter(userid, userid); cmd.Parameters.Add(new SqlParameter(pwd, pwd); cmd.Parameters.Add(new SqlParameter(rolename, rolename); int flag = (int)cmd.ExecuteScalar(); if (flag 0) Form_main.userid = textBox1.Text; Form_main f = new Form_m

27、ain(); f.Show(); this.Hide(); else MessageBox.Show(用戶名或密碼輸入(shr)不正確!); catch (Exception ex) MessageBox.Show(ex.ToString(); finally con.Close(); private void login_Load(object sender, EventArgs e) string conn_string = Data Source=MR_LIULIUJIE;Initial Catalog=course_sel;Integrated Security=True; User

28、ID=sa; pwd=liujie260593; SqlConnection con = new SqlConnection(); con.ConnectionString = conn_string; SqlCommand cmd = new SqlCommand(); cmd.CommandText = select rolename from t_role; cmd.Connection = con; SqlDataReader dr = null; try con.Open(); dr = cmd.ExecuteReader(); int count = 0; while (dr.Re

29、ad() boBox1.Items.Add(new ListItem(drrolename.ToString(), count); count+; catch (Exception ex) MessageBox.Show(數據(shj)讀取出錯! + ex.ToString(); finally con.Close(); 選課操作(cozu) private void button1_Click(object sender, EventArgs e) int flag = 0; /int gradecount = 0; string sno = Form_main.userid; string

30、 cno = Student_Select_Course.courseno; string cname = boBox3.Text; string majorname = this.textBox1.Text; string weekdays = ; string classtime = ; string conn_string = Data Source=MR_LIULIUJIE;Initial Catalog=course_sel; User ID=sa; pwd=liujie260593; SqlConnection con1 = new SqlConnection(); con1.Co

31、nnectionString = conn_string; SqlConnection con2 = new SqlConnection(); con2.ConnectionString = conn_string; SqlDataReader dr1 = null; /沖突(chngt)判斷 string sql_str1 = select * from course_task where cno= + cno + ; try con1.Open(); con2.Open(); SqlCommand cmd1 = new SqlCommand(sql_str1, con1); dr1 = c

32、md1.ExecuteReader(); while (dr1.Read() weekdays = dr1weekdays.ToString(); classtime = dr1classtime.ToString(); string sql_str2 = select count(*) from sel_course_record,course_task where weekdays= + weekdays + and classtime= + classtime + and sno= + sno + and course_o=sel_course_o; SqlCommand cmd2 =

33、new SqlCommand(sql_str2, con2); flag = (int)cmd2.ExecuteScalar(); if (flag 0) MessageBox.Show(存在(cnzi)選課沖突,請重新選課!); break; con1.Close(); con2.Close(); if (flag = 0)/學分限制(xinzh) int year = System.DateTime.Today.Year; int month=System.DateTime.Today.Month; string season_now = 秋季學期; if (2=month & month

34、 8) season_now = 春季學期; SqlConnection con3 = new SqlConnection(); con3.ConnectionString = conn_string; con3.Open(); SqlCommand cmd3 = new SqlCommand(select sum(credit) sum from sel_course_record,course_inf where year=+year+ and season=+season_now+ and course_o=sel_course_o and sno=+Form_main.userid+,

35、 con3); dr1=cmd3.ExecuteReader(); int coun=0; string strc=; while (dr1.Read() strc= dr1sum.ToString(); if (strc = ) coun = 0; else coun = Convert.ToInt32(strc); if (coun=40) /先修課判斷(pndun) con3.Close(); int count = 0; con3.Open(); cmd3.CommandText = select count(*) from sel_course_record where sno=+s

36、no+ and cno=+Student_Select_C_cno+and not(year=+year+ and season=+season_now+); count = (int)cmd3.ExecuteScalar(); con3.Close(); if (Student_Select_C_cno.Equals()=false & count=0) MessageBox.Show(你還未選修該課程(kchng)的先修課,不能申請該課程!); else /將選課信息(xnx)加入選課記錄表,同時添加課表 con3.Open(); cmd3.CommandText = insert int

37、o sel_course_record values( + sno + , + cno + , + + , + year + , + 0 + , + season_now + ); cmd3.ExecuteNonQuery(); con3.Close(); /更新課程任務表 sel_person += 1; con3.Open(); cmd3.CommandText = update course_task set sel_person= + sel_person + where cno= + cno + ; cmd3.ExecuteNonQuery(); con3.Close(); Mess

38、ageBox.Show(申請(shnqng)成功!); else MessageBox.Show(你所選課程學分總數(zngsh)已經超過40分,不能繼續(jx)選課!); catch (Exception ex) MessageBox.Show(數據讀取失敗! + ex.Message); 抽簽操作 private void button1_Click(object sender, EventArgs e) this.listView1.Items.Clear(); string cname=; int count = 0; int sel_count = 0; string conn_st

39、ring = Data Source=MR_LIULIUJIE;Initial Catalog=course_sel; User ID=sa; pwd=liujie260593; SqlConnection con = new SqlConnection(); con.ConnectionString = conn_string; SqlDataReader dr = null; SqlCommand cmd = new SqlCommand(); cmd.CommandText = select cname,sel_person,capacity from course_task where

40、 cno=+boBox1.Text+; cmd.Connection = con; try con.Open(); dr = cmd.ExecuteReader(); while (dr.Read() cname = dr0.ToString(); sel_count = Convert.ToInt16(dr1.ToString(); count = Convert.ToInt16(dr2.ToString(); con.Close(); con.Open(); cmd.CommandText = select sno,year,season from sel_course_record wh

41、ere cno= + boBox1.Text + ; dr = cmd.ExecuteReader(); while (dr.Read() this.listView1.Items.Add(new ListViewItem(new string (this.listView1.Items.Count + 1).ToString(), dr0.ToString(), cname, dr1.ToString(), dr2.ToString(), ); con.Close(); if (sel_count = count) for (int i = 0; i sel_count; i+) this.

42、listView1.Itemsi.SubItems5.Text = 中簽(zhng qin); else int value; int flag = 0; Random r = new Random(); int num = 0; while (num count) value = r.Next(0, sel_count); for (int j = 0; j this.listView1.Items.Count; j+) if (Convert.ToInt16(this.listView1.Itemsj.SubItems0.Text) - 1 = value & this.listView1

43、.Itemsj.SubItems5.Text.Equals(中簽(zhng qin) flag = 1; break; if (flag = 0) this.listView1.Itemsvalue.SubItems5.Text = 中簽(zhng qin); num+; flag = 0; for (int i = 0; i this.listView1.Items.Count; i+) if (this.listView1.Itemsi.SubItems5.Text.Equals(中簽(zhng qin) con.Open(); cmd.CommandText = update sel_c

44、ourse_record set flag= + 1 + where cno= + boBox1.Text + and sno= + this.listView1.Itemsi.SubItems1.Text + ; cmd.ExecuteNonQuery(); con.Close(); this.listView1.Items.Clear(); cmd.CommandText = select sno ,year,season from sel_course_record where cno= + boBox1.Text + and flag= + 1 + ; con.Open(); dr =

45、 cmd.ExecuteReader(); while (dr.Read() this.listView1.Items.Add(new ListViewItem(new string (this.listView1.Items.Count + 1).ToString(), dr0.ToString(), cname, dr1.ToString(), dr2.ToString(), 中簽(zhng qin) ); con.Close(); catch(Exception ex) MessageBox.Show(ex.ToString(); finally con.Close(); boBox1.

46、Items.Remove(boBox1.SelectedItem); 教師(jiosh)上傳課件 private void button3_Click(object sender, EventArgs e) /string a = DateTime.Now.ToString(yyyyMMddHHmmss); string FileName = openFileDialog1.SafeFileName; string filename = openFileDialog1.FileName; string desName = Application.StartupPath + upload; string b = desName + FileName; File.Copy(filename, b, true); string conn_string = Data Source=MR_LIULIUJIE;Initial Catalog=course_sel;

溫馨提示

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

評論

0/150

提交評論