文档库 最新最全的文档下载
当前位置:文档库 › 网上选课系统C#NET免费毕业设计论文

网上选课系统C#NET免费毕业设计论文

毕业论文

网上选课系统

——管理员子系统

作者xxx

院系xxx(计算机系)

专业计算机科学与技术

年级 xxxx 学号 xxxxx 指导教师xxxx

职称xxx

答辩日期 xxxx年x月xx日

摘要

随着计算机和网络的普及,高等学校里纷纷建立了CS或者BS结构的网上选课系统。与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了便利。学生在学校的公共机房或者宿舍的个人电脑上通过网络来选课,只要选课还没有截止,学生能够灵活的修改自己的选课情况,大大提高了学校选课工作的效率。教务处的教师则通过选课系统的管理员子系统来管理学生的选课情况,使得学生选课工作达到系统化和自动化,大大提高了学校的工作效率。

本系统是CS(客户端服务器)两层结构。采用C#数据库编程语言。服务器部分是SQL Server2000 关系数据库。客户端分为学生选课子系统和管理员管理子系统,它们通过存于后台数据库的数据产生联系。

无论是学生子系统还是管理员子系统,都需要从数据库中读取院系的信息以及每个院系所开设的课程信息,将其存放在DataSet里面,然后把数据绑定到控件并显示出来。由于每个院系都开设多门课程供学生选择,院系信息和课程信息形成一个树状的结构,所以使用TreeViewer控件显示这些信息比较合适。

关键字:网上选课系统,、C#.NET、SQL Server2000关系数据库。

Abstract

Along with the development of the computer and web, many universities build CS or BS structure of choose courses system on web. Compare with the traditional way of choose courses, this system use local area network. Students can choose courses at computer room or dormitory by web at the elective time also can change the courses that they chosen at the elective time. Teachers can examine the situation of choose courses and manage the system.

This system adopts the two layers structure of CS (customerservice), and use C#. Net language and SQL Server 2000 Database. Customer end makes up by two system —Student System and Manager System. They get in touch with each other by the backstage Database.

No matter the Student System or the Manager System all need read data from the backstage Database, then put them on the Dataset and show them on the Tree view. Keywords Choose Course System 、C# .NET 、SQL Server 2000 Database

目录

前言 (5)

第一部分关键技术概述 (6)

1.1XML文档对象模型 (6)

1.2 遍历DataSet (6)

1.3 TreeView控件动态绑定数据 (7)

第二部分软件定义时期 (8)

2.1问题定义 (8)

2.2 需求分析 (8)

第三部分软件开发时期 (11)

3.1总体设计 (11)

3.2 详细设计 (14)

3.3编码 (20)

3.4 软件测试 (28)

第四部分体会 (30)

第五部分参考文献 (31)

前言

二十一世纪是知识经济的时代,同时也是科技高速发展、网络信息迅速膨胀的年代,大量客观事实表明,一个崭新的计算机时代必将到来。随着知识经济革命的到来和信息技术的蓬勃发展,计算机技术和通讯技术成为了这个时代的主角,不仅改变了我们的世界,而且同时也吹响了我们迈向新生活的号角,正以日新月异的速度改变我们的人生。而两者的结合产物---计算机网络,在最近的几年更是异军突起、迅猛地发展起来,它不仅提高我们的工作效率,而且还为我们提供了广阔的资源利用空间和方便快捷的现代通讯手段,同时它还是衡量一个国家科技发展水平的重要的尺度。

随着计算机技术和网络技术的发展,各高校相继建成了自己的校园网,并充分利用校园网提供的新环境、新手段为校园的教学、科研和教务管理服务。近年来,学校的招生规模不断扩大,在学校学生人数明显增多,加之学生分校区管理,给原本繁杂的院级选修课工作增加了不少教务工作量。网上选课系统的推出,使得选修课程的设置维护、学生选退课及成绩查询、管理员对选课情况的管理等工作均能在互联网上完成。这不仅减轻了教务人员的工作负担,也大大方便了全校师生对选课信息的维护、查询。

计算机语言是开发计算机软件的一种高级软件,它的掌握和使用是高级的计算机使用者必须的技能。现在存在着大量的计算机语言,而且它们的发展速度让世人瞩目震惊。

本系统采用C#数据库编程。C#是一种重要的新语言,微软将其设计和定位成.NET战略的一部分,C#内建了很多有用的库,并由高级集成开发环境提供

支持。它有效地支持目前占主导地位的编程方法——面向对象编程(OOP) 。

C#问世于20世纪90年代,是继C语言之后的一种功能强大的现代语言,它在C的基础上增加了“类”的概念,类是提供用户自定义类型的一种机制,这些用户自定义类型也称为抽象数据类型。C#通过这些方式和提供继承及运行时类型绑定,来支持面向对象编程。

服务器端采用SQL Server2000关系数据库,SQL语言是1974年由Boyce和Chamberlin提出的。由于它功能丰富,语言简捷倍受用户及计算机工业界欢迎,被众多计算机公司和软件公司所采用。经各公司的不断修改、扩充和完善,SQL 语言最终发展成为关系数据库的标准语言。

SQL Server2000是一项全面完整的数据库与分析产品。从借助浏览器实现的数据库查询功能到内容丰富的扩展标记语言(XML)支持特性均可有力地证明,SQL Server2000无谓为全面支持Web功能的数据库解决方案。与此同时,SQL Server2000还在可伸缩性与可靠性方面保持着多项基准测试记录。

第一部分关键技术概述

本网上选课系统分为客户端和服务器两层结构,服务器端安装了SQL Server2000关系数据库,客户端通过校园的局域网连接服务器的数据库存取数据。客户端分为供学生使用的学生子系统和供教师使用的管理员子系统。

本系统设计主要用到以下几个关键技术:XML文档处理技术,遍历DataSet 的编程技术,TreeView控件动态绑定数据的技术和遍历TreeView控件的技术等。

1.1X ML文档对象模型

文档对象模型(Document Object Model,简称DOM)是XML文档的内存(缓存)中树状表示形式,允许对该文档的导航和编辑。DOM是程序员能够以编程方式读取,操作和修改XML文档。

Visual C#.NET中,.NET Framework SDK中的命名空间System.Xml中封装的XmlNode类能够很好的表示DOM树的节点(Node)。XmlDocument类继承和扩展于XmlNode类,而XmlNode是组成DOM树的最基本的元素,因此使用XmlDocument类可以创建和访问DOM。XmlDocument类主要有两类成员方法:●用于对整个文档对象模型执行操作,例如,将XML文档加载到内存中或将

XML文档对象模型保存成一个XML文档。

●查看和操作整个XML文档中的节点。

1.2 遍历DataSet

DataSet是https://www.wendangku.net/doc/c9899909.html,中的核心对象,它支持断开式,分布式数据存取方案,功能非常强大。DataSet是数据在内存中的表示形式。它可以用于多个不同的数据源,包括关系数据库的数据集,本地的XML文档等。无论数据源是什么,它都会提供一致的关系编程模型。DataSet中的方法和对象与关系数据库模型中的方法和对象一致。

DataSet由DataRelation集合,ExtendedProperties和DataTable三部分组成集合。数据都存放在DataTable集合中。DataTable集合包括零个或多个DataTable 对象。DataTable对象的结构对应数据库表的结构,从数据库选择出来的数据集可以放在DataTable对象里面。而DataTable对象又由DataRow集合组成,即每个DataTable里面由多个DataRow。DataRow集合包含表中的数据。DataRow相

当于多维数组,不断改变下标就可以访问整个DataTable里面的数据,改变DataRow集合对象的下标就可以访问不同的DataTable里面的数据,从而可以实现对整个DataSet的遍历。

1.3T reeView控件动态绑定数据

TreeView控件能够以树状的层次结构显示它的节点。每个节点可能包含字节点。父节点或包含字节点的节点可以以展开或折叠的方式显示。如果将TreeView 控件的CheckBoxes属性设置为ture,则在显示TreeView时,节点旁边还可带有复选框。通过设置节点的Checked属性值为true或false,就能以编程方式选定或清除节点。紧挨着节点文本的左侧可以显示图标,这要通过设置TreeView控件的ImageList属性与希望使用的现有ImageList控件相关联才能给每个节点获取图象。

为了实现数据的动态绑定,需要以编程方式添加节点和移除节点,具体方法如下:

(1)使用树视图Nodes属性的Add方法,代码如下:

TreeNode new Node=newTreeNode(“Text”);

MytreeView1.SelectedNode.Nodes.Add(newNode);

(2 ) 使用树视图Nodes属性的Rmove方法移除某个节点,或者使用Clear方

法清除所有节点,代码如下:

MytreeView1.Nodes.Remove(MytreeView1.SelectedNode);

MyTreeView.Nodes.Clear();

第二部分软件定义时期

随着计算机的广泛应用,各行各业的信息管理都涉及到计算机中。在软件定义这一阶段我们明确了软件开发的目的,并确定了“学生网上选课系统”开发的总目标。确定了系统开发的可行性;导出了实现此系统总目标应采用的策略及系统需完成的各个功能。本系统开发的目的在于提高学校选课工作的效率,使学生可以灵活的在选课期限内进行选课活动,同时减轻了负责监督,统计学生选课情况的教师的负担。

2.1问题定义

1.从系统的性质看,本系统属于一个关于数据库方面的应用系统。

2.从系统的功能看,本系统主要应完成以下功能:学生可以查看课程信息,可以在限定时间内选择,退选,增选课程。管理员可以增加,修改,删除学生信息和课程信息,可以查看选课情况,可以修改选课期限,可以修改选课限制人数。

3.从系统的结构看,本系统分为客户端和服务器端,服务器端安装SQL Server2000关系数据库,客户端由学生子系统和管理员子系统组成。

2.2需求分析

通过询问参与选课的学生及负责选课工作的老师具体总结出网上选课系统需要能够实现以下功能:

●学生和管理员必须通过认证才能登录系统,管理员和学生的权限不一样;

●管理员可以添加,删除和修改学生信息,可以添加,删除和修改课程信息,

可以查看选课情况,可以修改选课期限。

●学生可以查看课程信息,只能在限定时间内选修课程,可以查询自己选修课

程的情况,在限定的时间之内还可以退选课程或者增选课程。如果被选课程选修的人数已经达到上限,则学生不能选修该课程。

整个系统的流程是在用户的要求下进行的,学生子系统负责处理学生的选课,退选,增选等事务,并向用户显示操作情况对话框,同时更新数据库中相关表的数据。管理员子系统负责处理管理员对选课情况的管理,向管理员显示操作情况对话框,同时更新数据库中相关表的数据。

系统的数据流图如下:

学生子系统

管理员子系统

信号1(A):修改学生信息信号

信号2(B):修改课程信息信号

信号3(C):修改选课期限信号

简化的数据字典

(1)口令: 用户身份验证

(2)数据流:事务 = [ 输入 | 查询 |选课|]

事务 = [ 输入 | 查询 |退选|]

事务 = [ 输入 | 查询 |增选|]

事务 = [ 输入 | 查询 |修改|]

(3)数据库 = Courses表 + Student表 + Department表 + Elective表 + Admins

表 + Period表

后台数据库据库采用SQL Server 2000,各表完成如下功能:

◆Courses表:用于存放课程的详细信息。

◆Student表:用于存放所有学生的资料。

◆Department表:用于记录开设课程所属院系名称。

◆Elective表:用于记录学生选课情况。

◆Admins表:用于记录所有管理员的信息。

◆Period表:用于设置选课的开始时间和选课的结束时间。

通过对用户提出要求的调查研究,明确了系统设计的目标,确定了系统的基本功能,并分析出数据的流动方向,在此基础之上可以开始着手设计系统,勾画出网上选课系统总体框架。

第三部分软件开发时期

经过软件定义时期以后,就步入了软件的开发时期。在此过程中,要尽量寻求实现此系统的最佳方案,进而实现系统的要求。

3.1总体设计

设计原理

本系统是CS(客户端服务器)两层结构.

服务器采用SQL Server2000关系数据库.数据库里存放着编译好的存储过程,主要负责数据的存取,也负责一些的业务逻辑的处理,例如判断学生是否在允许时间段内选课.

客户端包含两个系统:学生选课子系统和管理员管理子系统.学生子系统安装在学校公共机房,图书馆等场所的电脑上,供学生选课时使用,通过局域网访问教务处办公室的服务器;管理员子系统安装在教务处办公室的桌面型电脑上,供管理教务的教师使用.

客户端的设计

学生选课子系统结构图:

各模块完成以下功能:

查看课程信息:学生登录后,查看可供选择的课程信息。

查看已选课程信息:学生登录后,查看自己选择了哪些课程。

选修课程:学生登录后,通过此模块完成选课操作。

退选课程:学生登录后,通过此模块完成退选操作。

管理员子系统结构图:

各模块完成以下功能:

管理学生记录:管理员登录后,可以删除,修改,增加学生信息。

管理课程记录:管理员登录后,可以删除,修改,增加可选课程信息。

修改课程期限:管理员登录后,可以修改选修课程的开始及结束日期。

查看选课情况:管理员登录后,可以查看某门选修课已选人数是否达到限选人数,并可以查看总体选课情况。

数据库的设计

本系统后台数据库建立6个表:Courses表,Students表Departments表,Elective表,Admins表,和Period表。

1. Courses表

2.Student表

3.Departments表

4.Elective表

5.Admins表

6.Period表

3.2详细设计

到了确定应该怎样具体的实现所要求的系统的时候了,这个阶段将得出学生选课系统的精确描述,从而在编码阶段可以把这个描述直接翻译成具体的程序设计语言书写的程序,这一阶段的结果直接决定了最终程序代码的质量。

1.人机界面设计

本系统对每一层都设置了确保安全的障碍和入口,用户只有进入了某一层才能获得相应那一层资源的访问权,这些措施保证了选课系统及具体数据的安全性。任何一位Web用户在进入选课系统主页面后,只有通过了系统的身份验证才能进入到系统相应的功能页面完成所要进行的操作。

本系统主要包含以下界面:

从此界面,可以分别进入管理员子系统、学生子系统登录界面,单击查询可以查看课程信息并可以查看打印预览。

在该界面学生输入学号、密码,单击登录按钮系统进行验证身份,如学号、密码与数据库中的记录吻合,则进入下一个界面,进行选课。

管理员登录后,可以添加课程、查看选课情况、对学生记录进行管理等,本界面为学生管理界面,管理员输入学生学号,单击查找按钮,在姓名和密码栏中显示该学生的信息,单击修改按钮或删除按钮,就可以完成相应操作。

在添加学生记录一栏中填写相应信息,单击添加按钮,该学生信息就可以添加到数据库中。

用户可以从主页直接进入成绩查询界面,用户可以通过此界面查看课程信息,分别可以按系、按课程名称、按授课教师等查询课程信息,这样大大方便了各级用户,使用户可以更直接、更方便的了解各门课程,有利于学生快速、准确的选课,同时也有利于管理员对课程的管理。通过打印预览子菜单,用户可以将所需信息打印出来。

本报表的制作采用Crystal Report Designer,Crystal Reports for Visual https://www.wendangku.net/doc/c9899909.html,是内置于Visual https://www.wendangku.net/doc/c9899909.html,的报表设计工具,它能够在.NET平台上创建高复杂度且专业级的互动式报表,其以Crystal Report8.0的架构为基础,并且针对.NET平台作更进一步的强化与发展,以确保能提供.NET开发人员最丰富且完整的报表功能。

本系统利用此报表反馈出各系开设课程信息,既方便了学生选课,又减轻了管理员的管理负担,并同时提供打印功能,方便了管理员对局域网上各系开设课程总体情况的掌握。

制作报表过程如下:

首先在原有项目下创建新的窗体,从“工具箱”的Windows窗体选项卡中将CrystalReportViewer报表查看器控件拖放至窗体上,然后从“项目”菜单中选取“添加新项”指令,选择添加Crystal Report项,接下来选择作为空白报表一项,单击确定,即可编辑具有自己独特风格的报表了。需要说明的是:报表的数据源可由窗口左侧的数据库文件直接设定。

此界面为配置管理界面,管理员通过相关操作,可以直接修改数据库中的选课时间记录。在文本区键入选课开始、结束时间,单击生成按钮,配置文件生成功,为更新数据库作好第一步准备。

单击读取按钮,将配置文件读入内存,以便通过函数调用UpdatePeriod存储过程,更新数据库。出现更新数据库成功对话框,单击确定按钮,此时数据库记录被修改。学生必须按照新的选课时间进行选课,使管理员可以动态的、间接的管理数据库,而无须登录到SQL Server2000企业管理器对数据库进行修改。

本网上选课系统共涉及到12个用户界面,以上是具有代表性的几个,单独列出加以说明。为了提高代码的重用性和封装对存储过程的调用,每个子系统都实现了一个存取数据的公共类,提供本系统使用。

2.过程设计

本系统对每一层都设置了确保安全的障碍和入口,用户只有进入了某一层才能获得相应那一层资源的访问权,这些措施保证了选课系统及具体数据的安全性。

不同身份的用户拥有对数据库的不同访问权限(具体到对库中每个表的存取操作),学生用户的选退课权限通过系统应用程序提供给教务管理人员动态设置。系统程序流程图如下

学生子系统:

管理员子系统

3.3编码

源程序代码的逻辑应简明清晰,易读易懂,编码必须严格遵循详细设计阶段

的结果,编写出严密、有逻辑性的代码。

本应用程序为了提高服务器数据库的访问效率,加快整个系统的运行速度,存取数据全部使用存储过程。同时对一些业务逻辑也使用了一些存储过程。

分别使用如下代码进行数据库连接:

private string m_strConnString;

private SqlConnection m_connConnection;

打开操作:

public void Open(string strDataSource,string strInitialCatalog,string strUserID,string strPwd) {

m_strConnString="Data Source="+strDataSource+";Initial

Catalog="+strInitialCatalog+";User ID="+"sa"+";Password="+strPwd;

m_connConnection= new SqlConnection(m_strConnString);

m_connConnection.Open();

}

关闭操作:

public void Close()

{

m_connConnection.Close();

}

首先创建CSQL类,当类中某一对象需要获取数据库中的数据时,用如下代码调用Open()函数。

CSQL mySQL=new CSQL();

mySQL.Open("localhost","electcourses","sa","2188");

其中localhost表示本地访问,electcourses为数据库名,sa为数据库用户名,2188为用户口令。MySQL.Close();

使用该语句可以直接关闭数据库。

各模块具体实现代码如下:

学生子系统:

查看课程信息模块

private void FillDirectoryTree()

{

CSQL mySQL =new CSQL();

mySQL.Open("localhost","electcourses","sa","2188");

DataSet DepartmentDS = mySQL.GetDataSet("select * from Departments","departments");

int myCount = DepartmentDS.Tables["departments"].Rows.Count;

mySQL.Close();

for(int i=0;i

{

string DepartmentName =

DepartmentDS.Tables["departments"].Rows[i][1].ToString();

int DepartmentID =

int.Parse(DepartmentDS.Tables["departments"].Rows[i][0].ToString());

TreeNode CRoot = new TreeNode(DepartmentName);

treeView1.Nodes.Add(CRoot);

AddDirectories(CRoot,DepartmentID);

}

}

private void AddDirectories(TreeNode node,int departmentid)

{

CSQL mySQL =new CSQL();

mySQL.Open("localhost","electcourses","sa","2188");

DataSet ds = new DataSet();

string strsqltemp = "select * from Courses where

DepartmentID="+departmentid.ToString();

ds = mySQL.GetDataSet(strsqltemp,"courses");

int myCount = ds.Tables["courses"].Rows.Count;

for(int i=0;i

{

string CourseName = ds.Tables["courses"].Rows[i][1].ToString();

node.Nodes.Add(new TreeNode(CourseName));

}

mySQL.Close();

}

查看已选课程模块

CREATE Procedure ElectiveList

(

@StudentID int

)

AS

SELECT

Courses.CourseID,

Courses.CourseName,

Courses.CourseTeacher,

Courses.CourseScore,

Courses.CourseHours

FROM

Elective

INNER JOIN Courses ON Courses.CourseID=Elective.CourseID

WHERE

Elective.StudentID=@StudentID

GO

选课模块

CREATE Procedure ElectCourse

(

@StudentID int,

@CourseID int,

@ElectiveID int OUTPUT )

AS

INSERT INTO Elective

(

StudentID,

CourseID

)

VALUES

(

@StudentID,

@CourseID

)

SELECT

@ElectiveID=@@Identity GO

退选模块

CREATE Procedure CancelCourse (

@StudentID int,

@CourseID int,

@ElectiveID int OUTPUT )

AS

SELECT

@ElectiveID=ElectiveID FROM

Elective

WHERE

@StudentID=StudentID AND

@CourseID=CourseID DELETE FROM

Elective

WHERE

(

@StudentID=StudentID

AND

@CourseID=CourseID

)

GO

管理员子系统

管理学生记录模块

●修改学生信息

CREATE Procedure ModifyStudentInfo (

@StudentNumber nvarchar(50),

@Name nvarchar(50),

@Password nvarchar(50)

)

AS

UPDA TE Students

SET

Name=@Name,

Password=@Password

WHERE

StudentNumber=@StudentNumber GO

●添加学生信息

CREATE Procedure AddStudent

(

@StudentNumber nvarchar(50),

@Name nvarchar(50),

@Password nvarchar(50),

@StudentID int OUTPUT

)

AS

INSERT INTO Students

(

StudentNumber,

Name,

Password

)

V ALUES

(

@StudentNumber,

@Name,

@Password

)

SELECT

@StudentID=@@Identity

GO

●删除学生信息

CREATE Procedure DeleteStudent

(

@StudentNumber nvarchar(50),

@Name nvarchar(50)

)

AS

DELETE Students

WHERE

StudentNumber=@StudentNumber

AND

Name=@Name

GO

管理课程信息模块

●修改课程信息

CREATE Procedure ModifyCourse

(

@CourseID int,

@CourseName nvarchar(50),

@CourseHours int,

@CourseScore int,

@CourseTeacher nvarchar(50),

@UpperLimitStudentNumber int

)

AS

UPDA TE Courses

SET

CourseName=@CourseName,

CourseHours=@CourseHours,

CourseScore=@CourseScore,

CourseTeacher=@CourseTeacher,

UpperLimitStudentNumber=@UpperLimitStudentNumber WHERE

CourseID=@CourseID

GO

●添加课程信息

CREATE Procedure AddCourse

(

@CourseID int,

@CourseName nvarchar(50),

@DepartmentID int,

@CourseHours int,

@CourseScore int,

@CourseTeacher nvarchar(50),

@UpperLimitStudentNumber int )

As

INSERT INTO Courses

(

CourseID,

CourseName,

DepartmentID,

CourseHours,

CourseScore,

CourseTeacher,

UpperLimitStudentNumber

)

V ALUES

(

@CourseID ,

@CourseName ,

@DepartmentID,

@CourseHours ,

@CourseScore ,

@CourseTeacher,

@UpperLimitStudentNumber

)

SELECT

@CourseID=@@Identity GO

删除课程信息

CREATE Procedure RemoveCourse (

@CourseID int

)

AS

BEGIN Transaction

DELETE FROM Courses

WHERE

CourseID=@CourseID DELETE FROM Elective

WHERE

CourseID=@CourseID

if @@rowcount>0

Commit Transaction

else

相关文档
相关文档 最新文档