工资管理系统

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

    再次列出部分内容,希望各位指点一二...

  

   首先是用户权限分为四级,各部分各司其所咯,感谢拖鞋先生设计界面!!!

    现在回顾这些代码,有点后怕,因为都是按照自己所设想的一步步修改,根本没有做过任何分析,

    现在截图其中一个页面代码,希望各位可以从数据方面提点建议,

    页面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值判断是否允许打开,对网络安全这块的空白,让我不知所措。

   

    可以说问题还是挺多的,一步一步,一个脚印!!!

  

posted @ 2010-12-08 22:16  celvin  阅读(1075)  评论(0编辑  收藏  举报