- 1.系统概述
- 1.1实现功能
- 1.2功能模块
- 2.数据流程图
- 3数据表数据项
- 3.1学生信息表结构(tb_Student)
- 3.2学生成绩表结构(tb_Score)
- 3.2学生毕业去向表(tb_qx)
- 3.3数据整合表
- 4.数据库概念结构设计
- 4.1全局E-R图
- 5.数据库逻辑结构设计
- 5.1实体所对应的关系模式
- 5.2关系模式优化处理
- 6系统实现
- 6.1系统详细功能
- 6.2系统开发语言简介
- 7.系统总体
- 7.1教师模块
- 7.2学生模块
- 8.数据库连接代码及数据操作代码
- 8.1数据库连接代码
- 8.2数据库代码
- 8.3(3) 数据操作代码:将数(CRUD)封装为DBHelper类
- 9.系统测试分析
- 9.1开发环境
- 9.2系统特点
- 9.3bug
- 10.总结(源码)
网上教学管理系统在目前的高校中使用还不普遍,但也有许多类似的成功案例:如教务管理系统、排课系统等。本系统采用c#、html标识语言及SQL Server 2019。SQL Server(基于结构化查询语言的数据库服务器)是基于客户/服务器结构的数据库管理系统,用户通过使用客户系统从服务器检索信息并进行本地操作,服务器关注数据库进程,而客户则关注信息的表示。数据库技术综合开发。
1.1实现功能实现了1 学生信息管理模块,2 用户管理 3授课管理 具体看如下功能模块图1.2功能模块
1学生管理模块
2.用户管理(学生/老师)
3.授课信息
其余表太多了根据自己要做的内容自行进行添加
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
根据学生信息管理数据库设计需求抽象出学生、教师、课程、成绩四个实体,对四个实体做简化处理,默认一门课程仅被一位老师讲授。
(1)一个系部拥有多名学生,一名学生只属于一个系部,所以系部与学生之间是一对多(1:n)的关系;
(2)一位学生可能会选修多门课程,一门课程会被多位学生选修,所以学生与课程之间是多对多(m:n)的关系;
(3)一位学生会有多项成绩(具体指某学生一门课程的分数),一项成绩仅被一位学生拥有,所以学生与成绩是一对多(1:n)的关系;
(4)一个系部拥有多门课程,一门课程只属于一个系部,所以系部与课程的关系是一对多(1:n)的关系;
(5)一门课程拥有多项成绩,一项成绩仅被一门课程拥有,所以课程与成绩的关系是一对多(1:n)的关系;
之前做的没加毕业生去向,和奖罚处理模块的结构
具体以实现模块为主.
Student(Id,StuNum,StuPassWord,StuName,StuSex,StuTel,StuEmail,StuAddress,StuDepart,StuRemark,StuSuShe)
Score(Id,Subjectld,StuNum,XueNian,StuScore)
StudentAp(StuNum,StuName,StuJi,StuYuanyin)
Student123(StuNum,StuName,StuByqk,Stuqx,StuBydapjd,StuByhkpjd)
按照数据依赖对关系模式进行逐一分析,并进行极小化处理:
Student(Id,StuNum,StuPassWord,StuName,StuSex,StuTel,StuEmail,StuAddress,StuDepart,StuRemark,StuSuShe)
Score(Id,Subjectld,StuNum,XueNian,StuScore)
Depart(Id,DepartName)
Subject(Id,subjectName)
SysLodin(Id,SysName,SysPassWord)
StudentAp(StuNum,StuName,StuJi,StuYuanyin)
Student123(StuNum,StuName,StuByqk,Stuqx,StuBydapjd,StuByhkpjd)
功能模块:管理员(老师)模块具有以下功能:
(1) 班级管理:添加系别,系别列表
(2) 学生管理:添加学生,学生信息列表
(3) 课程管理:添加课程,信息列表
(4) 成绩管理:成绩录入,成绩列表
(5) 系统管理:更改密码
(6) 奖励惩罚管理:奖励录入、奖励列表
(7) 毕业工作管理:信息录入、信息列表
学生模块具有以下功能:
(1) 查看成绩信息
(2) 系统管理 (学生登录账号密码初始值都为学号):修改个人信息,更改密码
C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。
1.教师账号登录界面
2. 班级管理界面
3.班级信息列表
4.添加/修改学生个人信息
5.学生信息列表
6. 添加课程基本信息
7.课程信息列表
8.学生成绩录入
9.学生成绩表
10.奖励录入界面
11.奖励界面表
12.毕业生信息录入
13.毕业生去向
14.更改教师密码
1.学生账号登录界面
2. 查看课程成绩
3.修改学生个人信息
4.更改学生账号密码
8.2数据库代码
[id] [int] IDENTITY(1,1) NOT NULL, [SysName] [varchar](50) NULL, [SysPassWord] [varchar](50) NULL, CONSTRAINT [PK_tb_SysLogin] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[tb_SysLogin] ON INSERT [dbo].[tb_SysLogin] ([id], [SysName], [SysPassWord]) VALUES (1, N'admin', N'admin') SET IDENTITY_INSERT [dbo].[tb_SysLogin] OFF SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tb_SubjectInfo]( [id] [int] IDENTITY(1,1) NOT NULL, [SubjectName] [varchar](50) NULL, CONSTRAINT [PK_tb_SubjectInfo] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[tb_SubjectInfo] ON SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tb_StudentInfo]( [id] [int] IDENTITY(19731126,1) NOT NULL, [StuNum] [varchar](50) NULL, [StuPassWord] [varchar](50) NULL, [StuName] [varchar](50) NULL, [StuSex] [varchar](50) NULL, [StuTel] [varchar](50) NULL, [StuEmail] [varchar](50) NULL, [StuAddress] [varchar](50) NULL, [StuDepart] [int] NULL, [StuRemark] [varchar](100) NULL, [StuSuShe] [varchar](100) NULL, CONSTRAINT [PK_tb_StudentInfo] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[tb_StudentInfo] ON SET IDENTITY_INSERT [dbo].[tb_StudentInfo] OFF SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tb_Score]( [id] [int] IDENTITY(1,1) NOT NULL, [subjectId] [int] NULL, [StuNum] [varchar](50) NULL, [XueNian] [varchar](50) NULL, [StuScore] [decimal](18, 2) NULL, CONSTRAINT [PK_tb_Score] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[tb_Score] ON SET IDENTITY_INSERT [dbo].[tb_Score] OFF CREATE TABLE [dbo].[tb_Student123]( [StuNum] [varchar](50) NOT NULL, [StuName] [varchar](50) NOT NULL, [StuByqk] [varchar](50) NOT NULL, [StuByqx] [varchar](50) NOT NULL, [StuBydapjd] [varchar](50) NOT NULL, [StuByhkpjd] [varchar](50) NOT NULL ) ON [PRIMARY] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[tb_StudentAp]( [StuNum] [varchar](50) NOT NULL, [StuName] [varchar](50) NOT NULL, [StuJj] [varchar](6) NOT NULL, [StuYuanyin] [varchar](50) NOT NULL ) ON [PRIMARY] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tb_Depart]( [id] [int] IDENTITY(1,1) NOT NULL, [DepartName] [varchar](50) NULL, CONSTRAINT [PK_tb_Depart] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[tb_Depart] ON SET IDENTITY_INSERT [dbo].[tb_Depart] OFF8.3(3) 数据操作代码:将数(CRUD)封装为DBHelper类
using System; using System.Data;//DataSet数据库命名空间 using System.Data.SqlClient;//.NET数据提供程序数据库命名空 using System.Configuration;//数据库连接字符串写在配置文件时要写入这个 ///9.系统测试分析 9.1开发环境/// DBHelper 的摘要说明 /// #region 5大对象 //ADO.NET组件,建立c#和sql sever之间的纽带 //ADO.NET=.NET数据提供程序+DdtaSet //1.Connection:负责APP与DB之间的联系; //2.Command:负责执行SQL命令 增删改 //3.DateReader:负责读取查询结果(Select语句)查 //4.DataAdapter:数据适配器(牵线搭桥) //5.DataSet:内存中的数据库 #endregion public class DBHelper { #region 连接数据库 public DBHelper() { // // TODO: 在此处添加构造函数逻辑 // } ////// 获得数据库连接字符串 /// ///public static string GetConnStr() { return ConfigurationManager.ConnectionStrings["DB"].ConnectionString; } #endregion #region 查询 /// /// 由sql变量(select语句)得到DataSet学期查询记录集合 /// /// select语句,字符串学期 ///public static DataSet GetDataSet(string sql) { SqlConnection conn = new SqlConnection(GetConnStr()); conn.Open(); SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); sda.Fill(ds); conn.Close(); return ds; } #endregion #region 增加,删除,更改 /// /// 执行sql语句,主要是insert、update、delete语句 /// /// ///public static Boolean ExecSql(string sql) { SqlConnection conn = new SqlConnection(GetConnStr()); conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); try { cmd.ExecuteNonQuery(); conn.Close(); } catch (Exception ex) { conn.Close(); return false; } return true; } } #endregion
(1)系统结构:B/S(浏览器/服务器)
(2)开发技术:asp.net
(3)开发语言: C#,html,css
(4)数据库 SQL Server 2019
(5)开发平台 Microsoft Visual Studio 2019
(1)本系统完全基于Web技术,只要能连接Internet,就能访问本系统。
(2)采用Asp.net + SQL server 2019开发,具有管理方便,代码简单易懂,体积小巧的特点。
(3)具有清新简洁方便的界面,操作简单。
(4)支持所有的Windows系列操作系统。
在测试过程中发现当数据量大时,界面会稍微有延迟,后发现在DBHelper类封装CRUD时忘记使用了using语句,当回收垃圾时还是采用了.NET中的GC垃圾回收机制,导致系统在加载时会有着一定卡顿,没有进行优化,在StudentInfoAdd.aspx学号进行自动添加时发现当进行设置字母时会出现如下错误,当库中第一次没数据时可以添加,然后第二名学生就不行,最后发下是在aspx设置自增长时格式没转化。
使用三层架构(UI,BLL,DAL)与ASP.NET结合,实现了学生信息管理系统,使用到了模块和程序分离的模式对于管理员(老师)来说,很方便,优秀的Visual Studio 2019开发环境,采用C#,.NET,他的标配数据库就是sql sever。
有写的看起来不适应的不对的,以及建议,也请大佬在评论区点评指导 ,谢谢.
有问题可以私信我或者联系我
企鹅:1833226220
github:https://github.com/xiekangssq/local.git



