目录
-
任务目标
-
基于学生信息管理的数据库项目训练
(1)课时: 4
(2)教学目的
通过本次课程训练,使学生初步掌握数据库系统设计的基本思路。能够使用C#完成客户端软件的程序编写工作。
(3)教学内容:
学生管理系统的数据库表的设计,学生管理系统客户端软件的设计与实现工作。
(4)教学重点及难点
本次课程教学的重点和难点:表设计结果的合理性,客户端开发过程中各种技术使用的正确性。
(5)教学方法
本次课程教学以任务驱动为主。
(6)教学内容
1、训练说明任务
C#端要求:
1)首先系统分为三类用户角色:管理员角色具有学生、教师信息的添加、删除、修改、浏览功能,;教师角色具有录入学生成绩,修改成绩,成绩统计、成绩排序,学生基本信息查询等功能;学生角色具有本人成绩浏览,本人信息浏览等功能。在使用本系统时要进行登录验证,不同用户提供以上不同的系统功能。
2)学生信息录入时,对数据项进行验证,要求使用C#正侧表达式或其他验证方式,对数据进行格式或其他方面的验证,如邮编格式,身份证、手机号码的验证等。
3)所有统计结果通过图形展示。可以集成第三方类库完成,也可以自己设计完成。自己设计以一个类完成图形处理
4)对于结果输出,如学生花名册、成绩表等,提供打印输出及预览功能。打印输出同样设计一个类完成处理。
5)将输出结果,如学生基本信息表格,成绩表格输出到EXECL和Word文件中保存,输出的内容要完成排版处理。word和EXECL文件处理接口同样要求设计一个类完成数据的排版和保存。
6)其他要求与《程序设计专项训练》一致。
数据库部分要求:
1)数据库表的设计要有约束或规则,确保数据的有效性。
2)多表查询要有视图的使用。
3)多表数据插入要通过事务处理完成,确保数据的完整性
4)复杂的统计工作使用存储过程,利用存储过程完成统计。
2、演示要求
1)写好数据库的创建脚本,保存为.sql文件;或通过数据库的分离和附加操作,快速完成系统环境的搭建。
2)准备好PPT,包含数据库设计和客户端设计两部分内容。
-
初步设计思路
运用三层架构实现教务管理系统
- 界面分三部分:
- 登陆界面(包括登陆和修改密码,忘记密码界面)
- 操作选择界面
- 欢迎界面,自动识别身份
- 自动识别身份后通过代码修改button属性,及单击事件调用的函数
- 展示台界面
- 图形展示界面
- 数字展示界面
- 程序三层架构对应:
- 登陆界面:
对应在两个表中查询pwd和ID
- 操作选择界面
- 自动识别身份,在对应的表中查询修改数据
- 每个数据库的表建立一个类,将对其的操作封装
展示台界面:
- 同登陆界面,根据返回的结果调用第三方类库输出至显示台(图形化输出和数字格式输出)
- 使用代码建立控件存放数据(可将图形化数据保存为图片,然后用picturebox将其显示。
设计日志
三层步骤:分析功能
- 管理员:学生、教师信息的添加,删除,修改,浏览功能;
- 教师:录入学生成绩,修改成绩,成绩统计,成绩排序,学生基本信息查询
- 学生:本人成绩浏览,本人信息浏览
- 学生信息录入时,对数据进行验证,要求正则表达式或其他,格式验证等。
- 统计结果图形展示。借助第三方类库或自定义类
- 结果输出(例如学生花名册,成绩表等)提供打印输出、打印预览功能,打印输出设计一个类完成
- 将输出结果输出到EXECL和Word文件中保存,输出的内容要完成排版处理。文件处理接口设计一个类完成
- 数据库要求:
- 表的设计要有约束或规则,确保数据有效性
- 多表查询要有视图的使用
- 多表数据插入要通过事务处理完成,确保数据完整性
- 展示要求:
- 写好数据库的创建脚本,保存为.sql文件;或通过数据库的分离和附加操作,快速完成环境的搭建
- 准备好PPT,分为数据库设计和客户端设计两部分
- 根据功能确定SQL语句
- 在数据访问层(DAL)编写执行该SQL语句的函数
- //该函数应该在哪个类中,一般情况下,当前的SQL语句要操作哪张表,那么就在数据访问层中中建一个类,这个类的名字与该表名相同,所有操作这个表的函数都写出该类中。
- 编写业务逻辑层的方法
- 编写表现层代码
- 5.1采集数据
- 5.2展示数据
- 5.3调用对应的业务逻辑层来实现具体功能
- 添加timer 实时监控textbox等控件 可用于校验。
- 复杂的统计工作使用存储过程,利用存储过程完成统计
日常笔记
- Textbox.passwordchar = ‘*’;
//使textbox.text内容正常显示(默认以 * 显示) private void pictureBox4_Click(object sender, EventArgs e) { textBox2.PasswordChar = new char(); }
//使输入的文本以 ‘*’显示
WinForm中TextBox控件的PasswordChar属性默认是没有设置的或者说没有开启密码模式,当设置了该属性之后就会开启密码模式,输入的内容以设置的该属性的值来显示。那么该如何取消PasswordChar的设置呢?归纳起来有三种方法,其本质都是把PasswordChar的值赋值为默认值,赋值为默认值后就会按照正常文本进行显示。三种方法代码如下。
this.textBox1.PasswordChar = new char();
this.textBox1.PasswordChar = '\0';
this.textBox1.PasswordChar = default(char);
//使输入的文本正常显示
- Shift+Alt+F10 生成对应函数
- 连接数据库,使用数据库通用格式 (登录按钮)
//登录校验用户名是否存在以及密码是否正确 private void button2_Click(object sender, EventArgs e) { //1.采集数据 string loginID = textBox1.Text; string loginpwd = textBox2.Text; //2.先根据用户名去数据库中查找,是否有对应的用户 string constr = "Data Source = localhost ; Initial Catalog = StudyOprationSytem ; Integrated Security = True;User ID=sa;Password=123456;Database=StudyOprationSystem;"; using (SqlConnection con = new SqlConnection(constr)) { string sql = string.Format("select * from users where ID = '{0}'",loginID); using (SqlCommand cmd = new SqlCommand(sql, con)) { con.Open(); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { //存在该用户 if (reader.Read()) { //3.如果有对应的用户,再比较密码是否正确 //获取查询出的密码,和用户输入的密码进行比较 string dbpwd = reader.GetString(2); if (loginpwd == dbpwd) { //登陆成功 MessageBox.Show("登录成功"); //启用修改密码 button3.Enabled = true; button3.Visible = true; //获取当前登陆用户的主键ID,设置到IDshare IDshare.ID = reader.GetString(1); } else { MessageBox.Show("密码错误"); } } } else { MessageBox.Show("用户不存在"); //4.如果没有对应的用户,直接提示“用户名不存在” } } } } }
- Form窗口切换
This.hide;
Form2 frm = new Form2();
Frm.show();