基于C#+SQL Server实现(Web)学生选课管理系统

发布于:2025-07-21 ⋅ 阅读:(12) ⋅ 点赞:(0)

学生选课管理系统的设计与开发

一、项目背景

学生选课管理系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提高学校的管理效率,有助于推进学校的信息化建设。

二、技术选型

C#的窗体程序开发

本系统未采用C#实现MDI——多文档窗口,因为考虑到C#的该技术与java类似,而暑期java实训时,曾用过类似的方法做过停车场管理系统,所以想为这次的系统注入一点新鲜的血液,所以本系统设计的主题采用了了C#的C#TreeView 实现。

Sql server数据库

三、需求分析

本系统只有一类用户:管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程等。

3.1 管理员角色拥有的功能

管理员信息管理

  • 添加管理员信息;
  • 管理员可以添加其他的管理员信息。
  • 修改管理员信息;
  • 管理员可以删除其他的管理员信息。

课程管理

  • 开设课程;
  • 管理员可以录入课程信息,学生就可以浏览到这些课程信息,从而选课。
  • 查询课程;
  • 可以通过学期查询课程,或通过学期和课程结合的方式查询课程。

四、数据库设计

4.1 完成系统中数据表的结构设计

管理员信息表

用户表:UserInfo

字段名称

数据类型

可空

默认值

说明

id

nvarchar(20)

不可

主键,管理员id

name

nvarchar(20)

不可

管理员姓名

pwd

nvarchar(50)

不可

管理员密码

sex

nvarchar(5)

不可

管理员性别

学生选课信息表

管理员信息表:CourseInfo

字段名称

数据类型

可空

默认值

说明

id

int

不可

自动增长

主键,课程id

name

nvarchar(100)

不可

课程名称

kcms

nvarchar(500)

不可

课程描述

xkrq

DATETIME

不可

学生选课日期

xkxs

nvarchar(20)

不可

选课学生

五、界面设计

登录界面:

注册界面:

5.1 管理员角色

管理员界面:

管理员账号添加界面:

选课信息查询界面:

添加选课信息界面:

六、关键技术的介绍

使用模板来搭建框架,减少每个页面的代码量,同时方便修改

具体代码如下:

Site1.Master
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="MySite.Site1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title>温州理工学院学生选课管理信息系统</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <style type="text/css">
      .auto-style1 {
        height: 90px;
      }
    </style>
  </head>
  <body bgcolor="#c0c0c0">
    <center>
      <form id="form1" runat="server">
        <div>

          <table width="780" bgcolor="#FFFFFF" border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td>
                <img src="images/01.gif" width="780" height="120" alt=""></td>
            </tr>
            <tr>
              <td>
                <table border="0" width="100%" cellspacing="0" cellpadding="0" background="images/02.gif">
                  <tr>
                    <td height="40" width="180" align="center">
                      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    </td>
                    <td class="ClassTitle">
                      <asp:Label runat="server" Text="欢迎进入温州理工学院学生选课管理信息系统"></asp:Label>
                      |
                      <asp:Label ID="lbId" runat="server" Text="Label"></asp:Label>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
          <table width="780" bgcolor="#FFFFFF" border="1" cellpadding="0" cellspacing="0">
            <tr>
              <td height="450" width="180" valign="top" align="center">
                <table border="0" width="170" cellspacing="0" cellpadding="0" class="auto-style1">
                  <tr>
                    <td><a href="Index.aspx">信息系统用户管理</a></td>
                  </tr>
                  <tr>
                    <td><a href="AddUser.aspx">添加用户</a></td>
                  </tr>
                  <tr>
                    <td><a href="Index2.aspx">学生选课查询</a></td>
                  </tr>
                  <tr>
                    <td><a href="AddSafe.aspx">添加选课信息</a></td>
                  </tr>
                </table>
              </td>
              <td height="450px" valign="top" style="padding-top:10px" align="center">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                            </asp:ContentPlaceHolder>
                        </td>
                    </tr>
                </table>
                <table border="0" width="780" cellspacing="0" cellpadding="0">
                    <tr>
                        <td background="images/04.gif" height="29" align="center" class="ClassTitle">联系我们&nbsp;&nbsp; 
           <a href="login.aspx">管理员登录</a></td>
                    </tr>
                </table>
            </div>
        </form>
    </center>
</body>
</html>

Site1.Master.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;

namespace MySite
{
    public partial class Site1 : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {                
                Label1.Text = DateTime.Today.Date.ToString("yyyy年MM月dd日");
                if (Session["Id"]!=null)
                {
                    lbId.Text = Session["Id"].ToString();
                }
            }
        }
    }
}
使用自创类来处理每个页面的数据库访问操作

包括:数据库连接、构建数据库查找字符串、对搜索数据进行分类判断、返回封装好的数据对象、对异常数据的冲突处理等

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;


namespace MySite
{
    public class SiteDAL
    {
        private SqlConnection sqlcon;
        private SqlCommand sqlcom;
        private string strCon = "server=(local);uid=lqc;pwd=123;database=SCMS";

        public DataSet GetUser(string id, string name ,string sex)
        {
            string sqlstr = "select * from UserInfo where 1=1 ";
            if (id != "" && id != null)
            {
                sqlstr = sqlstr + " And (Id = '" + id + "')";
            }
            else
            {
                if (name != "" && name != null)
                {
                    sqlstr = sqlstr + " And (Id like '%" + name + "%' Or name like '%" + name + "%')";
                }
            }
            if (sex != "全部")
            {
                sqlstr = sqlstr + " And Sex='" + sex + "'";
            }
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "user");            
            sqlcon.Close();
            return myds;
        }

        internal int DeleteSafe(string Id)
        {
            string sqlstr = "delete from CourseInfo where Id='" + Id + "'";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result = sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }

        internal DataSet GetSafe(string id ,string name, DateTime? xkrq)
        {
            string sqlstr = "select * from CourseInfo where 1=1 ";
            if (!string.IsNullOrEmpty(id))
            {
                sqlstr = sqlstr + " And (Id = " + id + ")";
            }
            else
            {
                if (name != "" && name != null)
                {
                    sqlstr = sqlstr + " And (Name like '%" + name + "%')";
                }
                if (xkrq!=null)
                {
                    sqlstr = sqlstr + " And (xkrq = '" + xkrq.Value.ToString("yyyy-MM-dd") + "')";
                }
            }
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "food");
            sqlcon.Close();
            return myds;
        }

        public int DeleteUser(string Id)
        {
            string sqlstr = "delete from UserInfo where Id='" + Id + "'";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result= sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }

        public int UpdateUser(string id, string name, string pwd ,string sex)
        {
            string sqlstr = "update UserInfo set name='" + name + "',Pwd='" + pwd + "',Sex='" + sex + "' where Id='" + id + "'";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result = sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }
        public int AddUser(string id, string name, string pwd, string sex)
        {
            string sqlstr = "insert into UserInfo(Id,Name,Pwd,Sex)values('" + id + "','" + name + "','" + pwd + "','" + sex + "')";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result = sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }
        public int UpdateSafe(int id, string name, string kcms, DateTime xkrq, string xkxs)
        {
            string sqlstr = "update CourseInfo set Name='" + name + "',kcms='" + kcms + "',xkrq='" + xkrq.ToString("yyyy-MM-dd")+ "',xkxs='" + xkxs + "' where Id=" + id;
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result = sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }


        public int AddSafe(string name, string kcms, DateTime xkrq, string xkxs)
        {
            string sqlstr = "insert into CourseInfo(name,kcms,xkrq,xkxs)values('" + name + "','" + kcms + "','" + xkrq.ToString("yyyy-MM-dd") + "','" + xkxs + "')";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr, sqlcon);
            sqlcon.Open();
            int result = sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            return result;
        }
    }
}

七、完成情况总结

经过一周的努力,从一开始不知道从什么地方下手到项目最终成功运行起来,我完成了学生选课信息管理系统的开发与设计。然而我只是设计出了主要的功能,项目还有很多地方可以优化,比如优化数据库的访问速度、增加学生数据库和课程数据库来分别存储不同类型的数据信息等。

在这次大作业项目的开发过程中,我遇到了数不胜数的BUG,但是都通过生科学习到的知识或者上网搜索完美的解决了,我从课堂学习的碎片化的知识中整理出比较系统的知识体系,加上自己的理解,最终写出了这个信息管理系统。从中学习到的模板利用以及代码复用的思想让我获益良多,对以后开发别的项目都有极大的好处。

通过这次实验,使我对软件开发有了更深一步的了解。在软件开发中应注意的问题和考虑的问题都能较好的做到。


网站公告

今日签到

点亮在社区的每一天
去签到