收藏 分享(赏)

高级数据库技术--学生考试管理系统.doc

上传人:dreamzhangning 文档编号:2746421 上传时间:2018-09-26 格式:DOC 页数:30 大小:627.50KB
下载 相关 举报
高级数据库技术--学生考试管理系统.doc_第1页
第1页 / 共30页
高级数据库技术--学生考试管理系统.doc_第2页
第2页 / 共30页
高级数据库技术--学生考试管理系统.doc_第3页
第3页 / 共30页
高级数据库技术--学生考试管理系统.doc_第4页
第4页 / 共30页
高级数据库技术--学生考试管理系统.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、目 录1.设计目的和任务 12.开发环境 22.1 硬件环境 .22.2 软件环境 .23.设计题目 33.1 题目名称 .33.2 题目详细描述 .33.3 功能要求 .34.相关技术及知识点 65.数 据 库 设 计 95.1 系统总体结构 .95.2 管 理 系 统 表 关 系 95.3 表 详 细 信 息 106.设计与实现 136.1 登陆界面 .136.2 新用户注册 .146.3 教师界面 .14高级数据库技术(ADO.NETXML ) 课程设计报告-1-1.设计目的和任务本 次 期 末 大 作 业 采 用 课 程 设 计 的 形 式 进 行 , 作 为 高 级 数 据 库 技

2、术 ( ADO.NETDatabase=MyDatabase.mdf;Server=localhost;“;2.在连接字符串中指定服务器名、用户 id、用户口令、数据库名等信息。 例如:string connectionString = “server=localhost; uid=sa; pwd=123; database=MyDatabase.mdf“;然后通过连接字符串直接创建 SqlConnection 对象,如 SqlConnection conn = new SqlConnection(connectionString);4.2 SqlCommand 对象在 ADO.NET 中,有

3、两种操作数据库的方式:1.无连接的方式;2.保持连接的方式。不论哪种都可以通过 SqlCommand 对象提供的方法传递对数据库操作的命令,并返回命令执行结果。在保持连接的方式下操作数据库的一般步骤为:1.创建 SqlConnection 的实例;2.创建 SqlCommand 的实例;3.打开连接;4.执行命令;5.关闭连接。SqlCommand 对象提供了多种完成对数据库操作的方法。常用有:1.ExecuteNonQuery该方法执行 SQL 语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。2.ExecuteReaderExecuteReader 方法提供了只向前的、顺序的快

4、速读取数据库中数据的方法。3.ExecuteScaler()该方法用于执行 SELECT 查询,得到的返回结果为一个值的情况,比如使用 count 函数求表中记录个数或者使用 sum 函数求和等。高级数据库技术(ADO.NETXML ) 课程设计报告-7-4.3 SqlDataAdapter 对象SqlDataAdapter 对象通过无连接的方式完成数据库和本地 DataSet 之间的交互。使用这种方式操作数据库的一般步骤为:1.创建 SqlConnection 的实例;2.创建 SqlDataAdapter 的实例,需要的话,根据 select 语句生成其他 SQL 语句;3.创建 Data

5、Set 的实例;4.使用 Fill 方法将数据库中的表填充到 DataSet 的表中;5.利用 DataGridView 或者其他控件对象编辑或显示数据;6.需要的话,使用 Update 方法更新数据库。SqlDataAdapter 对象通过 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性为后台数据库提供对应的操作命令,并传递需要的参数。一般情况下,只需要提供 SELECT 语句和连接字符串创建 SqlDataAdapter 对象,然后利用 SqlCommandBuilder 对象生成InsertCommand、Upda

6、teCommand 和 DeleteCommand 属性。4.4 DataTable 对象ADO.NET 可以在与数据库断开连接的方式下通过 DataSet 或 DataTable 对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。DataTable 对象表示保存在本机内存中的表,它提供了对表中行列数据对象的各种操作。可以直接将数据从数据库填充到 DataTable 对象中,也可以将 DataTable 对象添加到现有的 DataSet 对象中。在断开连接的方式下,DataSet对象提供了和关系数据库一样的关系数据模型,代码中可以直接访问 DataSet 对象中的Data

7、Table 对象,也可以添加、删除 DataTable 对象。1. 创建 DataTable 对象可以通过以下两种方式创建 DataTable 对象:1) 通过 DataTable 类的构造函数创建 DataTable 对象,例如:DataTable table = new DataTable();2) 通过 DataSet 的 Tables 对象的 Add 方法创建 DataTable 对象,例如:DataSet dataset = new DataSet();DataTable table = dataset.Tables.Add(“MyTableName“);2. 在 DataTable

8、 对象中添加列在 DataTable 对象中添加列的最常用的方法是通过 DataTable 对象的 Column 属性中的 Add 方法。添加后的每一列都是一个 DataColumn 对象。3. 设置 DataTable 对象的主键关系数据库中的表一般都有一个主键,用来惟一标识表中的每一行记录。通过 DataTable 对象的PrimaryKey 属性可以设置 Datatable 的主键。主键可以是一个或者多个 DataColumn 对象组成的数组。例如:高级数据库技术(ADO.NETXML ) 课程设计报告-8-DataColumn key = new DataColumn1;/dt 是一个

9、 DataTable 对象key0 = dt.Columns0;dt.PrimaryKey = key;4. 在 DataTable 对象中创建行DataTable 对象的每一行都是一个 DataRow 对象,所以创建行时可以先利用 DataTable 对象的NewRow 方法创建一个 DataRow 对象,并设置新行中各列的数据,然后利用 Add 方法将 DataRow 对象添加到表中5. 将 SQL Server 数据库中的表填充到 DataTable 中除了可以直接创建 DataTable 对象的行列信息外,也可以通过 DateAdapter 对象的 Fill 方法将SQL Server

10、 数据库中的表填充到 DataTable 对象中。4.5 DataSet 对象1. 创建 DataSet 对象使用创建的 DataSet 对象可以完成各种数据操作,利用向导生成的数据库数据源是一个强类型的DataSet 以及一对或多对强类型的 DataTable 和 TableAdapter 的组合。类型化的 DataSet 是一个生成的类,是从.NET Framework 的一般 DataSet 类衍生来的,但提供了已定义的架构以及特定于该架构的属性和方法。同时,对于 DataSet 中的每个表,还生成了特定于该 DataSet 的附加衍生类,而且每个类都为相关的表提供了特定的架构、属性和方

11、法。当然,也可以直接创建一般的 DataSet 对象,例如:DataSet myDataset = new DataSet();2. 填充 DataSet 对象创建 DataSet 后,就可以使用 SqlDataAdapter 对象把数据导入到 DataSet 对象中,比如通过Fill 方法将数据填充到 DataSet 中的某个表中。4.6 DataViewDataView 就时数据视图,为数据库结构提供了外模式的实现。同时 DataView 也可以为窗体控件和 Web 控件提供数据绑定功能,在每一个 DataTable 中内建了一个 DataView 为:DataTable.DefaultV

12、iew();创建 DataViewDataView sortedView=new DataView(dataTable);对DataView 进行排序 dataTable.DefaultView.sort=“lastName“;dataTable.DefaultView.sort=“lastName,FirstName DESC“;4.7 更新 DB在 DataSet 中,每一个 DataTable 对应着一个 DataAdapter,DataAdapter.Update()时,DataTable 自动更新。4.8 事务tx=conn.BeginTransaction(IsolationLev

13、el.Serializable);invDA.SelectCommand.Transaction=tx;高级数据库技术(ADO.NETXML ) 课程设计报告-9-5.数 据 库 设 计5.1 系统总体结构系统总体结构设计采用了 MVC 的思想。根据面向对象分析阶段中类划分结果,规划界面类、控制类、实体类及调用关系。在面向对象分析阶段,我们把类大体上分成了界面和实体两类。但是,为了提高代码的易维护性、易读性,增加类内部的纯度、类之间调用的灵活性,我们把控制代码另封装为一个类,即控制类,使系统中类之间的调用关系如下图所示:5.2 管 理 系 统 表 关 系界面 实体类 数据库控制类 控制类jdb

14、cjdbc高级数据库技术(ADO.NETXML ) 课程设计报告-10-5.3 表 详 细 信 息5.3.1 管 理 员 表 Admin 详 细 信 息图 5.3.1 管 理 员 表 Admin 详 细 信 息5.3.2 学 生 表 Student 详 细 信 息图 5.3.2 学 生 表 Student 详 细 信 息5.3.3 年 级 表 Grade 详 细 信 息5.3.3 年 级 表 Grade 详 细 信 息5.3.4 班 级 表 Class 详 细 信 息高级数据库技术(ADO.NETXML ) 课程设计报告-11-5.3.4 班 级 表 Class 详 细 信 息5.3.5 状

15、态 表 UserState 详 细 信 息5.3.5 状 态 表 UserState 详 细 信 息5.4 程 序 实 现 :private void tsmiAddStuUser_Click(object sender, EventArgs e)AddStudentForm addStudentForm = new AddStudentForm();addStudentForm.MdiParent = this;addStudentForm.Show();private void tsmiaddNewTeacher_Click(object sender, EventArgs e)AddTe

16、acherForm addTeacherForm = new AddTeacherForm();addTeacherForm.MdiParent = this;addTeacherForm.Show();高级数据库技术(ADO.NETXML ) 课程设计报告-12-using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Text;using Sy

17、stem.Windows.Forms;namespace MySchoolpublic partial class AddStudentForm : Formpublic AddStudentForm()InitializeComponent();/ 高级数据库技术(ADO.NETXML ) 课程设计报告-13-/ 确认增加用户/ / / private void btnAddStuUserOK_Click(object sender, EventArgs e)if (IsValidate()/输入验证成功Student student = new Student();/新建学员对象stude

18、ntstudent.LoginId = txtStuName.Text.Trim();/以下依次给student属性set值student.LoginPwd = txtStuPwd.Text.Trim();student.UserStateId = rdoStatusIn.Checked ? (int)rdoStatusIn.Tag :(int) rdoStatusOut.Tag;/条件表达式,选择活动状态,返回活动状态Idstudent.ClassId = ClassDao.GetClassId(cboClass.Text);/通过班级名获得班级编号student.StudentNO = t

19、xtStuNO.Text.Trim();student.StudentName = txtStuRealName.Text.Trim();student.Sex = rdoStuMale.Checked ? rdoStuMale.Text : rdoStuFemale.Text;student.Phone = txtStuTel.Text.Trim();student.Email = txtStuEmail.Text.Trim();StudentDAO.AddStudent(student);/增加新学员txtStuName.Text = “;/增加成功清空输入框txtStuPwd.Text

20、= “;txtStuConfirmPwd.Text = “;txtStuRealName.Text = “;txtStuNO.Text = “;txtStuTel.Text = “;txtStuEmail.Text = “;/ / 关闭按钮/ / / private void btnAddStuUserCancel_Click(object sender, EventArgs e)this.Close();/ / 界面加载时给年级框赋值/ 高级数据库技术(ADO.NETXML ) 课程设计报告-14-/ / private void AddStudentForm_Load(object sen

21、der, EventArgs e)List list=new List();/新建Listlist=GradeDao.GradeList();/得到所有年级的listforeach (Grade grade in list) /遍历list,给年级下拉框cboGrade赋值this.cboGrade.Items.Add(grade.GradeName);/ / 当年级下拉框变动时,动态给班级下拉框对应赋值/ / / private void cboGrade_SelectedIndexChanged(object sender, EventArgs e)cboClass.ResetText()

22、;/重置cboClass使之非选。cboClass.Items.Clear();/清空cboClass原有下拉选项string gradeName = this.cboGrade.Text;/获取年级int gradeId = GradeDao.GetGradeIdByName(gradeName);/通过年级名获取年级编号List list2 = new List();/新建Class集合list2list2 = ClassDao.FindClassByGradeId(gradeId);/通过年级编号查找班级,并返回班级的集合foreach (Class class1 in list2)/遍

23、历list2给cblClass赋值this.cboClass.Items.Add(class1.ClassName);/ / 输入验证/ / private bool IsValidate() if (txtStuName.Text = “) MessageBox.Show(“请输入用户名“,“输入提示“,MessageBoxButtons.OK,MessageBoxIcon.Information);高级数据库技术(ADO.NETXML ) 课程设计报告-15-txtStuName.Focus();return false;else if (txtStuPwd.Text = “)Messag

24、eBox.Show(“请输入密码“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtStuPwd.Focus();return false;else if (!txtStuPwd.Text.Equals(txtStuConfirmPwd.Text)MessageBox.Show(“两次密码输入不一致“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtStuConfirmPwd.Focus();return false;else if (!rdo

25、StatusIn.Checkedreturn false;else if (txtStuRealName.Text = “)MessageBox.Show(“请输入学员姓名“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtStuRealName.Focus();return false;else if (txtStuNO.Text = “)MessageBox.Show(“请输入学号“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtStuN

26、O.Focus();return false;else if (!rdoStuMale.Checkedreturn false;else if (cboGrade.Text = “)高级数据库技术(ADO.NETXML ) 课程设计报告-16-MessageBox.Show(“请选择年级“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);cboGrade.Focus();return false;else if (cboClass.Text = “)MessageBox.Show(“请选择班级“, “输入提示“, Messa

27、geBoxButtons.OK, MessageBoxIcon.Information);cboClass.Focus();return false;else return true;高级数据库技术(ADO.NETXML ) 课程设计报告-17-namespace MySchoolpublic partial class AddTeacherForm : Formpublic AddTeacherForm()InitializeComponent();/ / 确认增加教员/ / / private void btnAddTeaUserOK_Click(object sender, EventA

28、rgs e)if (IsValidate()/输入验证成功Teacher teacher = new Teacher();/新建教员对象teacherteacher.LoginId = txtTeaName.Text.Trim();/以下依次给teacher属性set值teacher.LoginPwd = txtTeaPwd.Text.Trim();/teacher.UserStateId = rdoStatusIn.Checked ? (int)rdoStatusIn.Tag : (int)rdoStatusOut.Tag;/条件表达式,选择活动状态,返回活动状态Idteacher.Teac

29、herName = txtTeaName.Text.Trim();teacher.Sex = rdoTeaMale.Checked ? rdoTeaMale.Text : rdoTeaFemale.Text;teacher.Brithday = txtTeaBrithday.Text.Trim();TeacherDao.insertNewTeacher(teacher);/增加新教员txtTeaName.Text = “;/增加成功清空输入框txtTeaPwd.Text = “;txtTeaConfirmPwd.Text = “;txtTeaBrithday.Text = “;/ / 输入验证

30、/ / 高级数据库技术(ADO.NETXML ) 课程设计报告-18-private bool IsValidate()if (txtTeaName.Text = “)MessageBox.Show(“请输入用户名“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtTeaName.Focus();return false;else if (txtTeaPwd.Text = “)MessageBox.Show(“请输入密码“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.In

31、formation);txtTeaPwd.Focus();return false;else if (!txtTeaPwd.Text.Equals(txtTeaConfirmPwd.Text)MessageBox.Show(“两次密码输入不一致“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtTeaConfirmPwd.Focus();return false;else if (!rdoTeaMale.Checked return false;if (txtTeaBrithday.Text = “)MessageBo

32、x.Show(“请输入生日“, “输入提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);txtTeaBrithday.Focus();return false;elsereturn true;高级数据库技术(ADO.NETXML ) 课程设计报告-19-private void btnAddTeaUserCancel_Click(object sender, EventArgs e)this.Close();private void AddTeacherForm_Load(object sender, EventArgs e)usin

33、g System;using System.Collections.Generic;using System.ComponentModel;using System.Data;高级数据库技术(ADO.NETXML ) 课程设计报告-20-using System.Data.SqlClient;using System.Drawing;using System.Text;using System.Windows.Forms;namespace MySchoolpublic partial class FindStudentForm : Formpublic FindStudentForm()In

34、itializeComponent();/根据查询条件填充private void FillListView()string userState;/用户状态string studentName = txtFindStudentName.Text.Trim();/用户名Student student = new Student();/建立student对象List list = new List();/建立list集合student.StudentName = studentName;/把用户名set给student对象list = StudentDAO.selectStuByName(stud

35、ent);/通过studentName找出学员LvStudentList.Items.Clear();/清空LvStudent选项内容foreach(Student stu in list)/遍历student集合userState = (stu.UserStateId = 1) ? “活动“ : “非活动“;/如果student状态属性为,返回“活动”。/创建一个ListView项ListViewItem lviSrudent = new ListViewItem(stu.LoginId);/将studentId放在Tag中lviSrudent.Tag = (int)stu.StudentI

36、d;/向ListView中添加一个新项LvStudentList.Items.Add(lviSrudent);/向当前项增加子项lviSrudent.SubItems.AddRange(new string stu.StudentName.ToString(), stu.StudentNO.ToString(),userState );/遍历结束/ / 查找学员按钮/ / 高级数据库技术(ADO.NETXML ) 课程设计报告-21-/ private void btnFindStuOk_Click(object sender, EventArgs e)if (txtFindStudentNa

37、me.Text = “) MessageBox.Show(“请输入用户名“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);elseFillListView(); / / 右击快捷菜单-非活动/ / / private void menuStatusOut_Click(object sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, MessageBoxButtons.OK, Me

38、ssageBoxIcon.Information);elseint result=StudentDAO.UpdateStuInToOut(0,(int)LvStudentList.SelectedItems0.Tag);/更改状态到非活动if (result0)MessageBox.Show(“修改成功“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);FillListView(); elseMessageBox.Show(“修改失败“, “操作提示“, MessageBoxButtons.OK, MessageBoxIco

39、n.Information);高级数据库技术(ADO.NETXML ) 课程设计报告-22-/ / 右击快捷菜单-活动/ / / private void menuStatusIn_Click(object sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);elseint result = StudentDAO.UpdateStuInToOut(1,

40、 (int)LvStudentList.SelectedItems0.Tag);/更改状态到活动if (result 0)MessageBox.Show(“修改成功“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);FillListView(); elseMessageBox.Show(“修改失败“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);/ / 关闭按钮-删除/ / / private void btnCloseFindStu_Click(obj

41、ect sender, EventArgs e)this.Close();高级数据库技术(ADO.NETXML ) 课程设计报告-23-/ / 右击快捷菜单-/ / / private void menuDeleteStu_Click(object sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);elseDialogResult choice =

42、MessageBox.Show(“确定要删除该用户吗?“,“警告“,MessageBoxButtons.YesNo,MessageBoxIcon.Warning);if (choice = DialogResult.Yes)int result=StudentDAO.DeleteStu(int)LvStudentList.SelectedItems0.Tag);if (result 0)MessageBox.Show(“删除成功“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);FillListView(); elseMes

43、sageBox.Show(“删除失败“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);private void FindStudentForm_Load(object sender, EventArgs e)private void txtFindStudentName_TextChanged(object sender, EventArgs e)高级数据库技术(ADO.NETXML ) 课程设计报告-24-private void LvStudentList_SelectedIndexChanged(object sen

44、der, EventArgs e)/ / 查询学员按钮/ / / private void tsmiFindAndUpdateUser_Click(object sender, EventArgs e)FindStudentForm findStudentForm = new FindStudentForm();findStudentForm.MdiParent = this;findStudentForm.Show();高级数据库技术(ADO.NETXML ) 课程设计报告-25-/ / 右击快捷菜单-非活动/ / / private void menuStatusOut_Click(obj

45、ect sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);elseint result=StudentDAO.UpdateStuInToOut(0,(int)LvStudentList.SelectedItems0.Tag);/更改状态到非活动if (result0)MessageBox.Show(“修改成功“, “操作提示“, MessageBox

46、Buttons.OK, MessageBoxIcon.Information);FillListView(); elseMessageBox.Show(“修改失败“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);/ / 右击快捷菜单-活动/ / / private void menuStatusIn_Click(object sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, M

47、essageBoxButtons.OK, MessageBoxIcon.Information);高级数据库技术(ADO.NETXML ) 课程设计报告-26-elseint result = StudentDAO.UpdateStuInToOut(1, (int)LvStudentList.SelectedItems0.Tag);/更改状态到活动if (result 0)MessageBox.Show(“修改成功“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);FillListView(); elseMessageBox

48、.Show(“修改失败“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);/ / 关闭按钮-删除/ / / private void btnCloseFindStu_Click(object sender, EventArgs e)this.Close();/ / 右击快捷菜单-/ / / private void menuDeleteStu_Click(object sender, EventArgs e)if (LvStudentList.SelectedItems.Count = 0)MessageBox.Show(“您没有选择任何用户“, “操作提示“, MessageBoxButtons.OK, MessageBoxIcon.Information);else高级数据库技术(ADO.NET

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报