第 3 卷  第 1 期                        武汉航海(武汉航海职业技术学院学报)                Vol.3 No.1 
2008 年 3 月                Wuhan Marine(Journal of Wuhan Marine College)          Mar.2008 
 
基于 B/S 模式的工资管理系统 
(武汉航海职业技术学院,湖北  武汉  430062) 
胡娟 
 
【摘要】工资管理系统是基于 ASP.NET 技术和 SQL server2000 数据库实现的三层结构 Web 应
用程序,通过 ADO.NET 访问数据库结合网络编程开发动态网页。本系统是适合于各企事业单位使用
的通用工资管理软件,系统开发目的主要是针对工资管理系统落后、网上信息流贫乏、数据环境混
乱等问题提出可行的解决方案。给工资管理系统带来先进的管理理念、完善的工资管理制度,从而
提高管理水平、节约资源、提高办事效率。 
【关键词】B/S 模式;工资管理系统 
【中图分类号】TP319    【文献标识码】A    【文章编号】2160/SG(2008)01- 0021- 13 
 
1.总体设计 
1.1  企业网建设规划 
(1)概述 
企业网分内部和外部两部分。 
外部的页面是展示给所有人员浏览的页面,在外部
主要对企业的宣传。在产品展示的页面提供顾客注册的
功能,进行网上订购的功能.只有注册的顾客用户才能进
行网上订购。 
内部的页面只有企业内部人员才能浏览,而且必须
登录才能进入,没有注册的功能,只有在人事部门进行添
加的用户才能进入。 
(2)组织结构,见图 4.1(a) 
职务为总经理,副总经理; 
最高级别机构有主管、财务主管、开发部主管、人
事部主管、市场部主管; 
部门设部门经理,普通职员。 
(3)总体设计,见图 4.1(b) 
1.2  工资管理系统任务概述 
项目名称:基于 B/S 模式的工资管理系统 
开发意图:使员工工资管理更加科学、规范;使员
工工资查询更加方便、快捷;发挥网络在工资管理与查
询中的作用,实现工资管理与查询的网络化 
应用目标:通过本系统,能帮助财务人员利用计算
机,快速方便的对员工工资进行管理、输入、输出、查
找等所需操作,使大量的员工工资能够集中方便的进行
管理。员工则能够利用自己的用户名和密码通过本登
陆,方便快捷的查询到自己工资信息。 
1.3  工资管理系统功能需求 
(1)登录内部办公系统的所有用户都可以查询自己
的详细工资情况,提供按月查询,按年查询,按特定时间
查询三种方式. 
(2)企业的财务人员可以进行工资的添加,删除,修
改,查询,浏览的操作,在查询中提供按月查询,按年查询,
按特定查询,按部门查询,按员工编号查询四种方式. 
(3)企业的财务人员可对工资信息进行添加,删除,
修改,浏览的操作。 
(4)工资的修改时应在备注后写清楚修改时间以及
原因等相关信息。 
财
务
部
财
 
务
 
科
开
 
发
 
部
硬
件
开
发
部
腾智科技
总
办
软
件
开
发
部
人
力
资
源
部 
人
力
资
源
科 
图 4.1(a) 
市 
 
场 
 
部 
采 
 
购 
 
部 
销
 
售
 
部
 
—————————————— 
※收稿日期:2008-03-20 
作者简介:胡娟,女,武汉航海职业技术学院公共课部,助教。 
2008 年第 1 期                                                  胡娟  基于 B/S 模式的工资管理系统                                                      ·22·   
 
图 4.1(b) 
1.4  工资管理系统可行性分析 
(1)技术可行性 
        ASP.NET 的推出也有一定的时间了,它将来的网络
编程做好了准备,我在毕业设计中用到的相关技术,也
是比较成熟的,只是鉴于对网络编程和.net 的熟悉程度,
可能在功能的实现上还存在一定的缺陷。基于对指定的
系统要实现的功能的要求的考虑,结合对现有技术的掌
握程度,鉴于软硬件的资源问题,对于系统的要求和性
能,是可以实现的。 
参与源代码开发的成员必须掌握.NET 技术,具有基
于 SQL2000 网络数据库编程经验,对信息管理系统有比
较深入的认识,能够很快的进行系统分析并开发实现。 
(2)经济可行性 
本系统基于 ASP.NET 构架,运用 SQL2000 网络数
据库,成本不高。开发周期不会太长,维护费用也不多。 
(3)运行可行性 
目前许多公司的工资管理系统都不太先进,基于网
页的查询系统不完善。由于系统的要求是基于用户操作
的基本要求实现的,对各个子系统的划分是符合管理人
员的要求的,又本系统是按照三层结构和 B/S 的思想而
开发的,对于系统的升级还是方便易行的,所以本套查
询系统可以马上解决这些问题。 
按上述三方面进行可行性分析、研究后,笔者认为
此项目是可行的。 
1.5  工资管理系统开发环境 
(1)硬件条件:CPU:P4 2.0  内存:512 DDR  硬
盘:80G。服务器一台为数据库服务器和 Web 服务器;
客户端计算机若干;网络通讯设备,主要包括网卡、
MODEM  等。 
(2)系统平台:采用 Browser/Server 体系结构,服
务器端采用 Microsoft Windows XP Professional SP2 作为
 
网络操作系统,Web 服务器软件采用 IIS5.0(Internet 
Information  Server)。客户端软件,包括单机操作系统
和浏 览器 软件,分 别选 用 Windows  98 以上 版本和
Internet  Explorer  5.0 以 上 版 本 , 数 据 库 系 统 采 用
Microsoft SQL Server 2000 有利于使用操作。 
(3)开发工具:基于 Web 的系统开发工具应使开
发者使用各种各样的技术来创建动态的 Web 应用程序,
并 且 应 是 一 个 可 视 化 的 工 具 。 我 们 采 用 了 Visual 
Studio.NET 进行开发,它是用来快速创建数据驱动 Web
应用程序的基于团队的开发环境,支持 ASP.NET,以
ADO.NET 连接数据库,编程语言为 C#。 
2.结构化系统设计 
2.1  系统功能模块设计 
(1)主登陆界面模块:该模块提供管理系统的主界
面,是主系统的唯一入口和出口,该界面提供用户登陆
并选择并调用各子模块 
(2)工资管理系统:用户选择该模块后将进入工资
管理系统。 
(3)员工界面:员工进入该模块进行选择查询操作。 
(4)工资管理人员界面:工资管理人员进入操作界
面。 
(5)工资浏览界面:管理人员浏览所有员工工资。 
(6)工资添加界面:管理人员添加员工工资信息。 
(7)工资删除界面:管理人员删除员工工资信息。 
(8)工资查询界面:在此模块中,管理人员有五种
查询方式,员工有 3 种查询方式。 
(9)工资修改界面:管理人员修改员工工资信息。 
2008 年第 1 期                                                  胡娟  基于 B/S 模式的工资管理系统                                                      ·23·   
2.2  数据库设计 
列名 
SalaryID 
UserID 
Dept 
Year 
Month 
Bouns 
BasicWage 
AllWage 
Remark 
图 5.1
数据类型  长度 可否为空
int 
varchar 
varchar 
char 
char 
varchar 
varchar 
varchar 
varchar 
4 
50 
300 
16 
10 
50 
50 
50 
300 
否 
可以 
可以 
可以 
可以 
可以 
可以 
可以 
可以 
表 5.2    工资表 
 
说明 
工资编号 
员工编号 
部门 
年份 
月份 
奖金 
基本工资 
总工资 
备注 
图 5.2(a) 
 
员工登陆后可以根据年份,月份来查询自己的工资详细信息。管理人员登陆后可以根据员工的编号,部门,年份,
图 5.2(b) 
 
 
·24·                                                      武汉航海(武汉航海职业技术学院学报)                                        2008 年第 1 期 
月份来查询所需要的信息。 
2.3  界面设计 
(1)工资添加界面 
当管理人员登陆的时候,点击工资记录添加,就会出现添加记录界面,如图 5.3.1(b)。 
当信息添加成功以后,得到一个提示成功界面,如图 5.3.1(c)。 
图 5.3.1(a) 
 
图 5.3.1(c) 
若输入工资编号不唯一,则会提示输入错误,返回重新输入,如图 5.3.1(d) 
图 5.3.1(b) 
图 5.3.1(d) 
当非管理人员登陆的时候,则会提示无法进入,如图 5.3.1(e) 
在添加的界面使用了 TextBox 和 Button 控件,添加代码如下: 
图 5.3.1(e) 
 
 
 
2008 年第 1 期                                                    胡娟  基于 B/S 模式的工资管理系统                                                    ·25· 
 
{ 
private void add_button_Click(object sender, System.EventArgs e) 
  
{   
dbComm=new SqlCommand(strSQL,sqlConnection1); 
if(Page.IsValid) 
  
 
                      StringstrSQL="INSERT 
INTOSalary(SalaryID,UserID,Dept,Year,Month,Bouns,BasicWage,AllWage,Remark) 
VALUES(@SalaryID,@UserID,@Dept,@Year,@Month,@Bouns,@BasicWage,@AllWage,@Remark)" ; 
SqlCommand dbComm=new SqlCommand(strSQL,sqlConnection1); 
dbComm.Parameters.Add("@SalaryID",SqlDbType.Int,4); 
dbComm.Parameters.Add("@UserID",SqlDbType.VarChar ,50); 
dbComm.Parameters.Add("@Dept",SqlDbType.VarChar,300); 
dbComm.Parameters.Add("@Year",SqlDbType.Char,16); 
dbComm.Parameters.Add("@Month",SqlDbType.Char,16); 
dbComm.Parameters.Add("@Bouns",SqlDbType.VarChar,50); 
dbComm.Parameters.Add("@BasicWage",SqlDbType.VarChar,50); 
dbComm.Parameters.Add("@AllWage",SqlDbType.VarChar,50); 
dbComm.Parameters.Add("@Remark",SqlDbType.VarChar,300); 
dbComm.Parameters["@SalaryID"].Value=TextBox1.Text; 
dbComm.Parameters["@UserID"].Value=TextBox2.Text; 
dbComm.Parameters["@Dept"].Value=TextBox3.Text; 
dbComm.Parameters["@Year"].Value=TextBox4.Text; 
dbComm.Parameters["@Month"].Value=TextBox5.Text; 
dbComm.Parameters["@Bouns"].Value=TextBox6.Text; 
dbComm.Parameters["@BasicWage"].Value=TextBox7.Text; 
dbComm.Parameters["@AllWage"].Value=TextBox8.Text; 
dbComm.Parameters["@Remark"].Value=TextBox9.Text;   
int iID=0; 
 
 {   
  
            iID=Convert.ToInt32(dbComm.ExecuteScalar()); 
  
  
catch(Exception ex) 
  
  
sqlConnection1.Open(); 
 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
{ 
Response.Write("此工资编号已经存在,请
重新输入或者等待 3 秒后自动返
回添加员工信息页面
") ; 
Response.End (); 
try 
 
 
 
  
 
  
} 
finally 
{ 
  
 
  
  
 
                                       
  
  
  
  
  
} 
      Response.Redirect ("Success.aspx"); 
 
 
} 
Response.End (); 
} 
if(sqlConnection1.State==ConnectionState.Open) 
sqlConnection1.Close(); 
权限代码如下: 
Privilege= dr["Privilege"].ToString(); 
i=Convert.ToInt32(Privilege); 
switch(i) 
{ 
 case 11: 
 case 13: break; 
 default: 
 
break; 
this.Response.Write(""); 
  
} 
(2)工资查询界面:进入查询界面以后,分为普通员工进入和工资管理人员进入,程序会根据登录用户的权限
来判断该用户可以进入的界面。所有人都可以进入员工界面来查询自己的工资信息,工资管理人员可以进入管理界
面来查询所需要的信息。如图 5.3.2(a)。 
·26·                                                      武汉航海(武汉航海职业技术学院学报)                                        2008 年第 1 期 
员工查询界面如图 5.3.2(b)
图 5.3.2(a) 
 
该界面实现代码: 
private void Button1_Click(object sender, System.EventArgs e) 
图 5.3.2(b) 
 
Year = TextBox1.Text ; 
sqlDataAdapter1.SelectCommand.CommandText = "select * from Salary where [Year] =" + Year + "and 
[UserID] =" + i; 
{ 
 
 
{ 
 
 
} 
try 
 
 
 
 
catch 
 
 
 
 
finally 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                       
 
} 
 
{ 
 
try 
{ 
} 
{ 
} 
 
{ 
 
 
 
 
 
 
} 
catch 
 
 
 
 
 
 
finally 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
} 
{ 
 
 
sqlDataAdapter1.Fill(dataSet1); 
  DataGrid1.DataBind(); 
 
 
{ 
} 
{ 
} 
private void Button2_Click(object sender, System.EventArgs e) 
 
Month = TextBox2.Text ; 
 
 sqlDataAdapter1.SelectCommand.CommandText  =  "select  *  from  Salary  where  [Month]  ="  +  Month  +  "and 
[UserID] =" + i; 
sqlDataAdapter1.Fill(dataSet1); 
DataGrid1.DataBind(); 
private void Button3_Click(object sender, System.EventArgs e) 
Year = TextBox3.Text; 
Month =TextBox4.Text; 
 
 
sqlDataAdapter1.SelectCommand.CommandText  =  "select  *  from  Salary  where  [Year]  =  "  +  Year  +  "and 
 
2008 年第 1 期                                                    胡娟  基于 B/S 模式的工资管理系统                                                    ·27· 
[Month] =" + Month + "and [UserID] =" + i; 
 
 
sqlDataAdapter1.Fill(dataSet1); 
DataGrid1.DataBind(); 
{ 
 
 
} 
{ 
} 
{ 
} 
try 
 
 
 
 
catch 
 
 
finally 
 
 
} 
工资管理人员查询界面,如图 5.3.2(c) 
图 5.3.2(c) 
 
该界面实现代码如下: 
private void Button1_Click(object sender, System.EventArgs e) 
Year = TextBox1.Text ; 
sqlDataAdapter1.SelectCommand.CommandText = "select *from Salary where [Year] =" + Year; 
sqlDataAdapter1.Fill(dsSalary1); 
DataGrid1.DataBind(); 
 
 
 
} 
{ 
} 
  { 
  } 
{ 
 
{ 
 
 
 
try 
catch 
 
 
finally 
 
 
} 
 
{ 
 
{ 
 
 
 
try 
catch 
 
 
finally 
 
 
} 
private void Button2_Click(object sender, System.EventArgs e) 
Month = TextBox2.Text ; 
sqlDataAdapter1.SelectCommand.CommandText = "select * from Salary where [Month] =" + Month; 
 
sqlDataAdapter1.Fill(dsSalary1); 
DataGrid1.DataBind(); 
 
 
} 
{ 
} 
{ 
} 
·28·                                                      武汉航海(武汉航海职业技术学院学报)                                        2008 年第 1 期 
private void Button3_Click(object sender, System.EventArgs e) 
{ 
 
 
 
 
 
Year = TextBox3.Text; 
Month =TextBox4.Text; 
sqlDataAdapter1.SelectCommand.CommandText = "select * from Salary where [Year] = " + Year + 
 
 
"and [Month] =" + Month; 
private void Button4_Click(object sender, System.EventArgs e) 
UserID = TextBox5.Text; 
sqlDataAdapter1.SelectCommand.CommandText = "select * from Salary where UserID = " + UserID; 
sqlDataAdapter1.Fill(dsSalary1); 
DataGrid1.DataBind(); 
{ 
 
 
} 
{ 
} 
{ 
} 
sqlDataAdapter1.Fill(dsSalary1); 
DataGrid1.DataBind(); 
{ 
 
 
} 
{ 
} 
{ 
} 
{ 
 
 
 
try 
try 
catch 
 
 
finally 
 
 
} 
catch 
 
 
finally 
 
 
 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
{ 
 
 
 
} 
private void Button5_Click(object sender, System.EventArgs e) 
Dept = TextBox6.Text; 
sqlDataAdapter1.SelectCommand.CommandText = "select * from Salary where Dept = '" + Dept + "'"; 
sqlDataAdapter1.Fill(dsSalary1); 
DataGrid1.DataBind(); 
Private  void  DataGrid1_PageIndexChanged(object  source,  System.Web.UI.WebControls.DataGridPageChangedEventArgs 
e)   
{ 
 
 
 
(3)工资修改界面:只有工资管理人员才能进入该界面,该界面如图 5.3.3(a)。 
DataGrid1.CurrentPageIndex = e.NewPageIndex; 
DataGrid1.DataBind(); 
 
 
}