实验八:数据库应用系统

  • 格式:docx
  • 大小:2.67 MB
  • 文档页数:27

实验八开发数据库应用系统1.实验目的●利用SQL Serve作为后台数据库,使用C#作为前台开发语言,通过数据库访问技术,构建一个应用系统,实现对数据库的连接以及数据查询、修改和更新等操作。

2.实验任务与要求A 学生成绩管理系统(一)系统功能分析学生成绩管理系统的总体任务是实现学生课程信息处理的系统化、规范化和自动化。

该系统要实现的主要功能有:(1)用户登录管理完成用户信息的确认,确保只有合法的用户才能使用本系统。

(2)基本信息管理完成学生信息、课程信息的管理。

(3)成绩信息管理包括学生选课信息管理以及选课信息的查询统计。

其中,选课信息的查询统计包括:按学号查询、按课程查询等。

(二)系统功能模块设计按(一)给出的各项功能,系统的功能模块划分如下:(1)用户登录模块(UserLogin.cs)(2)基本信息管理模块a. 学生信息管理模块(frmStudent.cs)b. 课程信息管理模块(3)选课信息管理模块a. 学生选课信息管理模块b. 选课信息统计模块◆按学号查询模块(frmQuerySno.cs)◆按课程查询模块(三)数据库设计数据库结构的设计直接影响到应用系统的效率以及实现的效果。

合理的数据库结构可以提高数据存储的效率,确保数据的完整性和一致性。

本系统直接采用实验一的学生-课程数据库。

(请自行检查student、sc和course表的主码和外码是否已设置好)在学生-课程数据库中增加一个用户表。

create table users( UserID nvarchar(8) not null primary key,UserName nvarchar(20),Password nvarchar(8))(四)设置数据库结构(1)设置SQL Server登录帐号按实验七的方法,在服务器的“安全性”中新建SQL Server验证的帐号applogin,默认数据库为学生-课程数据库。

(2)在学生-课程数据库的“安全性”中设置用户applogin的数据库成员角色身份为db_owner。

(3)创建视图(1个)--显示学生成绩信息的视图create view view_stu_gradeasselect student.sno as studentsno, sname, sex, dept,o,cname,grade,creditfrom student,sc,coursewhere student.sno=sc.sno and o=o(4)创建存储过程(3个)--向学生表插入数据create proc InsertStudent@Sno char(8), @Sname char(8), @Age int, @Sex char(2), @Dept varchar(50) asdelete from student where Sno=@Snoinsert into studentvalues(@Sno , @Sname , @Age, @Sex, @Dept)--更新学生表的数据create proc UpdateStudent@Sno char(8), @Sname char(8), @Age int, @Sex char(2), @Dept varchar(50) asUpdate studentset sno=@Sno , sname=@Sname , age=@Age, sex=@Sex, dept=@Deptwhere Sno=@Sno--删除Student表的数据create proc DeleteStudent@Sno char(8)asdelete from studentwhere sno=@Sno(五)系统实现过程以下内容在Visual Studio 2010平台中完成。

(1)创建项目,命名为StuGrade。

(2) 创建系统的主窗口更改窗体frmMain的标题:在窗体设计视图的下方空白处点击右键,选择“属性”,在属性列表中修改原标题为“学生成绩管理系统”(2)创建公共类为项目StuGrade添加一个公共类DataBase,保存为文件DataBase.cs。

该类的功能是实现对学生-成绩数据库的存取。

DataBase.cs的代码如下。

(绿色字体为注释,红色字体为需要理解含义的代码)//引入需要使用的系统包using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace StuGrade{class DataBase{SqlConnection SqlConn = new SqlConnection(); //定义一个数据库连接对象//SQL Server验证登录。

如果失败,请检查登录名app的属性,是否具有dbo 权限string sConn = "Server=ASUS-PC;Initial Catalog=sales; User ID=applogin; Password=app";public void Open() //实现连接数据库并打开连接操作{SqlConn.ConnectionString =sConn;if (SqlConn == null){SqlConn = new SqlConnection(sConn);}if (SqlConn.State == ConnectionState.Closed)SqlConn.Open();}public void Close() //实现关闭数据库连接操作{if (SqlConn != null){SqlConn.Close();}}//RunSelectSQL是重载方法,根据需要实现SELECT查询语句,返回数据视图或者结果集。

public DataView RunSelectSQL(string sqlstr){this.Open();DataSet ds = new DataSet();SqlDataAdapter ada = new SqlDataAdapter(sqlstr, SqlConn);ada.Fill(ds);return ds.Tables[0].DefaultView;}public DataSet RunSelectSQL(string sqlstr, bool b){this.Open();DataSet ds = new DataSet();SqlDataAdapter ada = new SqlDataAdapter(sqlstr, SqlConn);ada.Fill(ds);return ds;}public SqlConnection GetConnection() //获取数据库的连接{if (SqlConn==null)SqlConn = new SqlConnection(sConn);return SqlConn;}}}(3)创建用户登录窗体用户登录窗口包括的控件有:Label1:学生成绩管理系统Label2:用户姓名Label3:密码输入用户名和密码的两个文本框(TextBox)分别命名为txtUserName和txtPwd。

其中文本框txtPwd的PasswordChar属性设置为*,表示无论用户在文本框键入什么字符,都显示为星号。

两个命令按钮(Button)分别命名为btnLogin和btnCancel。

“确定”按钮对应的代码为:(双击“确定”按钮即可添加代码;而要编辑代码时,右键点击“确定”按钮,选择“查看代码”)private void btnLogin_Click(object sender, EventArgs e){DataBase db = new DataBase(); //创建一个DataBase对象,负责连接数据库string str;if ((txtUserName.Text.Trim() == " ") || (txtPwd.Text.Trim() == " ")){MessageBox.Show("请输入用户名和密码。

", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);return;}try{str = "Select UserID, UserName, Password from [Users] where UserName = '" +txtUserName.Text.Trim() + "' and Password='" + txtPwd.Text.Trim() + "'";if (db.RunSelectSQL(str).Count >= 1) //如果用户名和密码正确{frmMain obj = new frmMain(); //生成系统主窗口obj.Show(); //显示系统主窗口this.Hide(); //隐藏登录窗口}else{MessageBox.Show("用户名或密码有错误。

", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);}}catch{MessageBox.Show("数据库服务器连接失败。

", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);}finally{db.Close();db = null;}}“取消”按钮对应的代码为:private void btnCancel_Click(object sender, EventArgs e){this.Close(); //关闭此窗口}修改项目的启动窗口,双击Program.cs,找到Application.Run()代码,修改为UserLogin,意为运行系统时首先打开UserLogin窗体(登录界面)。

设置好之后保存,请点击工具栏上的绿色三角迎按钮,运行系统,测试是否能正确登录,进入学生成绩管理系统的主界面。

接下来,完成剩下的步骤。

(4)创建学生信息管理窗体新建如下窗体,命名为frmStudent.cs。

其中,五个文本框TextBox分别命名为:txtSno, txtSname, txtSex, txtAge, txtDept。