资源描述
第十六章 在线求职招聘系统
16.2 数据的设计与基本配置
16.2.1 数据的设计
本系统数据库系统采用MS-SQLServer 2000 SP4(简体中文版),设定数据库服务器名为“ZUT-GYF”,使用企业管理器新建一个数据库,命名为myjobs。根据需求分析,系统共需要7个数据表,表结构内容以及建立步骤如下:
(1)myjobs_jobkinds数据表
该数据表用户保存系统工作类别,共有两个字段(ID,jobkinds),生成该数据表的SQL脚本语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_jobkinds]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_jobkinds]
GO
CREATE TABLE [dbo].[myjobs_jobkinds] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[jobkinds] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
(2)myjobs_cominfor数据表
该数据表用户保存企业会员信息,包括ID,企业名称,企业信息,密码等相关信息,共有9个字段(ID,comid,pwd,comname,tel,email,cominfor,regdate,address),生成该数据表的SQL脚本语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_cominfor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_cominfor]
GO
CREATE TABLE [dbo].[myjobs_cominfor] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[comid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[comname] [nchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[cominfor] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[email] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[tel] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pwd] [char] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[regdate] [datetime] NOT NULL ,
[address] [char] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
(3)myjobs_userinfor数据表
该数据表用于保存普通会员注册信息,包括ID,用户姓名,密码等相关信息,共包含20个字段(ID,userid,username,pwd,tel,sex,email,edu,degree,wantjob等),生成该数据表的SQL语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_userinfor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_userinfor]
GO
CREATE TABLE [dbo].[myjobs_userinfor] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pwd] [char] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[email] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[tel] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sex] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[edutime] [datetime] NOT NULL ,
[school] [char] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[brithday] [datetime] NOT NULL ,
[pic] [char] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[wantmoney] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[major] [char] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[express] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[myself] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[login] [int] NOT NULL ,
[passportkinds] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[passportNo] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[username] [char] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[degree] [int] NOT NULL ,
[wantjob] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
(4) myjobs_newjobs数据表
该数据表用户保存企业发布的招聘职位,包括职位ID,职位名称,招聘人数,招聘公司等,共包含11个字段(ID,comid ,jobname等),生成该数据表的SQL语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_newjobs]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_newjobs]
GO
CREATE TABLE [dbo].[myjobs_newjobs] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[comid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[jobkinds] [char] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[jobname] [char] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[peoplecount] [int] NOT NULL ,
[request] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pubtime] [datetime] NOT NULL ,
[endtime] [datetime] NOT NULL ,
[jobpay] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[degrequest] [int] NOT NULL ,
[jobstate] [char] (1) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
(5)myjobs_req_msg数据表
该数据用户存储应聘记录,包括应聘职位,应聘人ID,申请日期等,同时根据标识字段,也存储用户收藏职位信息,在必要的时候发送应聘请求。共包含8个字段(ID,jobid,usreid,comid,viewstate,userstate,comstate,sendtime),生成该数据表的SQL脚本语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_req_msg]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_req_msg]
GO
CREATE TABLE [dbo].[myjobs_req_msg] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[comid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[jobid] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[viewstate] [int] NOT NULL ,
[sendtime] [datetime] NOT NULL ,
[usermsgstate] [int] NOT NULL ,
[commsgstate] [int] NOT NULL
) ON [PRIMARY]
GO
(6) myjobs_myhrmsg 数据表
该数据用户保存普通会员的人事经理来信记录,一般为企业的面试邀请,包括普通会员ID,企业ID,发送日期等,共包含7个字段(ID,userid,comid等),生成改表的SQL脚本语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_myhrmsg]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_myhrmsg]
GO
CREATE TABLE [dbo].[myjobs_myhrmsg] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[comid] [char] (15) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[content] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL ,
[msgstate] [int] NOT NULL ,
[sendtime] [datetime] NOT NULL ,
[jobname] [char] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
(7)myjobs_news数据表
该数据用于保存相关就业新闻信息,主要包括新闻的标题,内容等信息,共有6个字段, 生成该数据表的SQL脚本语句如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[myjobs_news]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[myjobs_news]
GO
CREATE TABLE [dbo].[myjobs_news] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[title] [nchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[writer] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[pubtime] [datetime] NULL ,
[content] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[views] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
16.2.2 Web.config文件的配置信息
Web.config文件主要添加了数据库连接字段和系统管理员密码字段,具体如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- 增加管理员帐号 -->
<add key="admin" value="admin" />
<add key="pwd" value="123456" />
<!-- 增加数据库连接字段,指定数据库服务器为“ZUT-GYF” -->
<add key="conSQLString" value="data source=ZUT-GYF;initial catalog=myjobs;user id=sa;pwd=123456" />
</appSettings>
<system.web>
<!-- 其他信息省略 -->
</system.web>
</configuration>
16.3 系统设计与编码
在系统设计与编码阶段,我们仍按照系统功能服务对象和系统数据积累先后顺序进行归类介绍。
首先启动Visual Studio.NET 2003,新建一个ASP.NET应用程序,命名为MyJobs,如图16.4所示。
图16.4 新建MyJobs Web应用程序
16.3.1 系统配置信息管理部分―SysManagementPage.aspx的设计与编码
该页面是实现对工作类别的管理和相关就业新闻的发布功能,便于管理员管理和系统的紧凑性,我们把这两个功能集成到一个页面内,并利用Panel控件进行管理。
SysManagementPage.aspx的主要HTML代码如下:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="SysManagementPage.aspx.vb" Inherits="MyJobs.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>系统管理页面</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体"></FONT><FONT face="宋体"></FONT>
<asp:Panel id="Panel3" runat="server" Width="760px" Height="32px">
<asp:Panel id="Panel4" Runat="server">
<FONT face="宋体">输入管理员密码
<asp:TextBox id="TextBox5" Runat="server" TextMode="Password"></asp:TextBox>
<asp:Button id="Button4" runat="server" Text=" 登陆系统"></asp:Button></asp:Panel>
<asp:Button id="Button5" runat="server" Text="工作类别管理"></asp:Button>
<asp:Button id="Button6" runat="server" Text="发布新闻"></asp:Button></FONT></asp:Panel>
<asp:Panel id="Panel1" runat="server" Width="760px" Height="296px" Visible="False">工作类别管理<BR>
<asp:DataGrid id="DataGrid1" runat="server" Height="104px" Width="760px" AllowPaging="True" AutoGenerateColumns="False"
BorderWidth="1px" BorderColor="#006699">
<ItemStyle Font-Size="X-Small"></ItemStyle>
<Columns>
<asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="编号"></asp:BoundColumn>
<asp:BoundColumn DataField="jobkinds" HeaderText="类别"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:DataGrid><BR>添加新的工作种类
<asp:TextBox id="TextBox1" runat="server">请输工作类别名称</asp:TextBox>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></asp:Panel>
<asp:Panel id="Panel2" Width="760" runat="server">新闻发布<BR>
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="760" border="1">
<TR>
<TD style="WIDTH: 81px"><FONT face="宋体">新闻标题</FONT></TD>
<TD style="WIDTH: 630px">
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox></TD>
<TD><FONT face="宋体"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 81px"><FONT face="宋体">出处</FONT></TD>
<TD style="WIDTH: 630px">
<asp:TextBox id="TextBox3" runat="server"></asp:TextBox></TD>
<TD></TD>
</TR>
<TR>
<TD style="WIDTH: 81px"><FONT face="宋体">内容</FONT></TD>
<TD style="WIDTH: 630px">
<P>
<asp:TextBox id="TextBox4" runat="server" Height="236px" Width="608px" TextMode="MultiLine"></asp:TextBox></P>
<P> </P>
</TD>
<TD><FONT face="宋体"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 81px"><FONT face="宋体"></FONT></TD>
<TD style="WIDTH: 630px"><FONT face="宋体">
<asp:Button id="Button3" runat="server" Width="144px" Text="提交"></asp:Button></FONT></TD>
<TD></TD>
</TR>
</TABLE>
</asp:Panel>
</form>
</body>
</HTML>
SysManagementPage.aspx.vb中的逻辑代码如下:
'------code begin-----------
'声明命名空间的引用
Imports System.Data.SqlClient
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web 窗体设计器生成的代码 "
'此处省略了窗体设计器生成的代码,以节约篇幅
#End Region
'在这个页面中,我们演示两种方法操作数据库
'----1\使用ADO.NET中的Oledb类进行SQLServer数据的操作---------
' Dim sConnString1 As String = "Provider=sqloledb;" & _
' "Data Source=ZUT-GYF;Initial Catalog=myjobs;" & _
' " User Id=sa;Password='123456'"
' Dim myoledbcon As OleDb.OleDbConnection = New OleDb.OleDbConnection(sConnString1)
'----------------------------------------------------------
'----2\使用ADO.NET中的SQLClinet类进行SQLServer数据的操作------------------------------------------------------
Dim sConnString2 As String = "data source=ZUT-GYF;initial catalog=myjobs;user id=sa;pwd=123456"
Dim mysqlcon As SqlConnection = New SqlConnection(sConnString2)
'------------------------------------------------------------
Dim mysql As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
'管理员身份验证
If Session("admin") <> "admin" Then
Panel1.Visible = False
Panel2.Visible = False
Panel4.Visible = True
Else
If Not Page.IsPostBack Then
getdata()
End If
End If
End Sub
'读取数据过程
Sub getdata()
Dim mydt As DataSet = New DataSet
mysql = "select id ,jobkinds from myjobs_jobkinds"
'下面的代码演示了使用两种方式进行SQLServer数据库的操作,无论采取哪种方式
'都可以完成数据库的操作,我们屏蔽掉了第一种,
'而采取了使用SQLClient类进行数据库操作
'1\使用ADO.NET中的Oledb类进行SQLServer数据的操作的过程代码
'Dim mycmd As OleDb.OleDbDataAdapter
'
'mycmd = New OleDb.OleDbDataAdapter(mysql, myoledbcon)
' mycmd.Fill(mydt, "jobkinds")
' DataGrid1.DataSource = mydt.Tables("jobkinds")
' DataGrid1.DataBind()
' myoledbcon.Close()
'------------------------------------------
'2\使用ADO.NET中的SQLClinet类进行SQLServer数据的操作
Dim mysqlcmd As SqlDataAdapter = New SqlDataAdapter(mysql, mysqlcon)
mysqlcmd.Fill(mydt, "jobkinds")
DataGrid1.DataSource = mydt.Tables("jobkinds").DefaultView
DataGrid1.DataBind()
mysqlcon.Close()
End Sub
'激活编辑功能
Private Sub DataGrid1_EditCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
DataGrid1.EditItemIndex = 1
getdata()
End Sub
'取消编辑
Private Sub DataGrid1_CancelCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
DataGrid1.EditItemIndex = -1
getdata()
End Sub
'添加工作类别过程
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "" Then Exit Sub
mysql = "insert into myjobs_jobkinds(jobkinds) values('" + TextBox1.Text + "')"
Dim mycmd As SqlCommand = New SqlCommand(mysql, mysqlcon)
mysqlcon.Open()
mycmd.ExecuteNonQuery()
mysqlcon.Close()
Response.Write("<script>alert('\n恭喜您,成功添加了一个工作类别!\n');</script>")
getdata()
End Sub
'翻页事件过程
Private Sub DataGrid1_PageIndexChanged(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)
DataGrid1.CurrentPageIndex = e.NewPageIndex
getdata()
End Sub
'发布新闻过程那个
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If TextBox2.Text <> "" And TextBox3.Text <> "" And TextBox4.Text <> "" Then
Dim title As String = TextBox2.Text.Replace("'", "")
Dim writer As String = TextBox3.Text.Replace("'", "")
Dim content As String = TextBox4.Text.Replace("'", "").Replace(Chr(13), "<br>")
Dim pubtimes As DateTime = DateTime.Now
mysql = "insert into myjobs_news(title,writer,pubtime,content)values('" + title + "','" + writer + "','" + pubtimes + "' ,'" + content + "')"
Dim mycmd As SqlCommand = New SqlCommand(mysql, mysqlcon)
mysqlcon.Open()
mycmd.ExecuteNonQuery()
mysqlcon.Close()
Response.Write("<script>alert('\n恭喜您,成功发布了一条新闻!\n');</script>")
End If
End Sub
'进入类别管理面板
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
If Session("admin") = "admin" Then
Panel1.Visible = True
Panel2.Visible = False
getdata()
End If
End Sub
'进入发布新闻面板
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
If Session("admin") = "admin" Then
展开阅读全文