工资管理系统
前段时间一直在修改该系统的原型,刚开始接触这个系统的时候,就感觉漏洞百出,首先是用户权限分配不合理,再者是数据库设计不合理,且不说用中文命名的习惯不好,该代码冗余严重。奈何实力有限,只能在其基础上更改一二!!!
再次列出部分内容,希望各位指点一二...

首先是用户权限分为四级,各部分各司其所咯,感谢拖鞋先生设计界面!!!
现在回顾这些代码,有点后怕,因为都是按照自己所设想的一步步修改,根本没有做过任何分析,
现在截图其中一个页面代码,希望各位可以从数据方面提点建议,
页面asp.net代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="VerifyFujia.aspx.cs" Inherits="HZU.WQS.web.VerifyFujia" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>审核附加工资</title>
<link type="text/css" href="css/default.css" rel="Stylesheet" />
</head>
<body style="background-color:#e1e5e8;">
<form id="form1" runat="server">
<div class="title"></div>
<div style="font-size:13px; text-align:center; float:left;">
姓名:<asp:TextBox ID="SName" runat="server"></asp:TextBox>
部门:<asp:DropDownList ID="ribu" runat="server"><asp:ListItem></asp:ListItem></asp:DropDownList>
添加部门:<asp:DropDownList ID="zt" runat="server"><asp:ListItem></asp:ListItem></asp:DropDownList>
<asp:Button ID="btnree" runat="server" Text="查找" onclick="btnree_Click" />
<asp:GridView ID="gvSH" runat="server" AllowPaging="True" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None" DataKeyNames="id"
OnRowDeleting="gvSH_RowDeleting" OnPageIndexChanging="gvSH_PageIndexChanged"
OnSelectedIndexChanging="gvSH_SelectedIndexChanging"
EmptyDataText="暂时没有需要审核附件工资!" OnRowUpdating="gvSH_RowUpdating"
Width="776px" Font-Size="13px">
<RowStyle BackColor="#E3EAEB" />
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="check" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField InsertVisible="False" ShowHeader="False">
<ItemTemplate>
<asp:Button ID="btnShenHe" CausesValidation="False" CommandName="Update" runat="server" Text="通过" OnClientClick="return confirm('该操作无法撤销!确认通过吗?');" />
<asp:Button ID="btnDel" CausesValidation="False" CommandName="Delete" runat="server" Text="拒绝" OnClientClick="return confirm('该操作无法撤销!确认拒绝吗?');" />
</ItemTemplate>
<HeaderTemplate>
审核
</HeaderTemplate>
</asp:TemplateField>
<asp:BoundField DataField="编号" HeaderText="编号" />
<asp:BoundField DataField="姓名" HeaderText="姓名" />
<asp:BoundField DataField="部门" HeaderText="部门" />
<asp:BoundField DataField="金额" HeaderText="金额" />
<asp:BoundField DataField="备注" HeaderText="备注" />
<asp:BoundField DataFormatString="{0:yyyy-MM}" DataField="年月份" HeaderText="年月份" />
<asp:BoundField DataField="添加部门" HeaderText="添加部门" />
<asp:BoundField DataField="状态" HeaderText="状态" />
</Columns>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:CheckBox ID="checkpz" AutoPostBack="True" runat="server" OnCheckedChanged="checkpz_CheckedChanged" Text="全选" />
<asp:Button ID="Button1" runat="server" Text="全部批准" OnClick="Button1_Click1" OnClientClick="return confirm('该批量操作无法撤销!确认通过吗?');" />
<asp:Button
ID="Button2" runat="server" Text="全部拒绝" onclick="Button2_Click" OnClientClick="return confirm('该批量操作无法撤销!确认通过吗?');"/>
</div>
</form>
</body>
</html>
cs 文件代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
using HZU.WQS.web.config;
using HZU.DBUtility;
using System.Globalization;
namespace HZU.WQS.web
{
public partial class VerifyFujia : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["财务管理"] == null)
{
Response.Redirect("index.aspx");
}
if (!IsPostBack)
{
DataTable dt = DbHelperSQL.Query("select distinct 部门 from 附加工资表").Tables[0];
foreach (DataRow dr in dt.Rows)
{
ListItem li = new ListItem(dr["部门"].ToString(), dr["部门"].ToString());
ribu.Items.Add(li);
}
DataTable dd = DbHelperSQL.Query("select distinct 添加部门 from 附加工资表 where 状态='未审核'").Tables[0];
foreach (DataRow dr in dd.Rows)
{
ListItem li = new ListItem(dr["添加部门"].ToString(), dr["添加部门"].ToString());
zt.Items.Add(li);
}
dt.Dispose();
gvDataBind();
}
}
private void gvDataBind()
{
DataSet dt1 = DbHelperSQL.Query("select 个人信息.姓名, 附加工资表.* from 附加工资表,个人信息 where 附加工资表.编号=个人信息.编号 and 附加工资表.状态='未审核'"+ViewState["whereStr"]);
gvSH.DataSource = dt1;
gvSH.DataKeyNames = new string[] { "id" };
gvSH.DataBind();
}
protected void gvSH_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
gvSH.PageIndex = e.NewSelectedIndex;
gvDataBind();
}
protected void gvSH_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
string id = gvSH.DataKeys[e.RowIndex].Value.ToString();
DbHelperSQL.ExecuteSql("update 附加工资表 set 状态='拒绝', 审核时间='" + DateTime.Now + "' where id=" + id);
gvDataBind();
}
catch (Exception)
{
AddInfo.AddJsCode(this, "alert('系统出错!')");
}
}
protected void gvSH_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
string id = gvSH.DataKeys[e.RowIndex].Value.ToString();
string date = DateTime.Now.ToString("yyyy-MM", DateTimeFormatInfo.InvariantInfo);
DateTime day = DateTime.Parse(date.ToString());
DbHelperSQL.ExecuteSql("update 附加工资表 set 状态='通过',审核时间='" + day + "' where id=" + id);
//try
//{
object hh = DbHelperSQL.GetSingle("select 编号 from 附加工资表 where id='" + id + "'");
DataRow dr = DbHelperSQL.Query("select 个人信息.*,附加工资表.金额 from 个人信息,附加工资表 where 个人信息.编号='" + hh + "'").Tables[0].Rows[0];
bool ree = DbHelperSQL.Exists("select 编号 from 附加总工资 where 编号='" + dr["编号"].ToString() + "' and 年月份 ='" + day + "'");
if (!ree)
{
DbHelperSQL.ExecuteSql("insert into 附加总工资(编号,部门,总额,年月份) values('" + dr["编号"].ToString() + "','" + dr["部门"].ToString() + "','" + dr["金额"].ToString() + "','" + day + "') ");
}
else
{
float chan = float.Parse(dr["金额"].ToString());
DbHelperSQL.ExecuteSql("update 附加总工资 set 总额=总额+'" + chan + "' where 编号='" + dr["编号"].ToString() + "'");
}
//}
//catch (Exception ex)
//{
// AddInfo.AddJsCode(this, "alert('" + ex + "')");
//}
gvDataBind();
}
catch (Exception)
{
AddInfo.AddJsCode(this, "alert('系统出错!')");
}
}
protected void gvSH_PageIndexChanged(object sender, GridViewPageEventArgs e)
{
gvSH.PageIndex = e.NewPageIndex;
gvDataBind();
}
protected void Button1_Click1(object sender, EventArgs e)
{
try
{
for (int i = 0; i < gvSH.Rows.Count; i++)
{
CheckBox chk = (CheckBox)gvSH.Rows[i].FindControl("check");
if (chk.Checked == true)
{
string strSql = "update 附加工资表 set 状态='通过', 审核时间='" + DateTime.Now + "' where id= '" + gvSH.DataKeys[i].Value + "'";
bool p_update = DbHelperSQL.Exists(strSql);
if (!p_update)
{
Response.Write("<script>批准失败,请重试!</script>");
}
}
}
gvDataBind();
checkpz.Checked = false;
}
catch (Exception)
{
AddInfo.AddJsCode(this, "alert('系统出错!')");
}
}
protected void checkpz_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < gvSH.Rows.Count; i++)
{
CheckBox chk = (CheckBox)gvSH.Rows[i].FindControl("check");
if (checkpz.Checked == true)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
try
{
for (int i = 0; i < gvSH.Rows.Count; i++)
{
CheckBox chk = (CheckBox)gvSH.Rows[i].FindControl("check");
if (chk.Checked == true)
{
string strSql = "update 附加工资表 set 状态='拒绝', 审核时间='" + DateTime.Now + "' where id= '" + gvSH.DataKeys[i].Value + "'";
bool p_update = DbHelperSQL.Exists(strSql);
if (!p_update)
{
Response.Write("<script>拒绝失败,请重试!</script>");
}
}
}
gvDataBind();
checkpz.Checked = false;
}
catch (Exception)
{
AddInfo.AddJsCode(this, "alert('系统出错!')");
}
}
protected void btnree_Click(object sender, EventArgs e)
{
ViewState["whereStr"] = "";
ViewState["whereStr1"] = "";
string dep = ribu.SelectedValue;
string name = SName.Text;
string state = zt.SelectedValue;
string sqlStr = "select 附加工资表.*,个人信息.姓名 from 附加工资表,个人信息 where 附加工资表.编号=个人信息.编号 and 附加工资表.状态='未审核'";
if (dep != "") ViewState["whereStr"] = ViewState["whereStr"] + " and 附加工资表.部门='" + dep + "' ";
if (name != "") ViewState["whereStr"] = ViewState["whereStr"] + " and 个人信息.姓名='" + name + "' ";
if (state != "") ViewState["whereStr"] = ViewState["whereStr"] + " and 附加工资表.添加部门='" + state + "' ";
DataSet ds = DbHelperSQL.Query(sqlStr + ViewState["whereStr"] + ViewState["whereStr1"]);
gvSH.DataSource = ds;
gvSH.DataBind();
}
}
}
1,本页面是工资的审核页面,我没有分析过在同一个数据表里面通过update进行更改工资的状态已表示是否通过审核是否合理,却感觉没有必要新建另一个数据表存储这些信息。
2,后台的数据查询,插入,更改语句过多,反复的对数据库进行操作,降低了数据加载运行的速度,本人没有学习LINQ TO SQL ,所以对00 的数据处理方式不是很了解,所以在此基础上行,只能牺牲效率,完成任何,罪过罪过......
3,页面的生命周期,因为对页面输出产生的事件的顺序以及作用概念比较模糊,最初将数据绑定放至判断语句if内,导致在多项审核的过程中,页面不会自动回传,页面内容不改变,而数据已经上传数据库处理,得一师兄指导,放至try内,方才解决问题,从这点可以看出对事件的概念的模糊,罪过罪过...
4,用户的登录,用户分为四个等级,虽然密码通过md5加密,页面登录过程也没有用cookies保存任何用户信息,因为考虑到没有这个必要,只是用session,貌似又增加了服务器端的压力,暂不考虑这些, 总感觉安全性低,页面通过session值判断是否允许打开,对网络安全这块的空白,让我不知所措。
可以说问题还是挺多的,一步一步,一个脚印!!!

浙公网安备 33010602011771号