数据库系统概论课程设计_第1页
数据库系统概论课程设计_第2页
数据库系统概论课程设计_第3页
数据库系统概论课程设计_第4页
数据库系统概论课程设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库系统概论课程设计实验报告书 安徽工业大学计算机学院 数据库系统概论课程设计实验报告书姓 名夏小宅专 业计算机科学与技术班 级计101学 号冷小七制作指导教师戴小平安徽工业大学计算机学院2012年12月7日第 0 页 共 38 页 摘 要随着信息技术在教务管理上越来越深入而广泛的应用,教务管理系统的实施在技术上已逐步成熟。教务管理系统是一个不断发展并创新的具有潜力的系统,任何一个学校要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的教务管理系统。 本文介绍了在VS2012 C#.NET环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个简单的教务管

2、理信息系统的过程。通过根据本学校的教务管理,模仿了一套行之有效的计算机管理学生、教师和课程的方案。文章介绍了教务管理系统的系统分析部分,包括可行性分析、业务流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统实现部分说明了几个主要模块的算法,本系统界面友好,操作简单,比较实用。关键词:管理员管理、教师管理、学生管理、C#与SQL Sever 应用教务管理系统1.系统概述此系统模拟了学校的教务管理系统,具有管理员、教师和学生的独自登陆界面,并分别为其服务。1.1系统需求及分析经过调查,要求系统具有一下几个基本功能:(1) 由于操作人员的计算机知识普遍较差,要求有良好的人机界

3、面; (2) 由于该系统的使用对象多,要求有较好的权限管理;(3) 原始数据修改简单方便,支持多条件修改;(4) 方便的数据查询,支持多条件查询;(5) 在相应的权限下,删除数据方便简单,数据稳定性好;因为此系统主要面对学校的教务管理人员、教师和学生,所以管理员具有增删改自己信息、教师信息、课程信息、学生信息的基本功能,教师要具有修改个人信息、学生成绩录入、修改和管理、课程的管理等基本功能,学生具有修改个人信息、查看成绩、选课情况等基本功能。这些功能都在VS2010.NET C# 语言和SQL Sever 2008 数据库下可以实现。1.2系统的功能简介管理员:管理员管理、教师管理、学生管理、

4、课程管理、特殊管理;窗体界面如下:教师:挂机、个人信息、个人课程、成绩管理;窗体界面如下: 学生:个人信息、个人课程、个人成绩;窗体界面如下:1.3系统开发目标出于本系统是学校教务管理的一个综合性的系统,本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。2. 系统设计 系统设计包括系统模块设计和数据库设计。 2.1系统模块设计主要功能模块如图所示: 公共模块:密码修改、用户登录如图所示: 2.2数据库设计数据库设计的任务是确定系统所需要的数据库。数据库是表的集合,通常一个系统只需要一个数据库。设计的任务是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结

5、构,包括字段名、字段类型及宽度,需要的索引等。根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表之间的关系,并进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。 数据库在SQL Sever 2008下创建,数据库名为Infor_System_School。2.2.1本项目根据分析确定系统要设置如下表:1. User_admin表、User_Stu表和User_Teach表:属性名含义数据类型限制条件User_ID编号Char(3)PRIMARY KEYUser_name姓名Varchar(20)NOT NULLUser_password密码Varchar(10)N

6、OT NULL2. Admin 表:属性名含义数据类型限制条件Admin_no编号Char(3)PRIMARY KEYAdmin_name姓名varchar(10)NOT NULLAdmin_position职务varchar(10)NOT NULLAdmin_sex性别char(2)NOT NULLAdmin_age年龄intNOT NULLAdmin_tel联系方式char(11)Admin_mail邮箱varchar(20)Admin_addr住址varchar(50)3. Student表属性名含义数据类型限制条件Stu_no学号Char(9)PRIMARY KEYStu_name姓名

7、varchar(10)NOT NULLStu_sex性别Char(2)NOT NULLStu_bir出生日期dateStu_class班级varchar(10)NOT NULLStu_dept专业varchar(20)NOT NULLStu_prof学院varchar(20)NOT NULLStu_tel联系方式Char(11)Stu_addr宿舍地址varchar(6)Stu_mail邮箱varchar(20)Stu_rtime入学时间date4. Teacher表:属性名含义数据类型限制条件Teach_no工号Char(5)PRIMARY KEYTeach_name姓名varchar(10

8、)NOT NULLTeach_photo照片varbinary(MAX)Teach_sex性别Char(2)NOT NULLTeach_bir出生日期dateTeach_prof学院varchar(20)NOT NULLTeach_ttime入校时间dateTeach_tel联系方式char(11)Teach_mail邮箱varchar(20)Teach_addr住址varchar(50)5. Course表:属性名含义数据类型限制条件Cou_no课程号Char(5)PRIMARY KEYCou_name课程名varchar(20)NOT NULLCou_redit学分floatNOT NUL

9、LCou_time学时intNOT NULLCou_type学科类型varchar(4)NOT NULL6. TeachCou表:属性名含义数据类型限制条件Cou_no课程号Char(5)PRIMARY KEYTeach_no教师工号Char(5)PRIMARY KEY7. Score表:属性名含义数据类型限制条件Cou_no课程号Char(5)PRIMARY KEYStu_no学号Char(9)PRIMARY KEYTeach_no教师工号Char(5)PRIMARY KEYgrade成绩float注:各表内容见附录数据表间的逻辑关系为了能使用户更直观地了解数据库中的个表之间的

10、关系,可以通过建立关系图,如下图所示:3.系统的代码实现本系统采用的是C#语言和SQL Sever数据库服务器。3.1 C# 与SQL Sever 的基本介绍与连接3.1.1 SQL Sever 简介SQL Sever 数据提供程序只能用于SQL Sever,在System.Data.SqlCilent命名空间中实现。3.1.2 ADO.NET 介绍ADO(ActiveX Data Objects)是一个用于存取数据源的COM组件,用于实现访问关系或非关系数据库中的数据。ADO为编程语言和统一数据访问方式OLE DB提供了一个中间层。开发人员在访问数据库是只需要关心到数据库的连接,而不需要知道

11、关系数据库是如何实现的。ADO.NET提供了平台互用性和可伸缩的数据访问,支持对数据的松耦合访问,增强了对非连接编程模式的支持。ADO.NET 中主要包含的对象包括SqlConnection 对象、Command 对象、SqlDataReader对象、DataSet 对象和SqlDataAdapter 对象等。此外,ADO.NET还提供了脱机访问模式,及提供了断开连接的数据访问模型,也就是说,首先连接数据库,获取需要的数据,然后断开与数据库的连接,在DataSet或DataTable组件中脱机处理数据,这位应用程序提供了很高的可伸缩性,因为该模型允许多个客户连接数据库,检索数据。在Web应用程

12、序中,这是很重要的,因为可能同时有成千上万个客户请求数据,这样,通过脱机访问模式,就可以在DataSet或DataTable组件中脱机处理数据,减少了对服务器端的压力。3.1.3 C#与SQL Sever 连接在进行SQL Sever数据库连接的时候,首先要使用数据库连接的提供者,因此在程序的开始要使用以下代码: using System.Data; using System.Data.SqlClient; 接下来要连接数据源,这需要使用连接字符串创建一个连接对象。连接字符串中包含希望链接的数据库提供者名称、登录信息以及希望使用的数据库名称。创建连接对象的代码如下: string source

13、 = "Server=SQL Sever 名称;Initial Catalog=数据库名称;Integrated Security=SSPI;" SqlConnection conn= new SqlConnection(source);这样,就有了一个为计算机和数据库配置的连接对象了,但是该对象还未激活,因此必须打开连接。再有了对象之后就可以打开它,建立与数据库的连接 conn.Open();如果Open方法未成功,那么就会抛出SqlException异常。3.2 系统中只要窗体和代码3.2.1 登录窗体功能实现:输入用户名和密码,登录教务管理系统。窗体: 主要代码:la

14、b_error1.Text = "" lab_error2.Text = "" if (comboB_name.Text = "") lab_error1.Text = "用户名不能为空!" else if (textB_password.Text = "") lab_error2.Text = "请输入密码!" else try string source = "Server=姜梦龙-;Initial Catalog=Infor_System_School;Int

15、egrated Security=SSPI;" string select; SqlConnection conn = new SqlConnection(source); conn.Open(); if (radioB_stu.Checked) select = "select User_ID,User_name,User_password from User_Stu Where User_ID='" + comboB_name.Text + "' AND User_password='" + textB_passwo

16、rd.Text + "'" else if (radioB_teach.Checked) select = "select User_ID,User_name,User_password from User_Teach Where User_ID='" + comboB_name.Text + "' AND User_password='" + textB_password.Text + "'" else select = "select User_ID,User_

17、name,User_password from User_admin Where User_ID='" + comboB_name.Text + "' AND User_password='" + textB_password.Text + "'" SqlCommand cmd = new SqlCommand(select, conn); SqlDataReader dr = cmd.ExecuteReader(); if (!dr.HasRows) textB_password.Text = "&q

18、uot; MessageBox.Show("用户名或密码错误!", "错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning); else dr.Read(); string name = dr.GetString(1); if (radioB_stu.Checked) MessageBox.Show("欢迎 " + name + " 同学使用教务管理系统","提示:"); this.Hide(); 学生 F = new 学生(); F.Show

19、(); else if (radioB_teach.Checked) MessageBox.Show("欢迎 " + name + " 教师使用教务管理系统", "提示:"); this.Hide(); 教师 F = new 教师(); F.Show(); else MessageBox.Show("欢迎 " + name + " 管理员使用教务管理系统", "提示:"); this.Hide(); 管理员 F = new 管理员(); F.Show(); dr.Close(

20、); conn.Close(); catch (Exception ex) MessageBox.Show(ex.Message); 3.2.2 管理员窗体框架 功能实现:管理员具有增加、查询、修改、注销管理员、教师、学生、课程,授课课程管理,还有特殊服务:密码服务等基本功能。窗体:主要代码:代码太多,只选其中一部分代码。 private void button_save_导入_Click(object sender, EventArgs e) SqlConnection conn = new SqlConnection(source); char sex; if (radioB_男.Chec

21、ked) sex = '男' else sex = '女' string insert_admin = "insert into Admin values('" + textB_no_导入.Text + "','" + textB_name_导入.Text + "','" + textB_posi_导入.Text + "','"+sex+"','" + textB_age_导入.Text +

22、"','" + textB_tel_导入.Text + "','" + textB_mial_导入.Text + "','" + textB_addr_导入.Text + "')" string insert_user = "insert into User_admin values('" + textB_no_导入.Text + "','" + textB_name_导入.Text + &quo

23、t;','" + 123456 + "')" SqlCommand cmd_admin = new SqlCommand(insert_admin, conn); SqlCommand cmd_user = new SqlCommand(insert_user, conn); try conn.Open(); cmd_admin.ExecuteNonQuery(); cmd_user.ExecuteNonQuery(); catch(Exception ex) MessageBox.Show(ex.Message); MessageBox.

24、Show("录入出现异常!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop); finally conn.Close(); MessageBox.Show("录入成功!", "提示"); private void button_查询_admin_Click(object sender, EventArgs e) ds = new DataSet(); ds.Clear(); string select; SqlConnection conn = new SqlCo

25、nnection(source); conn.Open(); if (textB_查询_admin.Text = "") select = "select distinct Admin_no AS 编号,Admin_name AS 姓名,Admin_position AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin" else if (radioB_编号_admin.Checked) select = &

26、quot;select distinct Admin_no AS 编号,Admin_name AS 姓名,Admin_position AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin Where Admin_no='" + textB_查询_admin.Text + "'" else if (radioB_姓名_admin.Checked) select = "select distin

27、ct Admin_no AS 编号,Admin_name AS 姓名,Admin_position AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin Where Admin_name like '%" + textB_查询_admin.Text + "%'" else if (radioB_职务_admin.Checked) select = "select distinct Admin_

28、no AS 编号,Admin_name AS 姓名,Admin_position AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin Where Admin_position = '" + textB_查询_admin.Text + "'" else select = "select distinct Admin_no AS 编号,Admin_name AS 姓名,Admin_positio

29、n AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin Where Admin_age = '" + textB_查询_admin.Text + "'" da = new SqlDataAdapter(select, conn); SqlCommandBuilder admin = new SqlCommandBuilder(da); da.Fill(ds); this.DataGV_admin.Da

30、taSource = ds.Tables0; conn.Close(); private void button_delete_admin_Click(object sender, EventArgs e) ds = new DataSet(); ds.Clear(); string select, delete_admin,delete_user; SqlConnection conn = new SqlConnection(source); if (textB_delete_admin.Text = "") MessageBox.Show("请输入你要删除管理

31、员的编号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); else select = "select distinct Admin_no AS 编号,Admin_name AS 姓名,Admin_position AS 职务,Admin_sex AS 性别,Admin_age AS 年龄,Admin_tel AS 联系方式,Admin_mail AS 邮箱,Admin_addr AS 住址 from Admin" delete_admin = "delete from A

32、dmin Where Admin_no='" + textB_delete_admin.Text + "'" delete_user = "delete from User_admin Where User_ID='" + textB_delete_admin.Text + "'" SqlCommand cmd_admin = new SqlCommand(delete_admin, conn); SqlCommand cmd_user = new SqlCommand(delete_user

33、, conn); try conn.Open(); cmd_admin.ExecuteNonQuery(); cmd_user.ExecuteNonQuery(); catch (Exception ex) MessageBox.Show(ex.Message); MessageBox.Show("注销出现异常!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop); finally conn.Close(); MessageBox.Show("注销成功!", "提示"

34、;); da = new SqlDataAdapter(select, conn); SqlCommandBuilder admin = new SqlCommandBuilder(da); da.Fill(ds); this.DataGV_admin.DataSource = ds.Tables0; 3.2.3教师窗体框架功能实现:教师具有修改个人信息,学生成绩录入、修改、查看、管理,还有查看课程等基本功能。窗体:主要代码:注:代码太多,只选取其中一部分。 private void button_score_in_确定_Click(object sender, EventArgs e) ds

35、 = new DataSet(); ds.Clear(); string select; SqlConnection conn = new SqlConnection(source); conn.Open(); if (textB_score_in.Text = "") select = "select C.Cou_no AS 课程号,Cou_name AS 课程名,S.Stu_no AS 学号,Stu_name AS 姓名,grade AS 成绩 from Score,Course C,Student S Where Teach_no='" +

36、 textB_logn_name.Text + "' AND S.Stu_no=Score.Stu_no AND Score.Cou_no=C.Cou_no ORDER BY Score.Cou_no ASC,S.Stu_no ASC" else if (radioB_score_in_cno.Checked) select = "select C.Cou_no AS 课程号,Cou_name AS 课程名,S.Stu_no AS 学号,Stu_name AS 姓名,grade AS 成绩 from Score,Course C,Student S Whe

37、re Teach_no='" + textB_logn_name.Text + "' AND Score.Cou_no='" + textB_score_in.Text + "' AND S.Stu_no=Score.Stu_no AND Score.Cou_no=C.Cou_no" else if (radioB_score_in_cnam.Checked) select = "select C.Cou_no AS 课程号,Cou_name AS 课程名,S.Stu_no AS 学号,Stu_name

38、 AS 姓名,grade AS 成绩 from Score,Course C,Student S Where Teach_no='" + textB_logn_name.Text + "' AND C.Cou_name like '%" + textB_score_in.Text + "%' AND S.Stu_no=Score.Stu_no AND Score.Cou_no=C.Cou_no ORDER BY C.Cou_no ASC" else if (radioB_score_in_dept.Checked

39、) select = "select C.Cou_no AS 课程号,Cou_name AS 课程名,S.Stu_no AS 学号,Stu_name AS 姓名,grade AS 成绩 from Score,Course C,Student S Where Teach_no='" + textB_logn_name.Text + "' AND S.Stu_dept like '%" + textB_score_in.Text + "%' AND S.Stu_no=Score.Stu_no AND Score.Co

40、u_no=C.Cou_no ORDER BY C.Cou_no ASC" else select = "select C.Cou_no AS 课程号,Cou_name AS 课程名,S.Stu_no AS 学号,Stu_name AS 姓名,grade AS 成绩 from Score,Course C,Student S Where Teach_no='" + textB_logn_name.Text + "' AND C.Cou_type like '%" + textB_score_in.Text + "

41、%' AND S.Stu_no=Score.Stu_no AND Score.Cou_no=C.Cou_no ORDER BY C.Cou_no ASC" da = new SqlDataAdapter(select, conn); da.Fill(ds); this.DataGV_score_in_teach.DataSource = ds.Tables0; conn.Close(); private void button_score_gl_look_Click(object sender, EventArgs e) double max, min, avg; if (t

42、extBox1.Text = "") MessageBox.Show("请输入课程号!", "提示"); else string select = "select MAX(grade),MIN(grade),AVG(grade) from Score Where Teach_no='" + textB_logn_name.Text + "' AND Cou_no='" + textBox1.Text + "'" ; SqlConnection

43、conn = new SqlConnection(source); conn.Open(); try SqlCommand cmd = new SqlCommand(select, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); max = dr.GetDouble(0); min = dr.GetDouble(1); avg = dr.GetDouble(2); dr.Close(); lab_score_avg.Text = avg.ToString(); lab_score_max.Text = max.ToString

44、(); lab_score_min.Text = min.ToString(); catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); 3.2.4 学生窗体框架 实现功能:学生具有修改个人信息、查看选课情况、查看成绩、查看最高分、最低分、平均分、学分绩的基本功能。窗体:主要代码:注:学生中代码与教师代码大多数都是相近的,所以只选取部分不同的代码。 private void button_score_cjlook_stu_Click(object sender, EventArgs e) SqlConnec

45、tion conn = new SqlConnection(source); conn.Open(); string select = "select SUM(Cou_redit),SUM(grade),AVG(grade) from Course,Score Where Stu_no='" + textB_name_logn.Text + "' AND Course.Cou_no=Score.Cou_no" SqlCommand cmd = new SqlCommand(select, conn); SqlDataReader dr = cmd.ExecuteReader(); try dr.Read(); double sum_xf =dr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论