最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

大学生公选课管理系统

来源:动视网 责编:小OO 时间:2025-10-01 17:55:55
文档

大学生公选课管理系统

SHANDONGUNIVERSITYOFTECHNOLOGY毕业设计说明书大学生公选课管理系统学院:计算机科学与技术专业:计算机科学与技术学生姓名:学号:指导教师:2012年6月摘要随着在校大学生人数的不断增加,教务系统的数据量也在不断的上涨,针对学生公选课这一环节,本系统从学生自主选课、教师成绩录入,以及管理员课程发布三大方面进行了设计。实现了三种不同用户角色的权限范围内的不同功能。针对学生,本系统提供个人信息查询、选课、退选、个人信息修改,以及密码修改等功能;对于教师,本系统提供选课情况查
推荐度:
导读SHANDONGUNIVERSITYOFTECHNOLOGY毕业设计说明书大学生公选课管理系统学院:计算机科学与技术专业:计算机科学与技术学生姓名:学号:指导教师:2012年6月摘要随着在校大学生人数的不断增加,教务系统的数据量也在不断的上涨,针对学生公选课这一环节,本系统从学生自主选课、教师成绩录入,以及管理员课程发布三大方面进行了设计。实现了三种不同用户角色的权限范围内的不同功能。针对学生,本系统提供个人信息查询、选课、退选、个人信息修改,以及密码修改等功能;对于教师,本系统提供选课情况查


SHANDONGUNIVERSITY OF TECHNOLOGY

毕业设计说明书

大学生公选课管理系统

学    院:  计算机科学与技术                  

专    业:  计算机科学与技术            

学生姓名:                      

学    号:                         

指导教师:                

  2012   年  6 月

摘  要

随着在校大学生人数的不断增加,教务系统的数据量也在不断的上涨,针对学生公选课这一环节,本系统从学生自主选课、教师成绩录入,以及管理员课程发布三大方面进行了设计。实现了三种不同用户角色的权限范围内的不同功能。针对学生,本系统提供个人信息查询、选课、退选、个人信息修改,以及密码修改等功能;对于教师,本系统提供选课情况查询、所任课程的成绩录入,以及个人信息查询等功能;管理员拥有系统最高权限,即整个系统的后台管理功能,具体涉及学生管理、教师管理,以及课程管理三大方面。

系统采用asp.net动态网站开发技术,以sql server 2008作为后台基础数据库进行开发。为了更清晰地体现该系统的业务逻辑,并着眼于代码优化方面的考虑,系统采用了三层架构的设计理念,将数据库的所有操作都封装在一个类里面,而业务逻辑又根据不同的用户角色封装成不同的类。

本文除了对系统的总体设计、详细设计,以及功能实现方面作了详细阐述,也对设计中所用到的相关技术进行了一些介绍。

关键词:权限,公选课,发布,asp.net,逻辑,层架构 

Abstract

With the increasing number of college students, academic system, the amount of data has also been rising, the public elective for students in this aspect of the system independent from course selection students, teachers, results entry, and released three major aspects of program administrator is designed. To achieve three different user roles within the purview of different functions Administrators have the highest permissions system, that is the background of the system management functions, specifically related to student management, teacher management, and the three aspects of curriculum management. 

    System using asp.net Web Site technology to sql server 2008 database as the basis for the development background. . For students to provide personal information query the system, course selection, withdrawal, personal information changes, as well as features such as password changes; for teachers, the system provides elective check, the results of any course entry, and personal information etc ;In order to more clearly reflect the business logic of the system and focus on code optimization considerations, the system uses a three-tier design, the database of all operations are encapsulated in a class inside the business logic of the user according to the different role of the package into different classes. 

This addition to the system design, detailed design and function realization were discussed in detail, but also on the design used by a number of related technologies introduced. 

Keywords: Elective,rihts ,released ,asp.net ,three-tier, business logic

 

摘要...............................................................I

第一章 引言

1.1课题研究的目的及意义

“选课”是现在高校管理工作中一项很重要的课题。而且是每个学期都必须要面对的问题。选课工作做不好,学生不知道自己将要学习的课程,老师也不知道自己将要讲授的课程,教务处的排课计划、教室安排等其他调度工作也无从做起。因此,如何解决高校教务管理中的选课工作便成为了如今各大高校面临的很实际的问题。 

随着近几年高校的持续扩招,学生人数逐年增加。为了满足广大学生的求学需要,各个高校的师资力量、硬件配置也随之增强。这样一来,日常管理部门的工作也就越来越繁重,这一点在选课这块显得尤为突出。而传统的手工操作,即费时又费力,而且容易出错,工作效率较低。因此,拥有一套实用、高效、完善的在线选课系统就显得尤为重要,它可以提升高校的教育质量和教学管理质量,提高工作效率,降低行政成本。 

大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的选课方法没有预见性,大家没有事先协调好。并且学生选课存在这样的特点:公选课较多,学生人数众多,学生可根据自己的专业及兴趣选择公选课程进行学习,而且学生对课程的要求有较大差异。使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,学生通过本系统可以了解课题相关信息,进行自主选题,能够满足不同学生对不同题目的不同要求,有利于发挥学生的长处,而且能够充分利用学校的各类教学资源。

使用本系统有三个角色,即管理员、学生和教师用户。管理员的权限最高,包括设置系统登陆信息, 用户基本信息、选课信息的录入、查看、修改、删除等,同时还具有查询各个模块的功能。老师和学生可以实现基本信息查询和进行选课的相关操作,如添加选课信息,退选等。

1.2可行性分析

 (1) 经济上的可行性 

系统界面舒适,操作简单,系统配置要求不高,实现可行,因此经济上可行。该系统可容易实现学生、老师与学校之间的联系,在Internet上实现完成部分教务工作,提高办事效率。

(2) 技术上的可行性

随着互联网的蓬勃发展,越来越多的机构将科研管理与Internet融合到一起,以方便个高校管理。在这样一个社会背景下,基于Windows和SQL Server 2008 ,运用先进的ASP.NET技术、先进的C#语言,采用B/S模式开发的学生网上选课系统,将学生、老师、管理员、有机地结合在一起,有效地提高管理水平和效率。随着科学技术的不断提高,计算机科学日渐成熟,基于以上的技术在现今比较容易实现。 

(3) 操作上的可行性

该系统操作方便,简单。 

第二章 系统总体设计

2.1 系统结构设计

2.1.1 各功能模块和示意图

根据用户对象的不同可以将本系统分三个主模块和两个公共模块。三个主模块分别是:学生、教师、管理员,两个公共模块即登录验证和密码修改。

登录验证:各类用户登录成功后,方可进行所辖职权范围的各种操作;反之,登录验证失败,则无法进入系统。

密码修改: 为了提高系统的安全性,防止非法用户登录成功进行非法的操作。系统向三类用户提供密码修改功能,用户可以根据自己的需要,对自己的密码的长度、复杂度进行加强。特别是管理员,其操作权限最大,因此,修改密码显得尤其重要。

学生用户的主要功能有:课程信息查询(包括课程的相关的信息、该课程任课教师信息、该课程开课院系信息)、选修课程、退选课程、个人信息查询、成绩查询、照片上传。

教师用户的主要功能有:所任课程选修情况查询、期末学生成绩的录入、个人信息查询、查看所任课程信息(包括上课时间、上课地点等)。

管理员用户的主要功能有:添加学生、学生维护(如学生退学、转专业、留级等,这就需要对学生信息修改、删除等操作)、成绩管理(对教师已经提交的成绩进行修改)、添加教师、教师维护(主要是指教师信息的修改、删除,而教师信息的修改主要集中在职称晋升字段)、课程维护(发布、删除、修改课程相关信息)。

  下面是系统总概括图2-1:

图2-1 系统概括图

2.1.2 模块间的调用关系

所谓模块间的调用关系,即各功能模块之间的相互关系。该系统中关系最为紧密的要数公共模块(身份验证和密码修改)和三类用户对象对应的功能模块。登录身份验证的时候,将登录信息予以保存,保存的信息多作为各用户模块的参数,包括密码修改模块都用到了保存的登录信息。相比之下,三类用户功能模块显得比较,旨在完成权限范围内的各项操作。

2.1.3 模块间的接口

各模块实现的功能如下:

(1)学生登录-密码修改:学号、密码

学生选课-课程退选:学号、课程号、教师编号

个人信息查询-成绩查询:学号

(2)教师登录-密码修改:教师编号、密码

教师信息查询-任课查询:教师编号

(3)选课查询-成绩录入:课程号、教师编号、学号

学生维护-成绩管理:学号

2.2 数据库设计

2.2.1 E-R图

各个功能模块的E-R图如下:

1. 学生

图2-2 学生子系统

2. 教师

图2-3 教师子系统

3. 管理员

图2-4 管理员子系统

4. 院系

图2-5 院系信息

5.专业

    图2-6 专业信息

6.教学班

图2-7 教室信息

7. 课程

图2-8 课程详细安排

2.2.2 数据表设计

根据系统功能设计的要求及功能模块的划分,用于系统用户信息数据库,可以列出如下数据表:

1. 名称:学生信息表

    标识:Student

    学生信息表包括学生的基本信息,有学号、姓名、性别、生日、个人照片、年级、班级、院系、专业等。

表2-1 学生信息表

名称字段名称数据类型主键非空
学号stuIDVarchar(20)YESYES
密码stuPwdVarchar(20)N0YES
姓名stuNameVarchar(20)N0YES
院系ID

departIDIntN0YES
年级stuGradeIntN0YES
班级stuClassIntN0YES
性别stuSexCharN0YES
生日stuBirthdaydatetimeN0YES
个人头像stuImageVarchar(50)N0N0
专业stuMajorVarchar(20)N0YES
2. 名称:教师信息表

    标识:Teacher

    老师信息表包括教师的基本信息,有教师编号、教师姓名、教师所在院系编号、性别,以及教师职称等。

表2-2 教师信息表

名称字段名称数据类型主键非空
教师编号teaIDVarchar(20)YESYES
登录密码teaPwdVarchar(20N0YES
教师姓名teaNameVarcahr(10)N0YES
院系编号departIDIntN0YES
性别teaSexCharN0YES
职称teaPositionVarchar(50)N0N0
3. 名称:课程信息表

    标识:Course

    课程信息表包括课程的基本信息,其字段有课程代码、教师编号、课程名称、上课时间、上课地点、课程简介、课程学分、开课院系、教学班编号等。

表2-3 课程信息表

名称字段名称数据类型主键非空
课程代码courseIDVarchar(20)YESYES
教师编号teaIDVarchar(20)YESYES
课程名称courseNameVarchar(50)NOYES
上课时间courseTimeVarchar(20)NONO
上课地点courseAddressVarchar(50)NONO
课程简介courseInfoTextNONO
课程学分courseCreditIntNOYES
院系ID

departIDIntNOYES
教学班号classNointNOYES
4. 名称:管理员信息表

    标识:User

管理员信息表比较简单,整张表包含两个字段,即用户名(管理员)和后台管理密码(登录密码)。

表2-4 管理员信息表

名称字段名称数据类型主键非空
管理员用户名adminNameVarchar(20)YESYES
管理员密码adminPwdVarchar(20)NOYES
5. 名称:选课表

    标识:Course

选课表包括学生选课的情况,包含的字段有:学号、课程号、教师编号、成绩、学分等。

表2-5 选课表

名称字段名称数据类型主键非空
学号stuIDVarchar(20)YESYES
课程号courseIDVarchar(20)YESYES
教师编号teaIDVarchar(20)YESYES
成绩ScoreIntNONO
绩点CreditintNONO
6. 名称:教学班信息表

    标识:Class

    学校教室有两种规格,一种是大间的教室,另一种是小间的,其中大间的能容纳180人,而小间的只能容纳50人,公选课可以在这两类教室内进行。教学班的作用就是统计课程选修人数,并形成教学班,选修的人数不能超过教学班号所对应的人数,而教学班的主键是classNo。

表2-6 教学班信息表

名称字段名称数据类型主键非空
教学班编号classNointYESYES
人数classCapcityintNOYES
7. 名称:专业信息表

    标识:Major

专业信息表主要记录专业相关的信息,包含的字段有:专业编号、专业名称,以及所属院系等。

表2-7 专业信息表

名称字段名称数据类型主键非空
专业编号stuMajorVarchar(20)YESYES
专业名称majorNameVarchar(50)NOYES
归属院系departIDintNOYES
8. 名称:院系信息表

    标识:Depart

    院系信息表记录院系的相关信息,包含的字段有:院系编号、院系名称、院系排名、院系简介等。

表2-8 院系信息表

名称字段名称数据类型主键非空
院系编号departIDIntYESYES
院系名称departNameVarchar(100)NONO
院系排名departPriIntNONO
院系简介departInfotextNONO
2.2.3 数据库关系图

为了准确地反映数据库各数据表之间的关系(主/外键关系),在数据库建立之初,就创建了数据库关系图,如图 2-9 所示: 

图2-9 数据库关系图

2.3 系统流程图

图2-10 系统流程图

第三章 系统详细设计

3.1 数据库操作类

系统采用了三层架构的设计方法,所谓三层架构是指数据层(主要是数据库的操作类)、业务逻辑层(为实现业务流程所封闭的类),以及界面表示层(对数据层和业务逻辑层相关类方法的调用)。下面将对三层架构中的数据层(即数据库操作类)作详细阐述。

3.1.1数据库的打开与关闭

要对数据库进行操作,首先要做的就是打开数据库。数据库的操作完毕之后,必须关闭数据库,而且是每打开一次就一定对应关闭一次,否则会提示出错。下面是打开和关闭数据库的方法。在Open()方法中,首先获得Appsettings[“mycon”]的值作为数据库连接字符串con。然后是调用已经封装好的方法,该方法在命名空间 System.Data.SqlClient里申明,因此,在调用时需要加入到类的命令空间申明里,其指令是:using System.Data.SqlClient。 

  //打开数据库

    private void Open()

    {

        if (con  == null)

        {

            con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["mycon"].ToString());

        }

        if (con.State == System.Data.ConnectionState.Closed)

            con.Open();

    }

    //关闭数据库

3.1.2 释放连接资源

在数据库的操作类中同时封装了释放数据库连接资源的方法,即Dispose(),在该方法里面调用了con的Dispose()方法。

// 释放数据库连接资源¡

    public void Dispose()  

    {

        if (con != null)

        {

            con.Dispose();

            con = null; 

        }

 

    }

3.1.3 参数传递和转换

程序设计语言的数据类型和数据库相应字段的数据类型不匹配的事件时有发生。为了解决这一问题,数据库操作类提供程序设计语言的数据类型向数据库数据类型转换的方法。

public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)

{

return MakeParam(ParamName,DbType,Size,ParameterDirection.Input,Value);

}

//参数转换方法

public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)

{

   SqlParameter param;

   if (Size > 0)

      param = new SqlParameter(ParamName, DbType, Size);

   else

      param = new SqlParameter(ParamName, DbType);

   param.Direction = Direction;

   if (!(Direction == ParameterDirection.Output && Value == null))

   param.Value = Value;

   return param; 

}

3.1.4 执行返回Int值的方法

下面是两个执行返回值为Int的sql语句的方法。常见的可以返回Int值的sql语句包括插入、更新、删除三类操作,Int的意义是操作所影响的行数。RunProc()方法进行了重载。

  //执行复杂¨的数据库操作    public int RunProc(string procName, SqlParameter[] prams)

    {

        //调用CreateCommand方法1建cmd对象

        SqlCommand cmd = CreateCommand(procName, prams);

        cmd.ExecuteNonQuery();

        this.Close();

        return (int)cmd.Parameters["ReturnValue"].Value;

 

    }

    //执行简单的数据库操作

    public int RunProc(string procName)

    {

        this.Open();

        SqlCommand cmd = new SqlCommand(procName, con);

        cmd.ExecuteNonQuery();

        this.Close();

        return 1 ;

    }

3.1.5 返回Dataset方法

下面执行sql语句后,返回dataset的方法,dataset即数据集,该方法一般用于查询语句。查询后其结果保存于dataset对象中,要查看具体结果,只需要从dataset中取值即可。

    //执行查询命令,返回数据集

    public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName)

    {

        SqlDataAdapter dap = CreateDataAdapter(procName, prams);

        DataSet ds = new DataSet();

        dap.Fill(ds, tbName);

        this.Close();

        return ds;

    }

    public DataSet RunProcReturn(string procName, string tbName)

    {

        SqlDataAdapter dap = CreateDataAdapter(procName, null);

        DataSet ds = new DataSet();

        dap.Fill(ds, tbName);

        this.Close();

        return ds ;

    }

3.1.6 创建SqlDataAdapter的方法

该方法返回SqlDataAdapter对象,在RunProcReturn()方法中调用,其目的是调用dap.Fill()方法,从而返回dataset。

private SqlDataAdapter CreateDataAdapter(string procName, SqlParameter[] prams)

{

    this.Open();

SqlDataAdapter dap = new SqlDataAdapter(procName, con);

    dap.SelectCommand.CommandType = CommandType.Text;

    if (prams != null)

       {

         foreach (SqlParameter parameter in prams)

         dap.SelectCommand.Parameters.Add(parameter); 

        }

     dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));

    return dap;

}

3.1.7 创建SqlCommand的方法

该方法的返回值是SqlCommand对象,在RunProc()方法中调用,其目的是创建sqlcommand对象,然后调用ExecuteNonQuery()方法。

private SqlCommand CreateCommand(string procName, SqlParameter[] prams)

{

  this.Open();

   SqlCommand cmd = new SqlCommand(procName, con);

   cmd.CommandType = CommandType.Text;  //执行类型,命令文本

   if (prams != null)

   {

       foreach (SqlParameter parameter in prams)

       cmd.Parameters.Add(parameter);

   }

   cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));

    return cmd ; 

}

3.2用户的登录功能

登录是该系统的门户,只有成功通过登录验证的用户才能进行职权范围内的操作,否则无法跳转到其他操作页面,这样就保证了角色的,从而从一定程度加强了系统的安全性。例如,学生登录成功后可以选修课程、退选课程、成绩查询、个人信息修改(这里主要指上传照片,其他信息的修改权限则赋予系统管理员),密码修改,但是成绩录入就是教师职权范围内的操作,学生无权操作,管理员亦是如此。用户登录界面如下图3-1所示:

图3-1 登录界面

实现思路:根据用户类型查询不同的数据表,查询关键字是用户名和密码。查询后,返回Dataset实例,通过判断返回结果是否为空,来确认验证的成功与否,成功为true,否则为false。

关键代码如下:

public Boolean Login(string strName, string strPwd, string strType)

{

  if (strType == "管理员")

  {

    sqlstr = "select * from Users where adminName = '"+strName+"'and adminPwd = '"+strPwd+"'";

  }

  if (strType == "教师")

  {

   sqlstr = "select * from Teacher where teaID = '" + strName + "'and teaPwd = '" + strPwd + "'";

  }

  if (strType == "学生")

  {

   sqlstr = "select * from Student where stuID = '" + strName + "'and stuPwd = '" + strPwd + "'"; 

  }

    ds = db.RunProcReturn(sqlstr, "Users");

     if (ds.Tables.Count == 1 && ds.Tables[0].Rows.Count == 0)

         return false;

     else

         return true;

}

3.3密码修改

为了进一步加强系统的安全,防止非法用户进行非法操作。系统向三类用户提供密码修改功能,三类用户可以根据自己的需要对密码进行修改,密码修改的目的:一,便于用户记忆;二,增加密码的长度和复杂度,从而增强系统的安全性。基于以上两点考虑,修改密码显得尤其重要,特别是对于系统有最大操作权限的管理员,每次操作后最好都能修改自己的登录密码。密码修改的界面如下图3-2所示:

图3-2 密码修改

实现思路:根据不同用户类型,更新不同的数据表的相应字段(学生表对应stuPwd,教师表对应teaPwd,管理员对应adminPwd),更新sql语句的条件是用户的ID。

关键代码如下:

//修改密码

    public void changePwd(string strID, string strType, string strNewPwd)

    {

        if (strType == "学生")

        {

            sqlstr = "update Student set stuPwd = '" + strNewPwd + "' where stuID = '" + strID + "'";

        }

        if (strType == "教师")

        {

            sqlstr = "update Teacher set teaPwd = '" + strNewPwd + "'where teaID = '" + strID + "'";

        }

        if (strType == "管理员")

        {

            sqlstr = "update Users set adminPwd = '" + strNewPwd + "' where adminName = '" + strID + "'";

        }

        db.RunProc(sqlstr);

    }

}

3.4 学生功能模块

 学生是该系统的重要角色之一。学生登录验证成功后,可以进行的操作有:公选课查询、课程选修、课程退选、个人信息查询及修改,以及成功查询等。下面就每个功能进行具体阐述。

3.4.1 公选课查询及选修

决定学生课程选修因素包括:课程的基本信息、任课教师信息,以及院系的基本信息。毕竟学生前面所列的三个选修因素,在某种程度上起着决定性的作用。

 

图3-3公选课查询

实现思路:通过四张表的自然连接,显示课程信息,这里所显示的课程都经过了筛选,筛选的条件:1. 该学生还没有选修的,即学生当前已经选修的课程在此不列出;2. 课程已经达到其教学班人数的上限,换言之,选修的人数已经满额。

学生选修课程后,会在Elect表插入课程的选修记录,方便以后成绩的录入等操作。

学生选课关键代码如下:

public DataSet courseAcquirable(string strID)

{

   sqlstr = "select courseID, teaName, courseName,  courseTime, courseAddress, departName, courseCredit, Course.classNo from Course, Teacher, Depart, Class where Course.departID = Depart.departID and Course.teaID = Teacher.teaID and Course.classNo = Class.classNo and courseID not in(select CourseID from Elect where stuID = '" + strID + "') and Class.classCapcity > (select count(courseID) as mycount from Elect) ";

    ds = db.RunProcReturn(sqlstr, "Course");

    return ds; 

}

public void selectCourse(string stuID, string courseID, string teaID)

{

   sqlstr = "insert Elect(stuID, courseID, teaID)values('" + stuID + "','" + courseID + "','" + teaID + "')";

   db.RunProc(sqlstr); 

}

图3-4课程信息查询

实现思路:courseID作为Course表的主键,查询时将courseID作为查询条件,即可获得该门课程的详细信息。

详细课程信息实现代码:

public DataSet courseDetails(string strID)

{

 sqlstr = "select courseName, courseInfo from Course where courseID = '" + strID + "'";

 ds = db.RunProcReturn(sqlstr, "Course");

 return ds; 

}

图3-5教师详细信息查询

实现思路:teaID作为数据表Teacher的主键,通过teaID作为条件进行查询,就可以获得教师的详细信息。

教师详细信息实现代码:

public DataSet gainTeaInfo(string teaID)

{

  sqlstr = "select teaSex, departName, teaPosition from Teacher,Depart where Teacher.departID = Depart.departID and teaName = '" + teaID + "'";

  ds = db.RunProcReturn(sqlstr, "Teacher");

  return ds;

 }

 

图3-6学院信息查询

实现思路:一般来说,每个院系的名称绝不相同,因此院系名称可以作为除院系ID的第二主键,通过departName作为查询条件,就可以获得院系的详细信息。

学院详细信息实现代码:

public DataSet gainDepartInfo(string departname)

{

sqlstr = "select departName, departPri, departInfo from Depart where departName = '" + departname + "'";

 ds = db.RunProcReturn(sqlstr, "Depart");

 return ds;

}

3.4.2 课程退选

如果已经选修的课程并不符合学生后来的意愿或实际情况(譬如课程冲突等客观因素),学生可以对已选修的课程进行退选。退选后,学生可以选择不选或改选。

图3-7课程退选

实现思路:课程退选的思路很简单,只需要将Elect数据表中的相应选课记录删除即可。

课程退选实现代码:

public void giveupCourse(string stuID, string courseID, string teaID)

{

sqlstr = "delete from Elect where stuID = '" + stuID + "' and courseID = '" + courseID + "'and teaID = '" + teaID + "'";

     db.RunProc(sqlstr);

}

3.4.3 个人信息查询及修改

学生进入系统后,显示的即是用户个人信息,当然用户如果跳转到了其他页面也可通过点击菜单的个人信息查看或修改个人信息。用户不具备其他的信息的修改权限,提供给用户修改权限仅限于照片上传(针对没有上传照片的用户)或重新上传(已经上传了照片的用户)。

图3-8个人信息查询及修改

实现思路:通过学号可以查询到该学生的详细信息,然后将其返回结果逐一绑定到相应的服务器控件即可。

个人信息查询代码:

public DataSet personalInfo(string stuID)

{

sqlstr = "select stuID, stuName, Depart.departName, stuGrade, stuClass, stuSex, stuBirthday, Major.majorName, stuImage from Student, Depart, Major where Student.stuMajor = Major.stuMajor and stuID = '" + stuID + "' and Student.departID = Depart.departID";

      ds = db.RunProcReturn(sqlstr, "stuInfo");

      return ds;

}

实现思路:上传照片以上传文件的方式,并存于本网站Images文件下,然后将文件名保存到Student表中的头像字段,并用image服务器控件显示即可。

照片上传实现代码:

protected void btnUpLoad_Click(object sender, EventArgs e)

{

    if (FileUp.HasFile)

     {

      string fileName = FileUp.PostedFile.FileName;

      FileInfo file = new FileInfo(fileName);

      string Name = file.Name;

      string webFilePath = Server.MapPath("Images/" + Name);

      string fileContentType = FileUp.PostedFile.ContentType;

      if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/jpg")

        {

          FileUp.SaveAs(webFilePath);

          MyImage.ImageUrl = "Images/" + Name;

          ErrorShow.Text = "照片预览";

             stu.uploadImage("Images/" + Name,Application["userName"].ToString().Trim());

            }

        }

    }

3.4.4 成绩查询

每学期期末,当教师录入成绩之后,学生可以登录该系统查询自己所选课程的成绩,同时成绩已经换算成绩点,方便学分制条件下的管理。

图3-9成绩查询

实现思路:每学期期末,学生可凭自己的学号作为查询条件查询Elect表,查看自己该学期公选课的学习成绩、学分,以及绩点。

成绩查询关键代码:

public DataSet queryScore(string stuID)

{

  sqlstr = "select Elect.courseID, courseName,courseCredit, Score, Credit from Elect, Course where stuID = '" + stuID + "' and Course.courseID = Elect.courseID";

  ds = db.RunProcReturn(sqlstr, "Score");

  return ds;

}

3.5教师功能模块

和学生用户一样,教师也是该系统的重要角色之一。教师登录成功后,可以查询所任课程学生的选修情况、个人信息查询,以及所任课程成绩的录入。

3.5.1 学生选课查询

一般说来,一名教师所任课程超过一门,此时,教师可以通过下拉列表控件选择,不同课程,不同的选修情况。

图3-10

实现思路:因为教师和课程是多对多的关系,因此在查询教师所任课程的选修情况时,将courseID和teaID一起作为查询条件。

学生选课查询关键代码:

public DataSet obtainStuInfo(string courseID, string teaID)

{

  sqlstr = "select Student.stuID, Student.stuName, majorName, Student.stuGrade, Student.stuClass from Elect, Student,Major where Elect.stuID = Student.stuID and Elect.courseID = '" + courseID + "' and Elect.teaID = '" + teaID + "' and Student.stuMajor = Major.stuMajor";

  ds = db.RunProcReturn(sqlstr, "MyTable");

  return ds;

 }

3.5.2 成绩录入

对于教师用户来说,成绩录入是他最主要的功能。一旦提交成绩,教师再也没有成绩的修改功能,成绩的修改功能转嫁到系统管理员。成绩的修改是以教师提交成绩修改申请为前提的。

图3-11教师成绩录入

实现思路:通过选择不同的课程,进行不同课程的成绩录入。成绩录入时,选输入要录入的全部学生成绩,然后点击提交成绩,就将学生对应课程的学习成绩更新到Elect数据表中。

成绩录入关键代码:

public void submitScore(string stuID, string teaID, string courseID, double Score, double Credit)

{

 sqlstr = "update Elect set Score = '" + Score + "', Credit = '"+Credit+"' where stuID = '" + stuID + "' and teaID = '" + teaID + "' and courseID = '" + courseID + "'";

 db.RunProc(sqlstr);

}

3.5.3 个人信息查询

教师用户有着信息的查询功能,却没有个人信息的修改功能,教师信息的修改权限赋予管理员,修改的字段也仅限于职称的修改,因为这是最可能、也最容易发生变化的字段。

图3-12教师个人信息查询

实现思路:teaID作为Teacher表的主键,将teaID作为查询条件,即可获得教师的个人信息。

教师详细信息查询关键代码:

public DataSet teaInfo(string teaID)

{

 sqlstr = "select teaName, teaSex, departName, teaPosition from Teacher, Depart where teaID = '" + teaID + "'and Teacher.departID = Depart.departID ";

 ds = db.RunProcReturn(sqlstr, "teacher");

 return ds;

 }

3.6 管理员功能模块

管理员拥有本系统最大的权限,管理员的功能包括:添加学生、学生维护、成绩管理、添加教师、教师维护,以及课程维护等。下面就每个功能作具体阐述。

3.6.1 添加学生

直接在数据库的Student表中可以添加学生,但这种方式速度太慢,全部都要手工录入。为此,为系统管理员提供了后台添加学生的功能。通过下拉一列表选择,比起直接的输入,显得更为方便。

图3-13管理员系统

实现思路:当有新生入学的时候,要将新生的基本信息录入到Student表中,方便后期的管理和维护。

添加学生关键代码:

public void Addstu(string myvalues)

{

  sqlstr = "insert into Student(stuID, stuPwd, stuName, departID, stuGrade, stuClass, stuSex, stuBirthday, stuMajor) values(" + myvalues + ")";

  db.RunProc(sqlstr);

}    

3.6.2 学生维护

学生维护工作主要是指修改和删除。如果该学生已经退学,则删除该学生的信息;如果该学生因成绩不理想而留级或者转专业,此时,就需要对院系、专业、年级、班级等字段进行修改,以便更新学生信息。

图3-15学生维护

实现思路:通过学号可以删除相应的学生信息。更新学生信息的字段有:院系、专业、年级,以及班级,前两者是针对于转专业的学生,而后两者则针对于留级的学生,更新的条件是学生的学号。

学生维护关键代码:

public void delStu(string stuID)

{

 sqlstr = "delete  from Student where stuID = '"+stuID+"'";

 db.RunProc(sqlstr);

}

public void updateStu(int departID, string stuMajor, int Grade, int Class, string stuID)

{

  sqlstr = "update Student set departID = '" + departID + "', stuMajor = '" + stuMajor + "', stuGrade = '" + Grade + "', stuClass = '" + Class + "' where stuID = '" + stuID + "'";

  db.RunProc(sqlstr);

}

3.6.3 成绩管理

当教师提交成绩后(教师只能提交一次成绩),可能因为手误或者录入后没有没有经过仔细检查,导致学生成绩录入的错误,这时候教师可以在学生的要求下向系统管理员提出申请,对成绩进行修改。

图3-16成绩管理

实现思路:通过学号可以查看学生的成绩,并且,如果成绩录入有误的话,管理员可以在同学的要求和教师的申请下对学习成绩进行修改。

成绩管理关键代码:

public void updateScore(int score, string teaID, string courseID, string stuID, double Credit)

{

 sqlstr = "update Elect set Score = '" + score + "', Credit = '" + Credit + "' where stuID = '" + stuID + "' and teaID = '" + teaID + "' and courseID = '" + courseID + "'";

 db.RunProc(sqlstr);

}

3.6.4 添加教师

该功能提供给系统管理员,如学校新骋用了教师,管理员就可以该功能,向Teacher表中添加教师信息。

图3-17添加教师

实现思路:有新教师加入时候,需要将教师的基本信息添加到Teacher表,以便于后期的管理。

添加教师关键代码:

public void AddTea(string teaID, string teaPwd, string teaName, string teaSex, int departID, string position)

{

 sqlstr = "insert into Teacher(teaID, teaPwd, teaName, teaSex, departID, teaPosition) values('"+teaID+"','"+teaPwd+"', '"+teaName+"', '"+teaSex+"', '"+departID+"', '"+position+"')";

db.RunProc(sqlstr);

}

3.6.5 教师维护

教师维护功能包括修改和删除。可以修改的字段是职称,这是最可能变化的字段。删除功能针对于离职(调离或辞职等特殊情况)的教师。

图3-18教师维护

实现思路:当教师有职位升迁的时候要对教师的进行相应的修改和删除,以便于随时了解教师的动态。

教师维护关键代码:

public void delTea(string teaID)

{

  sqlstr = "delete from Teacher where teaID = '"+teaID+"'";

  db.RunProc(sqlstr);

}

public void updateTea(string teaID, string teaPosition)

{

  sqlstr = "update Teacher set teaPosition = '"+teaPosition+"' where teaID = '"+teaID+"'";

  db.RunProc(sqlstr);

}

3.6.6 课程维护

课程的维护包括课程的添加、修改,以及删除。为了便于管理员的修改操作,管理员可以点击详细,然后课程信息会显示于文本框中,这时一些字段处于可编辑状态,编辑后单击修改,即完成课程信息的更新操作。单击重置,即可进行课程的添加。单击删除,即要完成课程的删除功能。课程的添加及修改如图3-19.3-20所示

图3-19课程维护

图3-20课程添加

实现思路:对于已经取消的课程进行删除操作,对于新开设的课程进行添加操作,对于课程信息有变化的课程进行更新操作。

课程维护关键代码:

public void delCourse(string courseID, string teaID, int classNo)

{

  sqlstr = "delete from Course where courseID = '" + courseID + "' and teaID = '" + teaID + "' and classNo = '" + classNo + "'";

  db.RunProc(sqlstr);

}

public void updateCourse(string courName, string courTime, string courAdd, string courTea, int courClassNo , string courInfo, string courseID)

{

  sqlstr = "update Course set courseName = '" + courName + "', courseTime = '" + courTime + "', courseAddress = '" + courAdd + "', teaID = '" + courTea + "', ClassNo = '" + courClassNo + "', courseInfo = '"+courInfo+"' where  courseID = '"+courseID+"'";

  db.RunProc(sqlstr);

 }

public void AddCourse(string addstr)

{

 sqlstr = "insert into Course(courseID, courseName, courseTime, courseAddress, courseCredit, departID, teaID, classNo, courseInfo)values(" + addstr + ")";

 db.RunProc(sqlstr);

}

总 结

通过近斯的不懈努力,终于完成了本次毕业设计。在设计的过程中,遇到过重重困难,其根源在于基本功不是非常扎实。大学四年,时间过得很快,每学期开设的课程又比较多,造成什么都学,但都没有进行过深入的研究,对知识的掌握程度仅停留在表现层次。造成以上种种,都是因为自己学习的时候没有分清主次,其实要真正学好一门,无论是软件方向,又或者网络方向,在长达四年的时间里,肯定不存在任何任何问题。

通过本次设计,升华了对软件开发流程的掌握,深刻领悟到软件开发核心在于前期的需求分析,即对整个系统的业务流程有较的清晰认识。需求分析的好坏直接影响后期的开发进度的快慢。如果需求分析做得很好,后期的开发将是如鱼得水;反之,则会遇到重得阻碍,甚至可能停步不前。在需求分析的基础上,接下来就是系统数据库的设计。从某种意义上讲,数据库的设计在整个设计过程中起着决定性的作用,其设计的科学性为后期的开发提供便利,因为,就网站的业务流程而言,其实质就是对数据库的操作。

总之,这是一次很好的学以致用的机遇,是对前面四年所学的一次系统总结,从一定程度上提高了动手能力。

参考文献

[1]吴晨,《ASP.NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月

[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月

[3](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月

[4](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月

[5]  Addison Wesley. A First Look at ADO.NET and System.Xml. 清华大学出版社,2006.10

[6]  李春葆,赵丙秀,张牧. 数据库系统开发教程. 北京:清华大学出版社,2008,125~150

[7]  明日科技. ASP.NET数据库系统开发案例精选. 北京:人民邮电出版社,2007,46~52

[8] 黎卫东. ASP.NET网络开发入门与实践. 北京:人民邮电出版社,2006年11月. 

[9] 刘振岩.基于.NET的WEB程序设计——ASP.NET标准教程.北京:电子工业出版社,2006年9月.

[10] 刘克成,张凌晓. C#程序设计. 北京:中国铁道出版社,2007年3月. 

[11] 张树亮 李超. ASP.NET 2.0+SQL Server网络应用系统开发案例精解.北京:清华大学出版社,2006年9月. 

[12] 郝刚. ASP.NET 2.0开发指南[M].北京:人民邮电出版社,2006年5月.

[13] 代方震,陈冠军. Visualc#2005程序设计从入门到精通.北京:人民邮电出版社,2007年9月.

致谢

毕业设计是大学毕业前夕的重要环节之一,这是学校提供的一次实践机遇,通次毕业设计可以将大学几年所学作一个很好的总结。因此,首先要感谢学校。

其次,老师在毕业设计的过程中扮演着重要角色。在毕业设计所在的教室或实验室,每天都有好几位老师值班,没有他们的辛苦付出,学生的自觉性恐怕要大打折扣。因此,要感谢值班教师。

打交道最多的要数指导老师,是他给了我们本次设计的机会,没有他的悉心指导,很多任务可能都无法完成,可能导致无法达到预期目标。

在整个系统的设计过程中,还有很多人对任务的完成给予了帮助和支持。感谢许多同学在我不明白的问题上提供的帮助;同时,网络上的资源也给了我很多的启迪和很大的帮助,感谢这些无名英雄分享他们的经验

文档

大学生公选课管理系统

SHANDONGUNIVERSITYOFTECHNOLOGY毕业设计说明书大学生公选课管理系统学院:计算机科学与技术专业:计算机科学与技术学生姓名:学号:指导教师:2012年6月摘要随着在校大学生人数的不断增加,教务系统的数据量也在不断的上涨,针对学生公选课这一环节,本系统从学生自主选课、教师成绩录入,以及管理员课程发布三大方面进行了设计。实现了三种不同用户角色的权限范围内的不同功能。针对学生,本系统提供个人信息查询、选课、退选、个人信息修改,以及密码修改等功能;对于教师,本系统提供选课情况查
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top