学生管理系统实验报告_实验报告管理系统报告
学生管理系统实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验报告管理系统报告”。
数据库课程设计报告
-----学生管理系统一、需求分析
根据老师的要求,我主要把精力集中在学生选课的功能实现上,角色分为管理员与学生 实现功能包括如下两部分:
A.学生端实现功能:
1.系统管理:登陆,退出
2.学籍管理:新生注册,修改信息
3.选课管理:选课,我的课表
4.成绩管理(查询个人成绩)
B.管理员端实现功能:
1.系统管理:登录,修改密码
2.学生信息管理:显示学生列表,更改学生状态录入学生各学期科目成绩、修改
3.选课管理:添加、删除选课,显示选课列表,添加选课成绩
4.成绩管理:查看成绩,统计成绩
二.概念结构设计
实体联系图如下:
三.逻辑设计
关系模型:
学生(学号,姓名,密码,性别,专业,入学日期)
课程(ID,课程名,课时)
学期(ID,学期名称)
安排(ID,学期ID,课程ID,老师,地点,教材名)
选课(安排ID,学号,成绩,是否定教材,审核)
状态(ID,状态名)
管理员(ID,姓名,密码)
四.物理结构设计
数据表及关系:
五.系统实施
主要分三层:
表现层,数据访问层,数据存储层(参照《C#网络应用开发例学与实践》实现)这样分层,降低耦合度,便于查错及修改
六.知识点总结
1.使用ADO.NET访问数据库的过程
//新建连接对象
SqlConnection conn = new SqlConnection();
conn.ConnectionString = “Data Source=(local);Initial Catalog=School;Integrated Security=True”;
//新建命令对象
SqlCommand cmd = new SqlCommand(“UpdateStudentInfo”, conn);
//指定命令类型为存储过程
cmd.CommandType = CommandType.StoredProcedure;
//添加参数
cmd.Parameters.Add(new SqlParameter(“@userName”, userName));
cmd.Parameters.Add(new SqlParameter(“@userID”, userID));
conn.Open();
//保存执行结果
int recordsAffected = cmd.ExecuteNonQuery();
conn.Close();
2.引用类型与值类型
SqlParameter(“@isBook”, “0”);对
SqlParameter(“@isBook”, 0);错
“@isBook int ”
SqlParameter 构造函数(String, Object)Object不能对应int类型
3.模糊查询的过程
A.CREATE PROCEDURE [dbo].[Pr_GetMyScore]
(@stuNum varchar(50)= null,@termIDvarchar(20)= null,@courseName varchar(50)= null)
AS
BEGIN
SELECT
[term].[name] AS 学期,[arrange].arrangeID AS 选课编号,[course].[Name] AS 课程名称,FROM[elective],[arrange],[term],[course]
WHERE[arrange].[termID] = [term].[termID]
and[arrange].[courseID] =[course].[courseID]
and[arrange].[arrangeID] = [elective].[arrangeID]
AND(@termID='0' OR [arrange].[termID]=@termID)
AND(@courseName IS NULL OR [course].[Name]like '%' + @courseName + '%')
AND(@stuNum IS NULL OR [elective].[stuID]=@stuNum)
AND[course].courseID = [arrange].courseID
END
B.CREATE PROCEDURE [dbo].[Pr_GetScore]
(@stuNum varchar(50)= null,@courseName varchar(50)= null,)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(8000)
SET @sql=' SELECT
[elective].[stuID] AS 学号, [student].[name] AS 姓名,[arrange].arrangeID AS 选课编号,FROM[elective],[arrange],[course],[student]
WHERE[arrange].[courseID] =[course].[courseID]
and [arrange].[arrangeID] = [elective].[arrangeID]
AND[student].[stuID] = [elective].[stuID]'
IF @stuNum IS NOT NULL
SET @sql=@sql+' AND [elective].[stuID]='+''''+@stuNum+''''
IF @courseName IS NOT NULL
SET @sql=@sql+' AND [course].[Name] like '+'''%' +@courseName+'%'''
EXEC(@sql)
END
七.实验感想
在实训之前,我接触过一些.NET的知识,那时更多的是看实例,然后照搬过来做,对ADO.NET模型不是很了解,这次实训,我又系统地看了一下ADO.NET的基础,加深了对ADO.NET的理解,明白两个核心组件DataSet和.NET Framework的任务。我觉得理论加实践,才能加深对知识的理解,提高处理问题的能力。
做项目,如果从数据库开始分析,把表设计好,那么进行业务逻辑层的设计就很容易实现,也便于以后的扩展。
通过这次的学习,我又接触了很多的.NET控件,(DataGridView,ListView),在遇到不懂的问题,或者解答同学提出的问题时,我尽量查MSDN,使用里面的实例做测试,学到不少知识。