- 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.总结(源码)
网上教学管理系统在目前的高校中使用还不普遍,但也有许多类似的成功案例:如教务管理系统、排课系统等。本系统采用html" class="superseo">class="superseo">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
/****** Object: Table [dbo].[tb_SubjectInfo] Script Date:12/12021 09:30:56 小康康 ******/
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
/****** Object: Table [dbo].[tb_StudentInfo] Script Date: 12/1/2021 小康康 ******/
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
/****** Object: Table [dbo].[tb_Score] Script Date: 12/1/2021 09:30:56 小康康 ******/
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
/****** Object: Table [dbo].[tb_StudentAp] Script Date: 2021/12/23 20:48:14 ******/
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
/****** Object: Table [dbo].[tb_Depart] Script Date: 06/19/2020 09:30:56 小康康******/
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] OFF
8.3(3) 数据 *** 作代码:将数(CRUD)封装为DBHelper类
using System;
using System.Data;//DataSet数据库命名空间
using System.Data.SqlClient;//.NET数据提供程序数据库命名空
using System.Configuration;//数据库连接字符串写在配置文件时要写入这个
/**********************************************
*************学生信息管理系统*******************
***********************************************
* *
* @File name:学生管理 *
* *
* @Author:小康康 *
* *
* @Backend Development:小康康 *
* *
* @Front-end Development: 川川 *
* *
* @Database Design:小温 *
**********************************************/
/// <summary>
/// DBHelper 的摘要说明
/// </summary>
#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: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 获得数据库连接字符串
/// </summary>
/// <returns></returns>
public static string GetConnStr()
{
return ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
}
#endregion
#region 查询
/// <summary>
/// 由sql变量(select语句)得到DataSet学期查询记录集合
/// </summary>
/// <param name="sql">select语句,字符串学期</param>
/// <returns></returns>
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 增加,删除,更改
/// <summary>
/// 执行sql语句,主要是insert、update、delete语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
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
9.系统测试分析
9.1开发环境
(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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)