.NET体系及编程实验——学生信息管理系统

学生信息管理系统实验要求:

实现一个学生信息管理系统,主要包括以下功能模块:

前台:

(1)用户注册登录;

(2)学生信息查询;

(3)教师信息查询;

(4)课程信息查询;

(5)学生成绩查询。

后台:

(1)学生信息管理;

(2)教师信息管理;

(3)班级信息管理;

(4)课程信息管理;

1)课程信息浏览;

2)课程信息添加、修改和删除;

3)学校为所设课程分配任课教师。

(5)学生成绩管理。

1)学生成绩浏览和统计,可按系、班级、课号、年度等条件对成绩进行统计,并将统计结果导出到Word或Execl文档中;

2)学生成绩信息添加、修改和删除;

以下为正式内容:

一、实验目的

1. 熟练运用ASP.NET服务器控件、ASP.NET内置对象以及ADO.NET数据库访问技术;

2. 掌握使用ASP.NET开发Web应用程序的基本方法和基本技能;

3. 综合运用“.Net体系及编程”课程所学知识,设计并实现一个完整的ASP.NET Web应用系统。

二、实验内容

1. 系统功能模块图

学生信息管理系统主要是由登录、注册、主页面、查看学生信息,查看教师信息,查看课程信息,查看班级信息,查看成绩信息,学生信息修改,教师信息修改,课程信息修改,成绩修改,筛选与导出页面所组成。

登录,会验证数据库中有的用户,存在的用户才能够登录

注册,没有账号的用户需要先进行注册,在数据库中存入数据,然后回返回登陆界面,点击登录

主页面是所有页面的导航,点击想要去的页面实现跳转

学生信息页面,会查询出所有学生的信息,并在页面显示

教师信息页面,会查询出所有教室信息,并在页面显示

课程信息页面,会查询所有课程信息,并在页面进行显示

班级信息页面,会查询所有班级信息,并在页面进行显示

成绩查询页面,根据输入的学号,查询出所对应的学生的成绩,并在页面进行显示

学生信息修改页面,我们可以对学生信息进行修改,或者添加新的学生,并且把更改添加以后的数据存入数据库

教师信息修改页面,我们可以对教师信息进行修改,或者添加新的教师,并且把更改添加以后的数据存入数据库

课程信息修改页面,我们可以对课程信息进行修改,或者添加新的课程,并且把更改添加以后的数据存入数据库

成绩信息修改页面,我们可以对成绩信息进行修改,或者添加新的成绩,并且把更改添加以后的数据存入数据库

筛选与导出页面,实现成绩的筛选,并且还可以对筛选后的成绩导出为表格文件

2.数据库设计

3.系统展示(附加代码)

登录界面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="shouye.aspx.cs" Inherits="LoginDemo.Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>身份选择</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            width: 300px;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        h2 {
            color: #333;
            margin-bottom: 20px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
        .btn {
            display: inline-block;
            width: 100%;
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .btn:hover {
            background-color: #0056b3;
        }
        .message {
            margin-top: 15px;
            color: red;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>选择您的身份登录</h2>
            <div class="form-group">
                <asp:RadioButtonList ID="rblRoles" runat="server" CssClass="form-control">
                    <asp:ListItem Text="学生" Value="Student"></asp:ListItem>
                    <asp:ListItem Text="教师" Value="Teacher"></asp:ListItem>
                    <asp:ListItem Text="管理员" Value="Admin"></asp:ListItem>
                </asp:RadioButtonList>
            </div>
            <asp:Button ID="btnLogin" runat="server" Text="登录" CssClass="btn" OnClick="btnLogin_Click" />
        </div>
    </form>
</body>
</html>
using System;

namespace LoginDemo
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            // 获取选中的角色
            string selectedRole = rblRoles.SelectedValue;

            // 根据角色跳转到相应页面
            switch (selectedRole)
            {
                case "Student":
                    Response.Redirect("Loginxuesheng.aspx");
                    break;
                case "Teacher":
                    Response.Redirect("Loginjiaoshi.aspx");
                    break;
                case "Admin":
                    Response.Redirect("Login.aspx");
                    break;
                default:
                    // 默认情况下跳转到错误页面

                    break;
            }
        }
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="JWXT.Login" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Login Page</title>
    <style>
        body, html {
            height: 100%;
            margin: 0;
            background-image: url('path/to/your/image.jpg'); /* 设置背景图片 */
            background-size: cover; /* 背景图片按比例缩放填充页面 */
            background-repeat: no-repeat; /* 背景图片不平铺 */
            background-position: center; /* 背景图片居中 */
        }
        .container {
            background: rgba(255, 255, 255, 0.8); /* 半透明白色背景 */
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); /* 添加阴影效果 */
            width: 300px;
            margin: auto;
            margin-top: 100px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-control {
            width: 100%; /* 宽度占满父元素 */
            padding: 10px; /* 内边距 */
            box-sizing: border-box; /* 包括内边距和边框在内的总宽度 */
            border: 1px solid #ccc; /* 边框样式 */
            border-radius: 5px; /* 圆角边框 */
        }
        .btn {
            width: 100%;
            padding: 10px; /* 按钮内边距 */
            border: none; /* 移除默认边框 */
            border-radius: 5px; /* 圆角边框 */
            background-color: #007BFF; /* 按钮背景颜色 */
            color: white; /* 按钮文字颜色 */
            cursor: pointer; /* 鼠标悬停样式 */
            margin-bottom: 10px;
        }
        .btn:hover {
            background-color: #0056b3; /* 按钮悬停背景颜色 */
        }
        .lblMessage {
            display: block; /* 块级元素 */
            margin-top: 10px; /* 上边距 */
        }
        label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h1>学生信息管理系统</h1>
            <div class="form-group">
                <label for="txtUsername">账号:</label>
                <asp:TextBox ID="txtUsername" runat="server" CssClass="form-control" placeholder="Username"></asp:TextBox>
            </div>
            <div class="form-group">
                <label for="txtPassword">密码:</label>
                <asp:TextBox ID="txtPassword" runat="server" CssClass="form-control" TextMode="Password" placeholder="Password"></asp:TextBox>
            </div>
            <asp:Button ID="btnLogin" runat="server" CssClass="btn" Text="登录" OnClick="btnLogin_Click" />
            <asp:Button ID="btnRegister" runat="server" CssClass="btn" Text="注册" OnClick="btnRegister_Click" />
            <asp:Label ID="lblMessage" runat="server" CssClass="lblMessage" ForeColor="Red"></asp:Label>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data.SqlClient;

namespace JWXT
{
    public partial class Login : Page
    {
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            string username = txtUsername.Text;
            string password = txtPassword.Text;

            string connectionString = "Data Source=艾砾;Initial Catalog=StudentManagementDB;Integrated Security=True";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                string query = "SELECT COUNT(*) FROM Users WHERE Username = @Username AND Password = @Password";
                SqlCommand command = new SqlCommand(query, connection);
                command.Parameters.AddWithValue("@Username", username);
                command.Parameters.AddWithValue("@Password", password);

                connection.Open();
                int count = (int)command.ExecuteScalar();

                if (count > 0)
                {
                    // 登录成功后跳转到主页或其他页面
                    Response.Redirect("MainPage.aspx");
                }
                else
                {
                    // 登录失败,显示错误消息或其他操作
                    lblMessage.Text = "无效的用户名或密码";
                }
            }
        }

        protected void btnRegister_Click(object sender, EventArgs e)
        {
            // 跳转到注册页面
            Response.Redirect("Register.aspx");
        }
    }
}

密码出错误时:

注册页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="JWXT.Register" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>注册页面</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            width: 300px;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        h2 {
            color: #333;
        }
        .form-group {
            margin-bottom: 15px;
            text-align: left;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
        .btn {
            display: inline-block;
            width: 100%;
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .btn:hover {
            background-color: #0056b3;
        }
        .message {
            margin-top: 15px;
            color: red;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>注册</h2>
            <div class="form-group">
                <label for="txtNewUsername">用户名</label>
                <asp:TextBox ID="txtNewUsername" runat="server" placeholder="请输入用户名" CssClass="form-control" />
            </div>
            <div class="form-group">
                <label for="txtNewPassword">密码</label>
                <asp:TextBox ID="txtNewPassword" runat="server" TextMode="Password" placeholder="请输入密码" CssClass="form-control" />
            </div>
            <asp:Button ID="btnRegister" runat="server" Text="注册" CssClass="btn" OnClick="btnRegister_Click" />
            <asp:Label ID="lblMessage" runat="server" CssClass="message"></asp:Label>
             <asp:Button ID="btnLogout" runat="server" Text="返回" CssClass="btn" OnClick="btnLogout_Click" />
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace JWXT
{
    public partial class Register : Page
    {
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            string username = txtNewUsername.Text;
            string password = txtNewPassword.Text;

            string connectionString = "Data Source=艾砾;Initial Catalog=StudentManagementDB;Integrated Security=True";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                // 检查用户名是否已存在
                string checkUserQuery = "SELECT COUNT(*) FROM Users WHERE Username = @Username";
                using (SqlCommand checkUserCmd = new SqlCommand(checkUserQuery, connection))
                {
                    checkUserCmd.Parameters.AddWithValue("@Username", username);
                    int userCount = (int)checkUserCmd.ExecuteScalar();

                    if (userCount > 0)
                    {
                        lblMessage.Text = "Username already exists.";
                        return;
                    }
                }

                // 插入新用户
                string insertUserQuery = "INSERT INTO Users (Username, Password) VALUES (@Username, @Password)";
                using (SqlCommand insertUserCmd = new SqlCommand(insertUserQuery, connection))
                {
                    insertUserCmd.Parameters.AddWithValue("@Username", username);
                    insertUserCmd.Parameters.AddWithValue("@Password", password);
                    insertUserCmd.ExecuteNonQuery();

                    // 注册成功后跳转到登录页面
                    Response.Redirect("Login.aspx");
                }

            }
        }
        protected void btnLogout_Click(object sender, EventArgs e)
        {
            // 注销逻辑
            Response.Redirect("Login.aspx");
        }
    }
}

学生端主页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPagexueshneg.aspx.cs" Inherits="JWXT.MainPagexueshneg" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Main Page</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
        }
        .container {
            max-width: 600px;
            margin: 50px auto;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            text-align: center;
            color: #333;
        }
        p {
            text-align: center;
            color: #666;
        }
        .btn {
            display: block;
            width: 100%;
            padding: 10px 0;
            margin: 10px 0;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .btn:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h1>学生信息管理系统</h1>
            <p>服务大厅:</p> 
            <asp:Button ID="btnCourseInfo" runat="server" Text="课程信息" CssClass="btn" OnClick="btnCourseInfo1_Click" />
            <asp:Button ID="btnTeacherInfo" runat="server" Text="教师信息" CssClass="btn" OnClick="btnTeacherInfo1_Click" />
            <asp:Button ID="btnStudentGrades" runat="server" Text="成绩查询" CssClass="btn" OnClick="btnStudentGrades1_Click" />
            <asp:Button ID="btnLogout" runat="server" Text="注       销" CssClass="btn" OnClick="btnLogout1_Click" />
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;



namespace JWXT
{
    public partial class MainPagexueshneg : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 页面加载时的逻辑
        }

        protected void btnCourseInfo1_Click(object sender, EventArgs e)
        {
            // 跳转到课程信息页面
            Response.Redirect("CourseInfo.aspx");
        }

        protected void btnTeacherInfo1_Click(object sender, EventArgs e)
        {
            // 跳转到教师信息页面
            Response.Redirect("TeacherInfo.aspx");
        }

        protected void btnStudentGrades1_Click(object sender, EventArgs e)
        {
            // 跳转到学生成绩页面
            Response.Redirect("StudentGrades.aspx");
        }

        protected void btnLogout1_Click(object sender, EventArgs e)
        {
            // 注销逻辑
            Response.Redirect("shouye.aspx");
        }
    }
}

 教师端主页面:

(代码与上面学生端大同小异)

教务端主页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="JWXT.MainPage" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Main Page</title>
    <style>
        body {
            font-family: Arial, sans-serif; /* 设置字体 */
            background-color: #f0f8ff; /* 设置背景颜色 */
            margin: 0;
            padding: 0;
        }
        .container {
            max-width: 600px; /* 最大宽度 */
            margin: 50px auto; /* 居中显示 */
            padding: 20px;
            background-color: #fff; /* 背景颜色 */
            border-radius: 10px; /* 边框圆角 */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影 */
        }
        h1 {
            text-align: center; /* 标题居中 */
            color: #333; /* 标题颜色 */
        }
        p {
            text-align: center; /* 段落居中 */
            color: #666; /* 段落颜色 */
        }
        .btn {
            display: block;
            width: 100%;
            padding: 10px 0;
            margin: 10px 0;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease; /* 添加过渡效果 */
        }
        .btn:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h1>学生信息管理系统</h1>
            <p>服务大厅:</p>
            <asp:Button ID="btnStudentInfo" runat="server" Text="学生信息" CssClass="btn" OnClick="btnStudentInfo_Click" />
            <asp:Button ID="btnCourseInfo" runat="server" Text="课程信息" CssClass="btn" OnClick="btnCourseInfo_Click" />
            <asp:Button ID="btnTeacherInfo" runat="server" Text="教师信息" CssClass="btn" OnClick="btnTeacherInfo_Click" />
            <asp:Button ID="btnClassManagement" runat="server" Text="班级管理" CssClass="btn" OnClick="btnClassManagement_Click" />
            <asp:Button ID="btnCourseManagement" runat="server" Text="课程管理" CssClass="btn" OnClick="btnCourseManagement_Click" />
            <asp:Button ID="btnGradeManagement" runat="server" Text="成绩管理" CssClass="btn" OnClick="btnGradeManagement_Click" />
            <asp:Button ID="btnStudentGrades" runat="server" Text="成绩查询" CssClass="btn" OnClick="btnStudentGrades_Click" />
            <asp:Button ID="btnStudentManagement" runat="server" Text="学生管理" CssClass="btn" OnClick="btnStudentManagement_Click" />
            <asp:Button ID="btnTeacherManagement" runat="server" Text="教师管理" CssClass="btn" OnClick="btnTeacherManagement_Click" />
            <asp:Button ID="btnFilterAndExport" runat="server" Text="筛选导出" CssClass="btn" OnClick="btnFilterAndExport_Click" />
            <asp:Button ID="btnLogout" runat="server" Text="注       销" CssClass="btn" OnClick="btnLogout_Click" />
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace JWXT
{
    public partial class MainPage : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 页面加载时的逻辑
        }

        protected void btnStudentInfo_Click(object sender, EventArgs e)
        {
            // 跳转到学生信息页面
            Response.Redirect("StudentInfo.aspx");
        }

        protected void btnTeacherInfo_Click(object sender, EventArgs e)
        {
            // 跳转到教师信息页面
            Response.Redirect("TeacherInfo.aspx");
        }

        protected void btnCourseInfo_Click(object sender, EventArgs e)
        {
            // 跳转到课程信息页面
            Response.Redirect("CourseInfo.aspx");
        }

       

        protected void btnClassManagement_Click(object sender, EventArgs e)
        {
            // 跳转到班级管理页面
            Response.Redirect("ClassManagement.aspx");
        }

        protected void btnCourseManagement_Click(object sender, EventArgs e)
        {
            // 跳转到课程管理页面
            Response.Redirect("CourseManagement.aspx");
        }

        protected void btnGradeManagement_Click(object sender, EventArgs e)
        {
            // 跳转到成绩管理页面
            Response.Redirect("GradeManagement.aspx");
        }

        protected void btnStudentGrades_Click(object sender, EventArgs e)
        {
            // 跳转到学生成绩页面
            Response.Redirect("StudentGrades.aspx");
        }

        protected void btnStudentManagement_Click(object sender, EventArgs e)
        {
            // 跳转到学生管理页面
            Response.Redirect("StudentManagement.aspx");
        }

        protected void btnTeacherManagement_Click(object sender, EventArgs e)
        {
            // 跳转到教师管理页面
            Response.Redirect("TeacherManagement.aspx");
        }

        protected void btnFilterAndExport_Click(object sender, EventArgs e)
        {
            // 跳转到筛选导出页面
            Response.Redirect("FilterAndExport.aspx");
        }
        protected void btnLogout_Click(object sender, EventArgs e)
        {
            // 注销逻辑
            Response.Redirect("shouye.aspx");
        }
    }
}

 下面开始分个介绍功能:

学生信息:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StudentInfo.aspx.cs" Inherits="JWXT.StudentInfo" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>学生信息</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            width: 600px;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        h2 {
            color: #333;
            margin-bottom: 20px;
        }
        .aspNet-GridView {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
        .aspNet-GridView th, .aspNet-GridView td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
        }
        .aspNet-GridView th {
            padding-top: 12px;
            padding-bottom: 12px;
            background-color: #007bff;
            color: white;
        }
        .aspNet-GridView tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        .aspNet-GridView tr:hover {
            background-color: #ddd;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>学生信息</h2>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="aspNet-GridView">
                <Columns>
                    <asp:BoundField DataField="StudentId" HeaderText="学生ID" />
                    <asp:BoundField DataField="Name" HeaderText="姓名" />
                    <asp:BoundField DataField="BirthDate" HeaderText="出生日期" />
                    <asp:BoundField DataField="ClassId" HeaderText="班级ID" />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


using System.Configuration;
using System.Data;
using System.Data.SqlClient;


namespace JWXT
{
    public partial class StudentInfo : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
            }
        }

        private void BindGridView()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 更新查询以匹配实际的数据库列名
                string query = "SELECT StudentId, Name, BirthDate, ClassId FROM Students";
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                DataTable dt = new DataTable();
                adapter.Fill(dt);

                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
    }
}

 课程信息:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CourseInfo.aspx.cs" Inherits="JWXT.CourseInfo" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Course Info</title>
    <style>
        body {
            font-family: Arial, sans-serif; /* 设置字体 */
            background-color: #f0f8ff; /* 设置背景颜色 */
            margin: 0;
            padding: 0;
        }
        .container {
            max-width: 800px; /* 最大宽度 */
            margin: 50px auto; /* 居中显示 */
            padding: 20px;
            background-color: #fff; /* 背景颜色 */
            border-radius: 10px; /* 边框圆角 */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影 */
        }
        h2 {
            text-align: center; /* 标题居中 */
            color: #333; /* 标题颜色 */
        }
        .grid-view {
            width: 100%;
            border-collapse: collapse; /* 合并边框 */
            margin-top: 20px; /* 添加顶部外边距 */
        }
        .grid-view th, .grid-view td {
            padding: 10px;
            border: 1px solid #ddd;
            text-align: left;
        }
        .grid-view th {
            background-color: #f2f2f2;
        }
        .form-group {
            margin: 15px 0;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>课程信息</h2>
            <asp:GridView ID="GridView1" runat="server" CssClass="grid-view" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="CourseId" HeaderText="课程号" />
                    <asp:BoundField DataField="CourseName" HeaderText="课程名称" />
                    <asp:BoundField DataField="TeacherId" HeaderText="教师ID" />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


using System.Configuration;
using System.Data;
using System.Data.SqlClient;


namespace JWXT
{
    public partial class CourseInfo : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
            }
        }

        private void BindGridView()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 更新查询以匹配实际的数据库列名
                string query = "SELECT CourseId, CourseName, TeacherId FROM Courses";
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                DataTable dt = new DataTable();
                adapter.Fill(dt);

                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
    }
}

教师信息:

(代码与上大同小异,就是链接数据库显示)

班级管理:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ClassManagement.aspx.cs" Inherits="JWXT.ClassManagement" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Class Management</title>
    <style>
        body {
            font-family: Arial, sans-serif; /* 设置字体 */
            background-color: #f0f8ff; /* 设置背景颜色 */
            margin: 0;
            padding: 0;
        }
        .container {
            max-width: 800px; /* 最大宽度 */
            margin: 50px auto; /* 居中显示 */
            padding: 20px;
            background-color: #fff; /* 背景颜色 */
            border-radius: 10px; /* 边框圆角 */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* 添加阴影 */
        }
        h2 {
            text-align: center; /* 标题居中 */
            color: #333; /* 标题颜色 */
        }
        .btn {
            display: inline-block;
            padding: 10px 20px;
            margin: 10px 0;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease; /* 添加过渡效果 */
            text-align: center;
            text-decoration: none;
        }
        .btn:hover {
            background-color: #0056b3;
        }
        .grid-view {
            width: 100%;
            border-collapse: collapse; /* 合并边框 */
        }
        .grid-view th, .grid-view td {
            padding: 10px;
            border: 1px solid #ddd;
            text-align: left;
        }
        .grid-view th {
            background-color: #f2f2f2;
        }
        .form-group {
            margin: 15px 0;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>班级管理</h2>
            <asp:GridView ID="GridView1" runat="server" CssClass="grid-view" AutoGenerateColumns="False" DataKeyNames="ClassId" OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting">
                <Columns>
                    <asp:BoundField DataField="ClassId" HeaderText="班级号" ReadOnly="True" />
                    <asp:BoundField DataField="ClassName" HeaderText="班级名称" />
                    <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
                </Columns>
            </asp:GridView>
            <asp:Button ID="btnAdd" runat="server" CssClass="btn" Text="添加新班级" OnClick="btnAdd_Click" />
            <asp:Panel ID="pnlAddClass" runat="server" Visible="False">
                <h3></h3>
                <div class="form-group">
                    <label for="txtClassName">班级名称:</label>
                    <asp:TextBox ID="txtClassName" runat="server" CssClass="form-control" />
                </div>
                <asp:Button ID="btnSave" runat="server" CssClass="btn" Text="保存" OnClick="btnSave_Click" />
                <asp:Button ID="btnCancel" runat="server" CssClass="btn" Text="取消" OnClick="btnCancel_Click" />
            </asp:Panel>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace JWXT
{
    public partial class ClassManagement : Page
    {
        // 页面加载事件
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) // 检查是否是首次加载页面
            {
                BindGridView(); // 绑定GridView控件的数据
            }
        }

        // 绑定GridView控件的数据
        private void BindGridView()
        {
            // 从配置文件中获取数据库连接字符串
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            // 使用SqlConnection连接数据库
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 查询Classes表中的ClassId和ClassName列
                string query = "SELECT ClassId, ClassName FROM Classes";
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection); // 使用SqlDataAdapter填充DataTable
                DataTable dt = new DataTable();
                adapter.Fill(dt); // 填充数据表

                GridView1.DataSource = dt; // 设置GridView的数据源
                GridView1.DataBind(); // 绑定数据到GridView控件
            }
        }

        // 处理GridView控件的行编辑事件
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex; // 设置编辑行的索引
            BindGridView(); // 重新绑定GridView控件的数据
        }

        // 处理GridView控件的行取消编辑事件
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1; // 重置编辑行的索引
            BindGridView(); // 重新绑定GridView控件的数据
        }

        // 处理GridView控件的行更新事件
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = GridView1.Rows[e.RowIndex]; // 获取正在编辑的行
            int classId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]); // 获取ClassId
            string className = (row.Cells[1].Controls[0] as TextBox).Text; // 获取ClassName

            // 从配置文件中获取数据库连接字符串
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            // 使用SqlConnection连接数据库
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 更新Classes表中的ClassName列
                string query = "UPDATE Classes SET ClassName = @ClassName WHERE ClassId = @ClassId";
                SqlCommand cmd = new SqlCommand(query, connection); // 使用SqlCommand执行SQL语句
                cmd.Parameters.AddWithValue("@ClassName", className); // 添加ClassName参数
                cmd.Parameters.AddWithValue("@ClassId", classId); // 添加ClassId参数

                connection.Open(); // 打开数据库连接
                cmd.ExecuteNonQuery(); // 执行SQL语句
                connection.Close(); // 关闭数据库连接
            }

            GridView1.EditIndex = -1; // 重置编辑行的索引
            BindGridView(); // 重新绑定GridView控件的数据
        }

        // 处理GridView控件的行删除事件
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int classId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]); // 获取ClassId

            // 从配置文件中获取数据库连接字符串
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            // 使用SqlConnection连接数据库
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 删除Classes表中的记录
                string query = "DELETE FROM Classes WHERE ClassId = @ClassId";
                SqlCommand cmd = new SqlCommand(query, connection); // 使用SqlCommand执行SQL语句
                cmd.Parameters.AddWithValue("@ClassId", classId); // 添加ClassId参数

                connection.Open(); // 打开数据库连接
                cmd.ExecuteNonQuery(); // 执行SQL语句
                connection.Close(); // 关闭数据库连接
            }

            BindGridView(); // 重新绑定GridView控件的数据
        }

        // 处理添加按钮的点击事件,显示添加面板
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            pnlAddClass.Visible = true; // 显示添加面板
        }

        // 处理保存按钮的点击事件,保存新的班级信息
        protected void btnSave_Click(object sender, EventArgs e)
        {
            string className = txtClassName.Text; // 获取ClassName

            // 从配置文件中获取数据库连接字符串
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

            // 使用SqlConnection连接数据库
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 向Classes表中插入新的记录
                string query = "INSERT INTO Classes (ClassName) VALUES (@ClassName)";
                SqlCommand cmd = new SqlCommand(query, connection); // 使用SqlCommand执行SQL语句
                cmd.Parameters.AddWithValue("@ClassName", className); // 添加ClassName参数

                connection.Open(); // 打开数据库连接
                cmd.ExecuteNonQuery(); // 执行SQL语句
                connection.Close(); // 关闭数据库连接
            }

            pnlAddClass.Visible = false; // 隐藏添加面板
            BindGridView(); // 重新绑定GridView控件的数据
        }

        // 处理取消按钮的点击事件,隐藏添加面板
        protected void btnCancel_Click(object sender, EventArgs e)
        {
            pnlAddClass.Visible = false; // 隐藏添加面板
        }
    }
}

 成绩管理:

 (代码与上一个相差不多)

学生管理:

(代码相差不多。不在展示) 

教师管理:

 (同上)

成绩查询: 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StudentGrades.aspx.cs" Inherits="JWXT.StudentGrades" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>学生成绩查询</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            width: 600px;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        h2 {
            color: #333;
            margin-bottom: 20px;
        }
        .form-group {
            margin-bottom: 15px;
            text-align: left;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input {
            width: calc(100% - 22px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
        .btn {
            display: inline-block;
            width: 100%;
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .btn:hover {
            background-color: #0056b3;
        }
        .grid-container {
            margin-top: 20px;
        }
        .grid-container .grid-header {
            font-weight: bold;
            background-color: #e0e0e0;
            padding: 10px;
            border-bottom: 2px solid #ccc;
        }
        .grid-container .grid-row {
            padding: 10px;
            border-bottom: 1px solid #ccc;
        }
        .aspNet-GridView {
            width: 100%;
            border-collapse: collapse;
        }
        .aspNet-GridView th, .aspNet-GridView td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
        }
        .aspNet-GridView th {
            padding-top: 12px;
            padding-bottom: 12px;
            background-color: #007bff;
            color: white;
        }
        .aspNet-GridView tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        .aspNet-GridView tr:hover {
            background-color: #ddd;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>学生成绩查询</h2>
            <div class="form-group">
                <label for="txtStudentID">输入学生ID:</label>
                <asp:TextBox ID="txtStudentID" runat="server" CssClass="form-control" />
            </div>
            <asp:Button ID="btnSearch" runat="server" Text="查询" CssClass="btn" OnClick="btnSearch_Click" />
            <div class="grid-container">
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="aspNet-GridView">
                    <Columns>
                        <asp:BoundField DataField="GradeId" HeaderText="成绩ID" />
                        <asp:BoundField DataField="CourseName" HeaderText="课程名称" />
                        <asp:BoundField DataField="Grade" HeaderText="成绩" />
                        <asp:BoundField DataField="Year" HeaderText="学年" />
                    </Columns>
                </asp:GridView>
            </div>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace JWXT
{
    public partial class StudentGrades : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
            }
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            BindGridView();
        }

        private void BindGridView()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;
            int studentID;

            if (int.TryParse(txtStudentID.Text, out studentID))
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    // 查询学生的成绩信息,并包含课程名称
                    string query = @"
                        SELECT 
                            g.GradeId, 
                            c.CourseName, 
                            g.Grade, 
                            g.Year 
                        FROM Grades g
                        JOIN Courses c ON g.CourseId = c.CourseId
                        WHERE g.StudentId = @StudentId";

                    SqlCommand cmd = new SqlCommand(query, connection);
                    cmd.Parameters.AddWithValue("@StudentId", studentID);

                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);

                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }
            }
            else
            {
                // 清空 GridView 数据源
                GridView1.DataSource = null;
                GridView1.DataBind();
            }
        }
    }
}

 筛选导出:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FilterAndExport.aspx.cs" Inherits="JWXT.FilterAndExport" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>学生成绩查询与导出</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f8ff;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            width: 600px;
            padding: 20px;
            background-color: #fff;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            text-align: center;
        }
        h2 {
            color: #333;
            margin-bottom: 20px;
        }
        .form-group {
            margin-bottom: 15px;
            text-align: left;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group select {
            width: calc(100% - 22px);
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
        .btn {
            display: inline-block;
            width: 100%;
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: #007bff;
            color: #fff;
            cursor: pointer;
            transition: background-color 0.3s ease;
        }
        .btn:hover {
            background-color: #0056b3;
        }
        .grid-container {
            margin-top: 20px;
        }
        .aspNet-GridView {
            width: 100%;
            border-collapse: collapse;
        }
        .aspNet-GridView th, .aspNet-GridView td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
        }
        .aspNet-GridView th {
            padding-top: 12px;
            padding-bottom: 12px;
            background-color: #007bff;
            color: white;
        }
        .aspNet-GridView tr:nth-child(even) {
            background-color: #f2f2f2;
        }
        .aspNet-GridView tr:hover {
            background-color: #ddd;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="container">
            <h2>学生成绩查询与导出</h2>
            <div class="form-group">
                <label for="ddlDepartment">选择系:</label>
                <asp:DropDownList ID="ddlDepartment" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>
            <div class="form-group">
                <label for="ddlClass">选择班级:</label>
                <asp:DropDownList ID="ddlClass" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>
            <div class="form-group">
                <label for="ddlCourse">选择课程:</label>
                <asp:DropDownList ID="ddlCourse" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>
            <div class="form-group">
                <label for="ddlYear">选择学年:</label>
                <asp:DropDownList ID="ddlYear" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>
            <asp:Button ID="btnFilter" runat="server" Text="查询" CssClass="btn" OnClick="btnFilter_Click" />
            <asp:Button ID="btnExportExcel" runat="server" Text="导出到Excel" CssClass="btn" OnClick="btnExportExcel_Click" />
            <div class="grid-container">
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="aspNet-GridView">
                    <Columns>
                        <asp:BoundField DataField="Name" HeaderText="学生姓名" />
                        <asp:BoundField DataField="CourseName" HeaderText="课程名称" />
                        <asp:BoundField DataField="Grade" HeaderText="成绩" />
                        <asp:BoundField DataField="Year" HeaderText="学年" />
                    </Columns>
                </asp:GridView>
            </div>
        </div>
    </form>
</body>
</html>
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using OfficeOpenXml;

namespace JWXT
{
    public partial class FilterAndExport : System.Web.UI.Page
    {
        // 从配置文件中获取数据库连接字符串
        string connectionString = ConfigurationManager.ConnectionStrings["SchoolDB"].ConnectionString;

        // 页面加载事件
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) // 检查是否是首次加载页面
            {
                PopulateDropDownLists(); // 填充下拉列表
            }
        }

        // 填充所有下拉列表
        private void PopulateDropDownLists()
        {
            // 填充部门下拉列表
            PopulateDropDownList("SELECT DepartmentId, DepartmentName FROM Departments", ddlDepartment, "DepartmentName", "DepartmentId");
            // 填充班级下拉列表
            PopulateDropDownList("SELECT ClassId, ClassName, DepartmentId FROM Classes", ddlClass, "ClassName", "ClassId");
            // 填充课程下拉列表
            PopulateDropDownList("SELECT CourseId, CourseName FROM Courses", ddlCourse, "CourseName", "CourseId");
            // 填充年份下拉列表
            PopulateDropDownList("SELECT DISTINCT Year FROM Grades", ddlYear, "Year", "Year");
        }

        // 根据查询填充下拉列表
        private void PopulateDropDownList(string query, DropDownList ddl, string textField, string valueField)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(query, connection);
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                adapter.Fill(dt); // 填充数据表

                ddl.DataSource = dt; // 设置数据源
                ddl.DataTextField = textField; // 设置显示字段
                ddl.DataValueField = valueField; // 设置值字段
                ddl.DataBind(); // 绑定数据

                ddl.Items.Insert(0, new ListItem("-- Select --", "")); // 添加默认选项
            }
        }

        // 过滤按钮点击事件
        protected void btnFilter_Click(object sender, EventArgs e)
        {
            BindGridView(); // 绑定GridView控件的数据
        }

        // 绑定GridView控件的数据
        private void BindGridView()
        {
            string departmentId = ddlDepartment.SelectedValue;
            string classId = ddlClass.SelectedValue;
            string courseId = ddlCourse.SelectedValue;
            string year = ddlYear.SelectedValue;

            // 构建查询语句
            string query = "SELECT s.Name, c.CourseName, g.Grade, g.Year, d.DepartmentName FROM Grades g " +
                           "JOIN Students s ON g.StudentId = s.StudentId " +
                           "JOIN Courses c ON g.CourseId = c.CourseId " +
                           "JOIN Classes cl ON s.ClassId = cl.ClassId " +
                           "JOIN Departments d ON cl.DepartmentId = d.DepartmentId " +
                           "WHERE 1=1 ";

            // 根据选择的过滤条件添加相应的查询条件
            if (!string.IsNullOrEmpty(departmentId))
            {
                query += "AND d.DepartmentId = @DepartmentId ";
            }

            if (!string.IsNullOrEmpty(classId))
            {
                query += "AND s.ClassId = @ClassId ";
            }

            if (!string.IsNullOrEmpty(courseId))
            {
                query += "AND g.CourseId = @CourseId ";
            }

            if (!string.IsNullOrEmpty(year))
            {
                query += "AND g.Year = @Year ";
            }

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(query, connection);
                if (!string.IsNullOrEmpty(departmentId))
                {
                    command.Parameters.AddWithValue("@DepartmentId", departmentId);
                }
                if (!string.IsNullOrEmpty(classId))
                {
                    command.Parameters.AddWithValue("@ClassId", classId);
                }
                if (!string.IsNullOrEmpty(courseId))
                {
                    command.Parameters.AddWithValue("@CourseId", courseId);
                }
                if (!string.IsNullOrEmpty(year))
                {
                    command.Parameters.AddWithValue("@Year", year);
                }

                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataTable dt = new DataTable();
                adapter.Fill(dt); // 填充数据表

                GridView1.DataSource = dt; // 设置GridView的数据源
                GridView1.DataBind(); // 绑定数据到GridView控件
            }
        }

        // 导出到Excel按钮点击事件
        protected void btnExportExcel_Click(object sender, EventArgs e)
        {
            string departmentId = ddlDepartment.SelectedValue;
            string classId = ddlClass.SelectedValue;
            string courseId = ddlCourse.SelectedValue;
            string year = ddlYear.SelectedValue;

            // 构建查询语句
            string query = "SELECT s.Name, c.CourseName, g.Grade, g.Year, d.DepartmentName FROM Grades g " +
                           "JOIN Students s ON g.StudentId = s.StudentId " +
                           "JOIN Courses c ON g.CourseId = c.CourseId " +
                           "JOIN Classes cl ON s.ClassId = cl.ClassId " +
                           "JOIN Departments d ON cl.DepartmentId = d.DepartmentId " +
                           "WHERE 1=1 ";

            // 根据选择的过滤条件添加相应的查询条件
            if (!string.IsNullOrEmpty(departmentId))
            {
                query += "AND d.DepartmentId = @DepartmentId ";
            }

            if (!string.IsNullOrEmpty(classId))
            {
                query += "AND s.ClassId = @ClassId ";
            }

            if (!string.IsNullOrEmpty(courseId))
            {
                query += "AND g.CourseId = @CourseId ";
            }

            if (!string.IsNullOrEmpty(year))
            {
                query += "AND g.Year = @Year ";
            }

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(query, connection);
                if (!string.IsNullOrEmpty(departmentId))
                {
                    command.Parameters.AddWithValue("@DepartmentId", departmentId);
                }
                if (!string.IsNullOrEmpty(classId))
                {
                    command.Parameters.AddWithValue("@ClassId", classId);
                }
                if (!string.IsNullOrEmpty(courseId))
                {
                    command.Parameters.AddWithValue("@CourseId", courseId);
                }
                if (!string.IsNullOrEmpty(year))
                {
                    command.Parameters.AddWithValue("@Year", year);
                }

                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataTable dt = new DataTable();
                adapter.Fill(dt); // 填充数据表

                // 设置ExcelPackage的许可证上下文
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

                using (ExcelPackage pck = new ExcelPackage())
                {
                    // 创建工作表并加载数据
                    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Grades");
                    ws.Cells["A1"].LoadFromDataTable(dt, true); // 从数据表加载数据
                    ws.Cells[ws.Dimension.Address].AutoFitColumns(); // 自动调整列宽

                    // 设置响应头以触发文件下载
                    Response.Clear();
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("content-disposition", "attachment; filename=Grades.xlsx");
                    Response.BinaryWrite(pck.GetAsByteArray()); // 以二进制格式写入文件内容
                    Response.End();
                }
            }
        }
    }
}

注销:

点击注销以后会退出到最开始的选择身份登录界面

 

 

 如需完整代码包,可私信。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值