最近自己做了一个小的管理信息系统(winform+sqlserver),感觉动手实践才是王道,结果这次小项目的实践,初步学习了三层架构的知识。对这个项目本身总结了一下,全部的代码和数据库文件已经上传。
(晕,图片还是传到相册里算了)
教务管理系统
一.系统总体功能
角色 | 功能 |
管理员(administrator) | 管理教师和学生信息 |
教师(teacher) | 开设课程,管理学生选课,课程评分。 |
学生(student) | 选课,报考4,6级,计算机等级考试。 |
二.模块结构
三.系统层次结构
说明:本系统采用三层架构开发(MVC)
表现层:以上三个模块的窗体。
业务逻辑层:DataAccess项目。
数据存储层:sqlserver中的数据库(student)。
四.系统数据库设计
本项目使用SQLServer作为数据库,数据库的名称为Student
有如下五张表:
表名 | 说明 |
cet | 学生的4,6级报考信息 |
Computer | 学生计算机等级报考信息 |
Course | 教师开课信息 |
StuCourse | 学生选课信息 |
Student | 学生信息 |
五.SchoolMIS解决方案架构
如图:
SchoolMIS解决方案共有4个项目,其中Administrator,Student,和Teacher项目为表现层,其各自的GlobalInfo类的作用是存储当前登录用户的信息。
DataAccess项目为数据访问层,用以和数据库交互。
六.SchoolMIS各个项目架构
1.Administrator项目架构
a)Administrator项目是管理员客户端的表现层,用来和用户交互。
b)该项目组成结构如图所示:
该项目包含5个窗体和一个GlobalInfo类,窗体和用户交互,GloInfo用来保存登录用户(管理员)的信息。
2.Student项目和Teacher项目结构如图:
组成同administrator,不在赘述。
3.(重点)DataAccess项目组成。
a)DataAccess项目是SChoolMIS的事务逻辑层,用以和数据库进行交互
b)如图:
c)DataAccess下设4个文件夹:Administrator,Student,Teacher,和Common。
d)详细讲解:
Common文件夹中的Entity文件夹中的两个类是实体类,它们的作用是将从窗体获得的数据封装为信息实体,便于使用。
另外3个文件夹作用是完成不同类型用户(管理员,教师,学生)和数据库的交互。
3个文件夹中的Constants类的作用相似,存放与数据库的连接字符串,操作字符串(SQL语句)。
3个文件夹中的****DB类(共7个)的作用是与数据库的交互方法(增,删,改,查),诸如验证用户登录,获取信息等。
七.特殊类和特殊控件的使用。
特殊类(方法) | 特殊控件 |
BindingSource, SqlCommand, SqlParameter | DataGridView |
八.总结
(1).类内部提供服务的方法,如果不需要用户调用(非接口),则用private修饰。
(2).对用户的输入就行验证。
附.ADO.NET核心对象介绍
对象 | 作用 |
Connection | 连接和断开数据源 |
Command | 代表sql查询语句或者存储过程名。 |
DataReader | 提供前向只读形式的数据访问 |
DataAdapter | 在数据库和用户之间传递DataSet,内置4个命令对象来实现增,删,改,查 |
Parameter | 在参数化查询中表示参数 |
Transaction | 实现数据库事务 |
核心对象的常用方法:略(查阅MSDN)
通过ADO.NET访问数据库的一般步骤:
(1) 建立数据库连接对象(Connection对象)
(2) 打开数据库连接(Connection对象的Open方法)
(3) 建立数据库命令对象,指定命令对象所使用的连接对象(Command对象)
(4) 指定命令对象的命令属性(Command对象的CommandText属性)
(5) 执行命令(Command对象的方法)
(6) 操作返回结果(SqlDataReader对象或者其他对象)
(7) 关闭数据库连接。