VS2019中基于C#ASP.NET和SQL server的大学生就业咨询系统

本文基于ASP.NET制作大学生就业咨询系统,包括增删改查以及部分前端设计(首先需要确保你的SQLserver登陆服务是开启的)。数据库截图我放在最后

运行效果图

 

一、MyDataTools工具类(最后展示完整代码)

(一)工具类简介

MyDataTools涵盖大部分我在开发中会使用到的函数,包括读取数据库读取到的字段填充到下拉框、将查询到的数据库信息填充到表格、连接数据库、增删改信息返回。注意此工具类是在解决方案处右键新建的cs文件。

 

(二)函数展示

1.将VS2019与数据库连接起来并且能够读取sql语句

    static string cnstr = "server=张; database=答辩作业; uid=sa;pwd=030217;";
    SqlConnection cn = new SqlConnection(cnstr);
    public MyDataTools()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    public DataTable getTable(string sql)
    {
        cn.Open();
        DataSet ds = new DataSet();   //内存数据库,保在存放多个查询结果视图
        SqlDataAdapter dap = new SqlDataAdapter(sql, cn);
        dap.Fill(ds, "t"); //把CN连接的数据库的SQL查询结果填充到dataset中,取名为t
        DataTable T = ds.Tables["t"];
        cn.Close();
        return T;
    }

 

2.将sql语句查询到的数据库结果填充到table控件当中

通过循环读取查询到的数据库表的将其插入到table控件

public void Mydisp1(DataTable T, Table Table1)// 把数据库查询结果T,展示到前端表格Table1
    {
        // 向前台展示所有数据列 ,把查询结果显示在一个动态table(table1)对象中
        //先输出表头
        int col = T.Columns.Count;
        //生成表头行
        TableRow tr0 = new TableRow();
        for (int j = 0; j < col; j++)
        {
            TableCell td0 = new TableCell();
            td0.Text = T.Columns[j].Caption;//取列名字段名
            tr0.Cells.Add(td0);
        }
        Table1.Rows.Add(tr0);
        //生成行对象,通用为多行
        for (int i = 0; i < T.Rows.Count; i++)
        {
            TableRow tr = new TableRow();
            for (int j = 0; j < col; j++)
            {
                TableCell td = new TableCell();
                td.Text = T.Rows[i][j].ToString().Trim();
                tr.Cells.Add(td);
            }
            Table1.Rows.Add(tr);
        }
    }
    public void Mydisp2(string sql, Table Table1)// 把数据库查询结果T,展示到前端表格Table1
    {
       DataTable T = getTable(sql);
        // 向前台展示所有数据列 ,把查询结果显示在一个动态table(table1)对象中
        //先输出表头
        int col = T.Columns.Count;
        //生成表头行
        TableRow tr0 = new TableRow();
        for (int j = 0; j < col; j++)
        {
            TableCell td0 = new TableCell();
            td0.Text = T.Columns[j].Caption;//取列名字段名
            tr0.Cells.Add(td0);
        }
        Table1.Rows.Add(tr0);
        //生成行对象,通用为多行
        for (int i = 0; i < T.Rows.Count; i++)
        {
            TableRow tr = new TableRow();
            for (int j = 0; j < col; j++)
            {
                TableCell td = new TableCell();
                td.Text = T.Rows[i][j].ToString().Trim();
                //td.BackColor = System.Drawing.Color.FromArgb(120, 0, 0);
                tr.Cells.Add(td);
            }
            Table1.Rows.Add(tr);
        } 
    }

 

3.读取查询到的数据库字段然后填充到下拉框控件当中

    public void fillList(string sqlstr, DropDownList List1)
    {//把sql的查询结果填充到下拉框内
        DataTable t = new MyDataTools().getTable(sqlstr);
        List1.DataSource = t;
        List1.DataTextField = "keyName";
        List1.DataValueField = "keyValue";
        List1.DataBind();
    }

 

4.返回增删改是否成功

    public int MynoQuery(string sql)//除查询外都可以用这种
    {
        int re = -1;
        cn.Open();
        SqlCommand cmd = new SqlCommand(sql, cn);
        re = cmd.ExecuteNonQuery();//操作成功并返回被操作的行号
        cn.Close();
        return re;
    }

 

(三)完整代码展示(注意using部分的引用)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;

/// <summary>
/// MyDataTools 的摘要说明
/// </summary>
public class MyDataTools
{
    static string cnstr = "server=张; database=答辩作业; uid=sa;pwd=030217;";
    SqlConnection cn = new SqlConnection(cnstr);
    public MyDataTools()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    public DataTable getTable(string sql)
    {
        cn.Open();
        DataSet ds = new DataSet();   //内存数据库,保在存放多个查询结果视图
        SqlDataAdapter dap = new SqlDataAdapter(sql, cn);
        dap.Fill(ds, "t"); //把CN连接的数据库的SQL查询结果填充到dataset中,取名为t
        DataTable T = ds.Tables["t"];
        cn.Close();
        return T;
    }
    public void Mydisp1(DataTable T, Table Table1)// 把数据库查询结果T,展示到前端表格Table1
    {
        // 向前台展示所有数据列 ,把查询结果显示在一个动态table(table1)对象中
        //先输出表头
        int col = T.Columns.Count;
        //生成表头行
        TableRow tr0 = new TableRow();
        for (int j = 0; j < col; j++)
        {
            TableCell td0 = new TableCell();
            td0.Text = T.Columns[j].Caption;//取列名字段名
            tr0.Cells.Add(td0);
        }
        Table1.Rows.Add(tr0);
        //生成行对象,通用为多行
        for (int i = 0; i < T.Rows.Count; i++)
        {
            TableRow tr = new TableRow();
            for (int j = 0; j < col; j++)
            {
                TableCell td = new TableCell();
                td.Text = T.Rows[i][j].ToString().Trim();
                tr.Cells.Add(td);
            }
            Table1.Rows.Add(tr);
        }
    }
    public void Mydisp2(string sql, Table Table1)// 把数据库查询结果T,展示到前端表格Table1
    {
       DataTable T = getTable(sql);
        // 向前台展示所有数据列 ,把查询结果显示在一个动态table(table1)对象中
        //先输出表头
        int col = T.Columns.Count;
        //生成表头行
        TableRow tr0 = new TableRow();
        for (int j = 0; j < col; j++)
        {
            TableCell td0 = new TableCell();
            td0.Text = T.Columns[j].Caption;//取列名字段名
            tr0.Cells.Add(td0);
        }
        Table1.Rows.Add(tr0);
        //生成行对象,通用为多行
        for (int i = 0; i < T.Rows.Count; i++)
        {
            TableRow tr = new TableRow();
            for (int j = 0; j < col; j++)
            {
                TableCell td = new TableCell();
                td.Text = T.Rows[i][j].ToString().Trim();
                //td.BackColor = System.Drawing.Color.FromArgb(120, 0, 0);
                tr.Cells.Add(td);
            }
            Table1.Rows.Add(tr);
        } 
    }
    public void fillList(string sqlstr, DropDownList List1)
    {//把sql的查询结果填充到下拉框内
        DataTable t = new MyDataTools().getTable(sqlstr);
        List1.DataSource = t;
        List1.DataTextField = "keyName";
        List1.DataValueField = "keyValue";
        List1.DataBind();
    }
    public int MynoQuery(string sql)//除查询外都可以用这种
    {
        int re = -1;
        cn.Open();
        SqlCommand cmd = new SqlCommand(sql, cn);
        re = cmd.ExecuteNonQuery();//操作成功并返回被操作的行号
        cn.Close();
        return re;
    }


}

 

二、登陆界面设计

(一)前端设计

注意事项

顶行需要时你自己建立的网页名称,不要照搬俺的!会报错、会报错、会报错

style当中使用控件将你创建的按钮以及textbox放在网页中间(没有这个玩意就会放在网页左上角),背景图需要你自己右边创建文件夹放入背景图,并且填入正确的地址(实在设置不好你就别搞背景图好了)

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        .auto-style1 {
            height: 31px;
        }
       .login-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh; /* 设置最小高度以适应内容 */
}

.login-container {
     position:center;
  transform: translate(8%, 0%);
  width: 40%; /* 控件宽度 */
  max-width: 1000px; /* 最大宽度 */
  padding: 5px;
  background-color: #E8E9CB;

}
        body {
            background-image:url(../assets/images/DL.jpg);
            background-size:cover;
        }
    </style>
</head>
<body style="align-content:center" >
    <form id="form1" runat="server">
        <div class="login-wrapper">
        <div style="align-content:center" class="login-container">
            <table style="border:double;text-align:center;font-size:large;background-color:antiquewhite;width:100%"/>
       <tr>
           <td colspan="2">用户登录</td><td></td>
       </tr>
            <tr>
                <td class="auto-style1">用户名:</td><td class="auto-style1">
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style1">密码:</td><td class="auto-style1">
                <asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox>
                    
                </td>
            </tr>
            <tr><td colspan="2">
                <br />
                <asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click"  Font-Size="Large"/>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:Button ID="Button2" runat="server" Text="注册" OnClick="Button2_Click" Font-Size="Large"/>
                </td></tr>
            </div>
            </div>
    </form>
</body>
</html>

 

(二)后端设计

注意事项

你的SQL命令别拼写错误,怕自己拼写错误的先放在SQLserver里面看能不能运行,或者你用response.write()函数检验,最下面的STmessage.aspx以及STadd.aspx都是需要跳转的下一个网页的网页名(你自己命名的别用我的),另外跳转到STmessage的时候携带学生的id不要看不懂,方便下一个页面读取到你的登录的id识别你。发现函数报错记得看看using是不是都引用上了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;

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

        protected void Button1_Click(object sender, EventArgs e)
        {
            string xh = TextBox1.Text.Trim();
            string mm = TextBox2.Text.Trim();
            string sqlstr = "select *from 毕业生基础信息表 where 学生ID='" + xh + "'";
            //ID不对跳转注册;ID对密码不对,重输密码;ID密码对,转到软件主页
            DataTable T = new MyDataTools().getTable(sqlstr);
            if (T.Rows.Count == 0)
            {
                Response.Write("<script>alert('未存在该用户!请注册账户后重试')</script>");
                
            }
            else
                if (T.Rows[0]["密码"].ToString().Trim() == mm)
            {

                Session["username"] = T.Rows[0]["姓名"].ToString().Trim();
                Response.Redirect("STmessage.aspx?id=" + xh);//转到软件主页`
            }
            else//ID对密码不对
            {
                Response.Write("<script>alert('密码错误!')</script>");
                TextBox2.Text = "";
                TextBox2.Focus();//清空密码,将光标焦点移到密码
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {

            Response.Redirect("STadd.aspx");
        }
    }
}

(三)运行效果图

三、学生添加界面

 

(一)前端设计

注意事项

这里的mouth控件绑定了后端的一个函数(因为闰年的2月日期不一样,所以这个复选框会改变)

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
     <style type="text/css">
        .login-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh; /* 设置最小高度以适应内容 */
}

.login-container {
     position: relative;
  transform: translate(8.5%, 0%);
  width: 100%; /* 控件宽度 */
  max-width: 400px; /* 最大宽度 */
  padding: 20px;
  background-color: #E8E9CB;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
  body {
            background-image:url(../assets/images/DL.jpg);
            background-size:cover;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
         <div class="login-wrapper">
             <div class="login-container">
            添加学生信息:<br />
            <br />
                 学生ID:&nbsp; <asp:TextBox ID="ID" runat="server"></asp:TextBox>
            <br />
            <br />
                 学生姓名: <asp:TextBox ID="xm" runat="server"></asp:TextBox>
            <br />
            <br />
                 专业信息: <asp:DropDownList ID="zy" runat="server">
                 </asp:DropDownList>
            <br />
            <br />
                 毕业年份: 
            <asp:DropDownList ID="year" runat="server">
            </asp:DropDownList>
            年 
            <asp:DropDownList ID="month" runat="server" AutoPostBack="true" OnSelectedIndexChanged="month_SelectedIndexChanged">
            </asp:DropDownList>
&nbsp;日:<asp:DropDownList ID="day" runat="server">
            </asp:DropDownList>
                 <br />
            <br />
                 毕业生所在地: <asp:DropDownList ID="DropDownList1" runat="server">
                 </asp:DropDownList>
                 <br />
            <br />
                 设置登陆密码: 
            <asp:TextBox ID="mm" runat="server" TextMode="Password"></asp:TextBox>
                 
            <br />
                 <br />
            <br />
                 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:Button ID="Button1" runat="server" Text="确认添加" OnClick="Button1_Click" Font-Size="Large" />
                  &nbsp;<asp:Button ID="Button2" runat="server" Text="返回登陆" Font-Size="Large" OnClick="Button2_Click"/>

        </div>
             </div>
    </form>
</body>
</html>

 

(二)后端设计

注意事项

日期的函数是和前端mouth控件绑定的那个函数一样的,别乱设计。并且初始化函数中if(!IsPostBack)只要有下拉框就是一定要将下拉框填充放在里面的,不然你选一个按按钮直接就刷新成第一个了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;
using System.Text.RegularExpressions;
namespace JYXQ
{
    public partial class STadd : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int y = DateTime.Now.Year;//取出今天的年份存入y
                for (int i = y; i >= y - 30; i--)
                {
                    year.Items.Add(i.ToString());//在year控件当中加入倒退30年的年份,用tostring转换为字符串
                }
                for (int j = 12; j >= 1; j--)
                {
                    month.Items.Add(j.ToString());//复选框中加入month的十二个月
                }
                string sql1 = "select 地区名称 as keyName,地区名称 as keyValue from 地区信息表";
                new MyDataTools().fillList(sql1, DropDownList1);

                string sql2 = "select 专业名称 as keyName,专业名称 as keyValue from 学生专业信息表";
                new MyDataTools().fillList(sql2, zy);
            }

            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string id = ID.Text.Trim();
            string xm0 = xm.Text.Trim();
            string zy0 = zy.Text.Trim();
            string year0 = year.SelectedValue.Trim();
            string month0 = month.SelectedValue.Trim();
            string day0 = day.SelectedValue.Trim();
            string dq0 = DropDownList1.SelectedValue.Trim();
            string mm0 = mm.Text.Trim();

            PasswordValidator validator = new PasswordValidator();
            bool isStrong = validator.IsPasswordStrong(mm0);

            if (isStrong)
            {
                string sql = "insert into 毕业生基础信息表 values (" + id + ",'" + xm0 + "','" + zy0 + "','" + year0 + "." + month0 + "." + day0 + "','" + mm0 + "','" + dq0 + "')";
                //Response.Write(sql);
                int flag = new MyDataTools().MynoQuery(sql);
                if (flag > 0)
                {

                    Response.Write("<script>alert('注册成功!')</script>");
                }
            }
            else
            {
                Response.Write("<script>alert('密码强度过低,请输入8字符以上且至少包含大小写字母以及一个数字!')</script>");
            }

            

        }

        protected void month_SelectedIndexChanged(object sender, EventArgs e)
        {
            int y = int.Parse(year.SelectedValue);//int输入的需要int转换
            int m = int.Parse(month.SelectedValue);
            int day0 = 31;//默认为大月天数
            if (m == 4 || m == 6 || m == 9 || m == 11)
                day0 = 30;//4、6、9、11月不会随年份变化而变化可以直接设置
            if (m == 2)
            {
                if (m == 2 && (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0))//闰年的判断,如果是闰年则2月的日期需要改为29天
                    day0 = 29;
                else day0 = 28;//不是闰年则为28天
            }
            day.Items.Clear();//清空形成的复选框内的内容,避免造成出现2*20个年份或者2*12个月份的情况
            for (int i = 1; i <= day0; i++)
                day.Items.Add(i.ToString());//将经过是否闰年判断的日期填入日期的复选框

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Redirect("login.aspx");
        }

        public class PasswordValidator
        {
            public bool IsPasswordStrong(string password)
            {
                // 定义密码强度规则:包含至少8个字符,至少一个大写字母、一个小写字母和一个数字
                string pattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$";
                // 使用正则表达式进行匹配
                Match match = Regex.Match(password, pattern);
                // 返回匹配结果
                return match.Success;
            }
        }
    }
}

 

(三)运行效果图

 

四、信息查询和展示界面

(一)前端设计

注意事项

建立RadioButton控件之后你别忘记把这几个控件放在同一个组当中,还有table控件,是展示信息的关键。

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
      <style type="text/css">
        .login-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 90vh; /* 设置最小高度以适应内容 */
}

.login-container {
     position: relative;
  transform: translate(8.5%, 0%);
  width: 100%; /* 控件宽度 */
  max-width: 600px; /* 最大宽度 */
  padding: 20px;
  background-color:#E8E9CB; 
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
  body {
            background-image:url(../assets/images/DL.jpg);
            background-size:cover;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
         <div class="login-wrapper">
             <div class="login-container">
                  学生信息展示<br />
            <br />
            <asp:Table ID="Table1" runat="server" Width="99%" BorderWidth="1px" GridLines="Both">
            </asp:Table>
        <p>
            请选择你想要查询的内容</p>
        <p>
            &nbsp;</p>
        <p>
            <asp:RadioButton ID="nf" runat="server"  GroupName="zp"/>
            各年份招聘信息</p>
        <p>
            <asp:RadioButton ID="dq" runat="server"  GroupName="zp"/>
            各地区招聘信息</p>
        <p>
            <asp:RadioButton ID="zy" runat="server"  GroupName="zp"/>
            各专业招聘信息</p>
                 <p>
                     <asp:RadioButton ID="xg" runat="server"  GroupName="zp"/>
                     修改学生信息</p>
        <p>
            &nbsp;</p>
        <p>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
        &nbsp;<asp:Button ID="Button2" runat="server" Text="返回登录窗口" OnClick="Button2_Click" />
        </p>
                  </div>
    </div>
    </form>
    <p>
        &nbsp;</p>
   
</body>
</html>

(二)后端设计

注意事项

这里接收的id是从一开始你的登录界面传输过来的,可不是什么乱来的,你自己做的时候别一上来就是id,先看看你传输的时候是传输的什么字符。其次如果是引用的函数缺失的话首先你看看你的using有没有引用完全,再看看你的工具类里面的函数有没有写错。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;

namespace JYXQ
{
    public partial class STmessage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            string sql = "select * from 毕业生基础信息表 where  学生ID='" + xh + "'";
            MyDataTools Ob = new MyDataTools();
            DataTable T = Ob.getTable(sql);
            Ob.Mydisp1(T, Table1);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            if (nf.Checked == true)
            {
                Response.Redirect("NFmessage.aspx?id=" + xh);
            }

            if(dq.Checked == true)
            {
                Response.Redirect("DQmessage.aspx?id=" + xh);
            }

            if (zy.Checked == true)
            {
                Response.Redirect("ZYmessage.aspx?id=" + xh);
            }

            if (xg.Checked == true)
            {
                Response.Redirect("STupdate.aspx?id=" + xh);
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Redirect("login.aspx");
        }
    }
}

(三)运行效果图

五、查询之后的信息展示

(一)前端设计

注意事项

查询页面一共有三个,但是三个都一样的无非是修改一下sql语句

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
            <style type="text/css">
        .login-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh; /* 设置最小高度以适应内容 */
}

.login-container {
     position: relative;
  transform: translate(10%, 0%);
  width: 100%; /* 控件宽度 */
  max-width: 600px; /* 最大宽度 */
  padding: 20px;
  background-color: #E8E9CB;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
  body {
            background-image:url(../assets/images/DL.jpg);
            background-size:cover;
        }
 </style>
</head>
<body>
    <form id="form1" runat="server">
         <div class="login-wrapper">
             <div class="login-container">
            <asp:Table ID="Table1" runat="server" Width="99%" BorderWidth="1px" GridLines="Both">
            </asp:Table>
        
        <p>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            请选择生源地:<asp:DropDownList ID="dq" runat="server">
            </asp:DropDownList>
        </p>
                 <p>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 共计招聘:<asp:TextBox ID="tj" runat="server" Width="72px"></asp:TextBox>
                     人</p>
        <p>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
        &nbsp;<asp:Button ID="Button2" runat="server" Text="返回主页" OnClick="Button2_Click" />
        </p>
                 </div>
             </div>
    </form>
</body>
</html>

(二)后端设计

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;

namespace JYXQ
{
    public partial class DQmessage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                string sql1 = "select 地区名称 as keyName,地区名称 as keyValue from 地区信息表";
                new MyDataTools().fillList(sql1, dq);
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string dq0 = dq.SelectedValue.Trim();
            string sql0 = "select*from 需求信息表 where 需求地区='" + dq0 + "'";
            new MyDataTools().Mydisp2(sql0, Table1);
            string sql1 = "select count(*) as 人数 from 需求信息表 where 需求地区='"+dq0+"'";
            DataTable t = new MyDataTools().getTable(sql1);
            tj.Text= t.Rows[0]["人数"].ToString().Trim();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            Response.Redirect("STmessage.aspx?id="+xh);
        }
    }
}

(三)运行效果图

六、学生信息修改和删除

(一)前端设计

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
        <style type="text/css">
        .login-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh; /* 设置最小高度以适应内容 */
}

.login-container {
     position: relative;
  transform: translate(10%, 0%);
  width: 100%; /* 控件宽度 */
  max-width: 600px; /* 最大宽度 */
  padding: 20px;
  background-color: #E8E9CB;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
  body {
            background-image:url(../assets/images/DL.jpg);
            background-size:cover;
        }
 </style>
</head>
<body>
    <form id="form1" runat="server">
         <div class="login-wrapper">
             <div class="login-container">
            学生信息修改<br />
            <br />
            学生ID:&nbsp;&nbsp; 
            <asp:TextBox ID="id" runat="server" ReadOnly="true"></asp:TextBox>
            <br />
            <br />
            姓名:&nbsp;&nbsp;&nbsp; 
            <asp:TextBox ID="xm" runat="server"></asp:TextBox>
            <br />
            <br />
            专业信息:&nbsp; 
            <asp:TextBox ID="zy" runat="server"></asp:TextBox>
&nbsp; 
            <asp:DropDownList ID="DropDownList1" runat="server">
            </asp:DropDownList>
                 (修改)<br />
            <br />
            毕业年份:&nbsp; 
            <asp:TextBox ID="nf" runat="server"></asp:TextBox>
            &nbsp;
            <asp:DropDownList ID="year" runat="server">
            </asp:DropDownList>
            年 
            <asp:DropDownList ID="month" runat="server" AutoPostBack="true" OnSelectedIndexChanged="month_SelectedIndexChanged">
            </asp:DropDownList>
            月 
            <asp:DropDownList ID="day" runat="server">
            </asp:DropDownList>
            日(修改)<br />
            <br />
            密码:&nbsp;&nbsp;&nbsp; 
            <asp:TextBox ID="mm" runat="server"></asp:TextBox>
            <br />
            <br />
            生源地:&nbsp;&nbsp; 
            <asp:TextBox ID="syd" runat="server"></asp:TextBox>
            &nbsp;
                 <asp:DropDownList ID="DropDownList2" runat="server">
                 </asp:DropDownList>
                 (修改)<br />
            <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Button ID="Button3" runat="server" Text="刷新" OnClick="Button3_Click" />
                 &nbsp;<asp:Button ID="Button1" runat="server" Text="修改信息" OnClick="Button1_Click" />
        &nbsp;<asp:Button ID="Button2" runat="server" Text="删除该学生" OnClick="Button2_Click" />
            &nbsp;<asp:Button ID="Button4" runat="server" Text="返回主页" OnClick="Button4_Click" />
        </div>
              </div>
    </form>
</body>
</html>

(二)后端设计

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;// 网页前端界面中UI控件支持
using System.Reflection;
using System.Text.RegularExpressions;

namespace JYXQ
{
    public partial class STupdate : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string xh = Request.QueryString["id"].Trim(); 
                string sqlstr = "select*from 毕业生基础信息表 where 学生ID='" + xh + "'";
                DataTable t = new MyDataTools().getTable(sqlstr);
                id.Text = t.Rows[0]["学生ID"].ToString().Trim();
                xm.Text = t.Rows[0]["姓名"].ToString().Trim();
                zy.Text = t.Rows[0]["专业信息"].ToString().Trim();
                nf.Text = t.Rows[0]["毕业年份"].ToString().Trim();
                mm.Text = t.Rows[0]["密码"].ToString().Trim();
                syd.Text = t.Rows[0]["生源地"].ToString().Trim();

                string sql1 = "select 专业名称 as keyName,专业名称 as keyValue from 学生专业信息表";
                new MyDataTools().fillList(sql1, DropDownList1);

                string sql2 = "select 地区名称 as keyName,地区名称 as keyValue from 地区信息表";
                new MyDataTools().fillList(sql2, DropDownList2);


                int y = DateTime.Now.Year;//取出今天的年份存入y
                    for (int i = y; i >= y - 30; i--)
                    {
                        year.Items.Add(i.ToString());//在year控件当中加入倒退30年的年份,用tostring转换为字符串
                    }
                    for (int j = 12; j >= 1; j--)
                    {
                        month.Items.Add(j.ToString());//复选框中加入month的十二个月
                    }

                
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            string sql = "delete from 毕业生基础信息表 where 学生ID='"+xh+"'";
            int flag = new MyDataTools().MynoQuery(sql);
            if (flag > 0)
            {
                Response.Write("<script>alert('删除成功')</script>");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string id0 = id.Text.Trim();
            string xm0 = xm.Text.Trim();
            string zy0 = DropDownList1.SelectedValue.Trim();
            string mm0 = mm.Text.Trim();
            string syd0 = DropDownList2.Text.Trim();
            string year0 = year.SelectedValue.Trim();
            string month0 = month.SelectedValue.Trim();
            string day0 = day.SelectedValue.Trim();


            PasswordValidator validator = new PasswordValidator();
            bool isStrong = validator.IsPasswordStrong(mm0);

            if (isStrong)
            {
                string sql = "update 毕业生基础信息表 set 姓名='" + xm0 + "',专业信息='" + zy0 + "',毕业年份='" + year0 + "." + month0 + "." + day0 + "',密码='" + mm0 + "',生源地='" + syd0 + "' where 学生ID='" + id0 + "'";
                int flag = new MyDataTools().MynoQuery(sql);
                if (flag > 0)
                {
                    Response.Write("<script>alert('修改成功')</script>");
                }
            }
            else
            {
                Response.Write("<script>alert('密码强度过低,请输入8字符以上且至少包含大小写字母以及一个数字!')</script>");
            }

        }

        protected void month_SelectedIndexChanged(object sender, EventArgs e)
        {
            int y = int.Parse(year.SelectedValue);//int输入的需要int转换
            int m = int.Parse(month.SelectedValue);
            int day0 = 31;//默认为大月天数
            if (m == 4 || m == 6 || m == 9 || m == 11)
                day0 = 30;//4、6、9、11月不会随年份变化而变化可以直接设置
            if (m == 2)
            {
                if (m == 2 && (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0))//闰年的判断,如果是闰年则2月的日期需要改为29天
                    day0 = 29;
                else day0 = 28;//不是闰年则为28天
            }
            day.Items.Clear();//清空形成的复选框内的内容,避免造成出现2*20个年份或者2*12个月份的情况
            for (int i = 1; i <= day0; i++)
                day.Items.Add(i.ToString());//将经过是否闰年判断的日期填入日期的复选框

        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            string sqlstr = "select*from 毕业生基础信息表 where 学生ID='" + xh + "'";
            DataTable t = new MyDataTools().getTable(sqlstr);
            id.Text = t.Rows[0]["学生ID"].ToString().Trim();
            xm.Text = t.Rows[0]["姓名"].ToString().Trim();
            zy.Text = t.Rows[0]["专业信息"].ToString().Trim();
            nf.Text = t.Rows[0]["毕业年份"].ToString().Trim();
            mm.Text = t.Rows[0]["密码"].ToString().Trim();
            syd.Text = t.Rows[0]["生源地"].ToString().Trim();
        }

        protected void Button4_Click(object sender, EventArgs e)
        {
            string xh = Request.QueryString["id"].Trim();
            Response.Redirect("STmessage.aspx?id="+xh);
        }

        public class PasswordValidator
        {
            public bool IsPasswordStrong(string password)
            {
                // 定义密码强度规则:包含至少8个字符,至少一个大写字母、一个小写字母和一个数字
                string pattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$";
                // 使用正则表达式进行匹配
                Match match = Regex.Match(password, pattern);
                // 返回匹配结果
                return match.Success;
            }
        }
    }
}

(三)运行效果图

七、数据库设计截图

  • 20
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、源码特点 asp.net求职就业网站是一套完善的web设计管理系统系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。 二、功能介绍 本系统采用Browser/Server技术模式,在前台使用asp.net开发技术,后台使用SQL Server数据库开发技术。本系统主要是为了方便负责就业管理工作的老师使用,向毕业生提供一些招聘信息、就业指导及相关的政策信息,以帮助同学们更好的就业。本系统分为管理员登陆子系统,包括用户信息管理功能,简历信息管理功能,和招聘信息管理功能。本系统为毕业生提供了一个便捷、可靠的信息平台,有利于学校更好的对大学生进行就业管理和指导 前台模块 该模块下有四个子功能 1.查看招聘信息 2.查看就业政策信息 3.下载文件 4.信息快讯查看 5.简历查看 6.用户注册、登录 后台模块 该模块下有七个子功能: (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)简历管理:对简历信息进行添加、删除、修改和查看 (4)招聘管理:对招聘信息进行添加、删除、修改和查看 (5)就业政策管理:对就业政策信息进行添加、删除、修改和查看 (6)信息快讯管理:对信息快讯信息进行添加、删除、修改和查看 (7)下载管理:对下载信息进行添加、删除、修改和查看 (8)登入登出系统:登陆后台时需要通过登陆验证身份,在后台也可以选择退出系统。 三、注意事项 1、管理员账号:admin 密码:admin 2、开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。 3、数据库文件名是netfjiuye.mdf
以下是基于C#+asp.net+sqlserver的商店积分管理系统设计与实现的详细步骤: 1. 确定需求:商店积分管理系统需要实现积分的增加、减少、查询等功能,需要有管理员和用户两种角色,管理员可以对用户进行管理和积分操作,用户可以查询和使用自己的积分。 2. 数据库设计:根据需求设计数据库表,包括用户表、管理员表和积分记录表。其用户表包含用户ID、用户名、密码、手机号码等信息;管理员表包含管理员ID、管理员名、密码等信息;积分记录表包含用户ID、积分变化、变化时间等信息。 3. 创建项目:使用Visual Studio创建ASP.NET Web Application项目,并选择MVC模板。 4. 创建模型:在Models文件夹下创建模型类,包括用户类、管理员类和积分记录类,每个类对应一个数据库表。 5. 创建控制器:在Controllers文件夹下创建控制器类,包括用户控制器和管理员控制器。控制器类包含各种方法,用于处理用户请求并返回相应的视图。 6. 创建视图:在Views文件夹下创建各种视图,包括登录视图、注册视图、积分查询视图、积分变更视图等。视图包含HTML和Razor语法,用于展示数据和接收用户输入。 7. 编写业务逻辑:在App_Code文件夹下创建业务逻辑类,包括用户管理类和积分管理类。业务逻辑类实现各种数据操作方法,包括用户注册、登录、查询积分、增加积分、减少积分等。 8. 配置数据库连接:在Web.config文件配置数据库连接字符串,以便应用程序能够连接到数据库。 9. 运行程序:在Visual Studio按下F5键运行程序,测试各种功能是否正常。 10. 部署程序:将程序部署到服务器上,让用户可以通过浏览器访问。部署时需要将Web.config的数据库连接字符串修改为服务器的数据库连接字符串。 以上是基于C#+asp.net+sqlserver的商店积分管理系统设计与实现的详细步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值