2011-2012学年 第3学期
《Windows程序课程设计》 课程设计报告
题目: 学生成绩管理系统 专业: 数字媒体技术 班级: 2008级 姓名: 李浩娜 指导教师: 李永珍 成绩:
工学院 计算机科学与技术学科
2012 年 7 月 26日
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
学生成绩管理系统
1 设计内容
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
运用学生成绩管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。
2 设计目的与要求
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
1.系统应具有实用性、可靠性和适用性,同时注意到先进性。 2.对各个数据库进行动态管理,防止混乱。
3.能够按照用户选择的不同的条件进行简单查询和复合查询。 4.能够对查询结果进行分类汇总,实现报表打印。 5.注意数据的安全性,具有数据备份和恢复的功能。 6.方便用户的操作,尽量减少用户的操作。 在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。
3 设计环境或器材、原理与说明
该运行环境的规定是保证本需求说明的功能得到实际真正体现的基础。 (1) 服务器端运行环境支持软件
服务器端软件:
Windows2000 Server或更高版本的操作系统, 推荐Windows 2003 Enterprise Edition
数据库系统:SQL Server 2000 或更高版本的数据服务器
1
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
Web 服务器:Microsoft IIS 6.0
.NET Framework v1.1或更高版本的Web 应用支持 企业杀毒软件 (2) 用户端PC软件
Windows98或更高版本操作系统(安装有IE5.0以上版本)
或其它98年以后发布的带有Internet浏览器软件的图形UI操作系统 操作系统:windows,Linux等
浏览器:Internet Explorer、 Maxthon、 Mozilla Firefox、Mozilla Firefox 推荐使用:Internet Explorer、 Maxthon、 (3) 开发环境:
操作系统:Windows 2003 Enterprise Edition
开发工具:Microsoft Visual Studio .NET 2003 ,Adobe Photoshop CS,Dreamweaver MX 2004
数据库系统:Microsoft Sql Server 2000 Web 服务器:Microsoft IIS 6.0 CPU: Intel Pentium(R) 4 2.8CHz 内存: 512 MB
4 设计过程(步骤)或程序代码
本系统从功能上划分可分为以下几大模块:功能模块管理,组权限管理,学生信息管理,课程信息管理,学生成绩管理,授课信息管理,学生信息查询,学生成绩统计等几大模块。以下将对各子模块进行说明。
功能模块管理:将系统功能模块保存到数据库中以便于动态地进行不同用户组权限的分配等操作。本模块包括功能模块的添加,删除,修改等。
组权限管理:对用户进行分组,并将权限设置到不同的用户组。
学生信息管理模块:输入学生基本信息,并可以对学生信息进行添加、查询、修改、删除。还可以关键字查询并从数据库里调出的学生基本信息.输出学生基本信息,学号、班号、姓名查询的信息结果。
课程信息管理:设置课程号,课程名,先修课等课程信息。
成绩信息管理模块:输入成绩信息,并可以对成绩信息进行添加、查询、修改、删除。还可以用关键字查询并调出数据库里的学生基本成绩信息的修改、删除等。输出查询的学生成绩信息。
授课信息管理:对教师授课信息的调度,安排等信息的管理。
学生信息查询:本模块是可对学生成绩进行查询,可按学号,姓名,年龄,所在院系,入学年份等不同条件独立查询或进行模糊查询。
学生成绩统计:对学生成绩总分,平均分等进行统计。 系统模块图:
2
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
学生学籍管理系 系学成授学 统生绩课生管信信信成 理息息息绩 管管管查理理理询
添修删查修删查添修添修删退加改除询添改除询加改 加改除出学学学学加成成成成授授用用用系生生生生绩绩绩绩课课
户户户统信信信信息息息息信信信信信信 息息息息息息
系统E-R图:
学生 学号 班号 学号 成绩 编号 课程号 科目
查询模块流程图:
3
学生成绩统计 工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
条件
退出 显示结果 数据库 满足条件 查询 不符合条件
维护模块流程图:
登入成绩管理系统
显示出错信息 4 维护 查找记录 查找成功 修改增加记录 工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
退出 继续? 继续?
系统维护模块流程图:
退出 修改自己的密码 增加删除用户 普通用户 超级用户 系统维护 本系统采用Forms登录认证,具体设置可由配置文件win.config来进行,配置代码段见下:
5
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
此外,由于系统使用环境属于具有高安全要求的空警管理应用领域,因为对于无论是管理员还是普通队员用户的个人认证信息都将采用加密算法。在本系统里应用的是流行的MD5加密算法来存储密码文件。
加密采用系统中自带的算法,此方法存在于.net中的名字空间System.Web.Security下。系统在添加用户/管理员或者用户/管理员登录时都需要用到此方法,可如此使用:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string password,string passwordformat)。 (1) 程序流程图 请求用户名及密码登录系统 用户不存在或密码错误 登录密码及用户类型验证 用户存在且密码正确 是否系统进入队员管理模块 管理员? 是 是 进入后台管理模块 操作结束? 否 是 操作结束? 6 否
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
退出系统 是 是 在创建数据库的逻辑表之前,首先需要创建数据库。创建数据库有两种方法,可以在企业管理器的数据库服务器组中直接添加,也可以在查询分析器中编写创建数据库的脚本。下面将分别介绍本系统数据库的创建。
选择“企业管理器”-“Microsoft SQL Server”-“SQL Server组”-“NETSDK(Windows NT)”-数据库节点,右键弹出数据库节点,在弹出的快捷菜单中选择“新建数据库”命令,则弹出数据库属性对话框,在该对话框中设置数据库的名字为“GradeSys”,并指定保存数据库的路径和其他属性。
第一步:
打开sql Server 2000企业管理器,展开根结点如图所示,点击“数据库”,“新建数据库”。
注:在进行此操作前请确定Sql Server 2000 数据库服务器已启动.
7
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
第二步:在常规选项卡名称栏处填写要创建的数据库名称,本处将填写为AirMis。并可点击数据文件与事务日志等进行相应设置,此处主要可设置数据库文件及事务日志文件的存储路径等,在此也可以选择系统默认设置。
如下图所示:
8
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
第三步: 在完成第二步的以后,数据库的初步创建基本也就完成。可点击属性如下图所示建行相应信息查看及修改。
第四步:数据库属性选项卡内容如下图所示,可在此依据不同需要进行相应修改。
在数据库中创建表也有两种方法,一是通过企业管理器中直接添加;二是用查询分析器的脚本命令添加。在企业管理器的GradeSys数据库中右键单击“表”
9
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
节点,在弹出的快捷菜单中选择“创建新表”命令,然后就进入设计表结构界面,进行相关的设计了。
本系统定义的数据库中包含以下7个表:学生信息表,AdminGroup,AdminUrl,Admin,成绩表,授课表,课程表等。下面介绍这些表的结构。
学生信息表:用于保存学生的学号,姓名,性别,年龄,所在院系,班级名,入学年份等信息.
AdminGroup表:用于保存系统用户组信息,权限,组说明等信息
AdminUrl表:用于保存系统功能模块信息,包括模块URL,模块名,说明等. Admin表:用于保存系统用户及管理员信息.包括组别,登录用户名,密码等. 成绩表:用于保存学生成绩信息,包括学号,课程号,成绩等字段.
授课表:用于保存教师授课信息.包括教师名,课程号,学时数,班级名等. 课程表:用户保存课程信息,包括课程名,课程号,先修课等信息. (1) 学生信息表
(2) AdminGroup表
(3) AdminUrl表
(4) Admin表
10
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
(5) 成绩表
(6) 授课表
(7) 课程表
数据库库的创建
(1) 按方法一表的创建如下图所示:
打开数据库结点,点击GradeSys数据库
11
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
在右栏单击右键选择新建表
(2)按方法二创建数据库表
在查询分析器中执行以下语句以创建数据库表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_stuGrade]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_stuGrade] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Admin]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Admin] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AdminGroup]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AdminGroup] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AdminUrl]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AdminUrl] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[学生信息表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[学生信息表] GO
12
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[成绩表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[成绩表] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[授课表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[授课表] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[课程表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[课程表] GO
CREATE TABLE [dbo].[Admin] (
[userid] [int] IDENTITY (1, 1) NOT NULL ,
[username] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [group] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[AdminGroup] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Group] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Promise] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [comment] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[AdminUrl] (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[Url] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [UrlName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Comment] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[学生信息表] (
[学号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [性别] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [年龄] [tinyint] NULL ,
13
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
[所在院系] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [班级名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [入学年份] [datetime] NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[成绩表] (
[学号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [课程号] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL , [成绩] [tinyint] NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[授课表] (
[教师名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [课程号] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL , [学时数] [tinyint] NULL ,
[班级名] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[课程表] (
[课程号] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL , [课程名] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , [先修课] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
SET QUOTED_IDENTIFIER ON GO
SET ANSI_NULLS ON GO
CREATE VIEW dbo.v_stuGrade AS
SELECT dbo.成绩表.学号, dbo.成绩表.课程号, dbo.成绩表.成绩, dbo.学生信息表.姓名,
dbo.学生信息表.年龄, dbo.学生信息表.班级名, dbo.学生信息表.入学年份
FROM dbo.成绩表 INNER JOIN
dbo.学生信息表 ON dbo.成绩表.学号 = dbo.学生信息表.学号 GO
SET QUOTED_IDENTIFIER OFF
14
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
GO
SET ANSI_NULLS ON GO
15
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
管理用户登录模块 登录模块图示如下:
页面程序说明
程序名称 程序文件 页面传入参数 页面提交URL 页面传出参数 功能说明 特殊注解
Login.aspx Username,password Session[\"username\"] Session[\"group\"] 登录系统 处理程序说明
程序名称 程序文件 页面转向 功能说明 特殊注解
Login.cs 转向条件:管理员 转向页面: Main.aspx 转向条件:普通用户 转向页面: Main.aspx 判断系统登录条件 在此处系统实际只进入Main.aspx 处理逻辑说明
通过URL链接至服务器端的入口Login.aspx,点击“登录”系统将页面的参数“用户名称和用户口令”通过Codebehind技术设置处的
Codebehind=\"Login.aspx.cs\" 及Inherits=\"GradeMis.Login\"文件中对应的类取得传至后台的参数,根据Login类中的UserLogin方法执行结果返回的转向参数调用
16
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
下一页面Main.aspx。
Main.aspx依据Login.aspx传过来的userid反查确定用户类,而已输出不能的用户可操作的功能模块链接。
参照主要类 名称 System.Web.SessionState; System.Web.UI; System.Web.UI.HtmlControls; System.Web.UI.WebControls; System.Data.SqlClient; System.Web.Security; AirMis.Login 功能 Web应用程序session类 系统UI类 系统Html控件类 系统Web控件类 系统sql数据操作类 系统安全策略类 用户登录处理类 备注
用户退出系统页面 页面程序说明
程序名称 程序文件 页面传入参数 页面提交URL 页面传出参数 功能说明 特殊注解
LoginOut.aspx 无 无 无 退出系统 处理程序说明
程序名称 程序文件 页面转向 功能说明 特殊注解
LoginOut.aspx LoginOut.aspx->Login.aspx 退出系统 处理逻辑说明
通过URL链接至服务器端的出口LoginOut.aspx,点击“退出”系统,将在Page_Load()中调用 Session.Abandon()清除当前登录用户的Session信息并将页面引导向login.aspx;
管理功能模块的实现是将系统里的各个功能模块类(具体是有.cs
文件生成
类,对于具有前台页面的文件由.aspx表现在浏览器中)组织保存到数据库中,由此来进行系统功能的动态添加,并且这是对用户进行权限分组的一个前提。 (1)取得系统功能模块信息并绑定到DataGrid控件上。
string sql = string.Empty;
sql = string.Format(\"select * from AdminUrl\");
17
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
SqlDataAdapter da = new SqlDataAdapter(sql,conn); DataSet ds = new DataSet(); try {
da.Fill(ds,\"t\");
this.DataGrid1.DataSource = ds.Tables[\"t\"]; this.DataGrid1.DataBind(); }
catch {}
取得功能模块信息后,将对功能模块的删除编辑等操作绑定到aspx页面上.
(2) 功能模块管理前台页面代码如下所示:
5 设计结果与分析
本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的.
数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性,可扩展性.数据库设计是直接影响系统运
18
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
行情况及程序设计的一个重要因素.因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题.
6 设计体会与建议
经过努力设计和开发,系统基本开发完毕。其功能基本符合用户需求,能够完成学生学籍的存储和成绩的查询以及各类相关报表的打印。
但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够等多方面问题。这些都有待进一步改善。
在系统开发的这一段时间里,我受到了指导老师细心指导,老师严谨的指导态度与深厚的理论知识都让我受益非浅,从他身上我学到了很多的东西,无论是理论还是实践都使我的知识有很大的提高.
通过这次系统的设计,我学到了很多东西,虽然学习有时是让人感到十分枯燥乏味的,但在设计的过程中,对自己的认识的加深是十分有帮助的。我在设计中发现,以前很多不是十分明白的地方,通过这次设计后,对其中的一些疑惑顿时全消,了然于胸了。总结这个设计过程我对各种知识的学习,驱使我不断地学习和努力。我相信,只要以严格的心态要求自己,注意培养自己的思维能力,就一定会有更大的发展和提高。
7 参考文献
(1) [美]Stephen Walther 著 汤涛 译 ASP.NET UNLEASHED Second Edition 中国电力出版社
(2) (美)罗宾逊,(美)内格尔著 李敏波译 C#高级编程(第3版) 清华大学出版社
(3) [美] 麦斯科 颜炯 译 C#设计模式 中国电力出版社
(4) (美)托马斯 等著,陈伟桩 陶文 译 单元测试之道C#版——使用Nunit 电子工业出版社
(5) 张蒲生 何升 SQL Server数据库应用技术 清华大学出版社
(6)(澳)维恩霍尔特 著 田松茂,谢君英译 NET性能优化 清华大学出版社
19
工学院 计算机科学与技术学科 《Windows程序课程设计》课程设计报告
指导教师评语课程设计 成绩
指导教师签字 2011年 月 日 20
因篇幅问题不能全部显示,请点此查看更多更全内容