工資管理系統

來源:互聯網
上載者:User

    前段時間一直在修改該系統的原型,剛開始接觸這個系統的時候,就感覺漏洞百出,首先是使用者權限分配不合理,再者是資料庫設計不合理,且不說用中文命名的習慣不好,該代碼冗餘嚴重。奈何實力有限,只能在其基礎上更改一二!!!

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

  

   首先是使用者權限分為四級,各部分各司其所咯,感謝拖鞋先生設計介面!!!

    現在回顧這些代碼,有點後怕,因為都是按照自己所設想的一步步修改,根本沒有做過任何分析,

    現在其中一個頁面代碼,希望各位可以從資料方面提點建議,

    頁面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值判斷是否允許開啟,對網路安全這塊的空白,讓我不知所措。

   

    可以說問題還是挺多的,一步一步,一個腳印!!!

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.