捐款信息管理系统

技术

C#+sqlserver

主要功能

  1. 登录、注册功能,两种角色登录判断,一种为管理员,一种为用户
  2. 管理员发起项目,即发布项目,同时拥有对项目的增加、删除、修改、查询
  3. 用户对管理员发起的项目可以进行申请操作,根据发布的项目类型提交自己的募捐申请。
  4. 用户可以跟踪查询自己申请的结果,是否通过,以及是否完成。
  5. 管理员可以对用户的申请进行审批。
  6. 管理员对所有项目下的用户申请进行统一查询如:通过申请人、项目类型、是否通过、是否完成,金额入账等操作
  7. 计算捐款金额是否满足提交的所需金额,并给出结果,显示是否完成或者还差多少。

功能实现

管理员审批实现

C#捐款信息管理系统-LMLPHP
功能描述
如图管理员首先可以通过申请人、项目类型进行查询,可以两个关键字联合,也可以单独,同时基于该两个字段可以查询相关通过的,未通过的,完成的,未完成的信息。如:申请人:小明,项目类型:希望工程。当点击全部查询,输出符合该两个条件的所有信息。如点击通过查询则筛选出符合该两条信息且申请要是通过的记录,点击未通过查询,完成项目查询和未完成项目同理。

string  allinfo= "select * from (select p.项目编号,a.受捐人编号 申请编号,u.昵称 申请人,p.项目类型,a.申请时间,a.所需金额,a.已筹金额,a.审核状态,(case when a.已筹金额>=a.所需金额 then '是' else '否' end ) as 项目是否完成,a.被捐账号 from apply a left join project p on a.xmID=p.项目编号 left join userLogin u on a.申请人=u.账号) tab";

public DataTable GetAllDataType(string a, string b,string type)   //通过
{
     string strsql = "";
     if (type == "pass")
     {
         strsql = allinfo + " where 审核状态='通过'";
     }
     else if (type == "notpass")
     {
         strsql = allinfo + " where 审核状态='未通过'";
     }
     else if (type == "finish")
     {
         strsql = allinfo + " where 项目是否完成='是'";
     }
     else if (type == "notfinish")
     {
         strsql = allinfo + " where 项目是否完成='否'";
     }
     if (a != "" && b == "")
     {
         strsql = string.Format(strsql + " and 申请人='{0}'", a);
     }
     else if (a == "" && b != "")
     {
         strsql = string.Format(strsql + " and 项目类型='{0}'", b);
     }else if(a == "" && b == "")
     {
         strsql = string.Format(strsql );
     }
     else
     {
         strsql = string.Format(strsql + " and 申请人='{0}' and 项目类型='{1}'", a, b);
     }

     SqlDataAdapter da = new SqlDataAdapter(strsql, DBHelper.connString);
     DataSet dt = new DataSet();
     da.Fill(dt);
     return dt.Tables[0];
 }
 private void getAllDataType(string type)
  {
       if (box1.Text == "")
       {
           dataGridView1.DataSource = tabm.GetAllDataType("", box2.Text, type);
           return;
       }

       if (box2.Text == "")
       {
           dataGridView1.DataSource = tabm.GetAllDataType(box1.Text, "", type);
           return;
       }
       dataGridView1.DataSource = tabm.GetAllDataType(box1.Text, box2.Text, type);
   }
private void button4_Click(object sender, EventArgs e)
 {
     getAllDataType("pass");
 }

 private void button5_Click(object sender, EventArgs e)
 {
     getAllDataType("notpass");
     
 }
 private void button6_Click(object sender, EventArgs e)
 {
     getAllDataType("finish");
 }

管理员可以审批用户的申请,直接输入申请编号,点击通过,即完成操作

 if (!(ver.IsNumber(textBox6.Text)))
  {
      MessageBox.Show("项目编号只能为数字!");
      return;
  }
  if (textBox6.Text!="")
  {
      try
      {
          int b1 = int.Parse(textBox6.Text);
          bool resultID = tabm.GetApplyID(b1,"未通过","否");
          if (!resultID)
          {
              MessageBox.Show("无该申请编号信息");
              return;
          }
          bool result = tabm.UpdatePass(b1);
          if (result)
          {
              MessageBox.Show("审批成功");
              getAll();
              getAllDataType("notpass");
              textBox6.Text = "";
          }
          else
          {
              MessageBox.Show("审批失败");
          }
      }
      catch
      {
          MessageBox.Show("输入有误");
      }

  }
  else
  {
      MessageBox.Show("请输入完整信息");
  }

添加金额则是在已筹金额的基础上进行添加,当已筹金额大于等于所需金额的时候,进行项目结束完成处理;当已筹金额小于所需金额的时候,计算两者差距,天机添加后提示项目差距多少完成。

private void button3_Click(object sender, EventArgs e)
{
    if (!(ver.IsNumber(box6.Text)))
    {
        MessageBox.Show("申请人编号只能为数字!");
        return;
    }
    if (box6.Text != "" && box7.Text!="")
    {
        try
        {
            int b1 = int.Parse(box6.Text);
            int b2 = int.Parse(box7.Text);

            bool resultpass = tabm.GetApplyID(b1, "未通过", "否");
            if (resultpass)
            {
                MessageBox.Show("该申请项目还未通过,无法筹集资金");
                return;
            }
            bool resultID = tabm.GetApplyID(b1,"通过","是");
            if (resultID)
            {
                MessageBox.Show("该申请项目已经完成");
                return;
            }
            string money=tabm.GetApplyByID(b1).Rows[0]["已筹金额"].ToString();
            string need = tabm.GetApplyByID(b1).Rows[0]["所需金额"].ToString();
            int addMoney = int.Parse(money) + b2;
            bool resultMoney;
            if (addMoney >= int.Parse(need))
            {
                //money,是否,id
                resultMoney = tabm.UpdateMoney(addMoney,"是",b1);
                if (resultMoney)
                {
                    MessageBox.Show("金额已添加,当前项目已完成");
                    getAllDataType("notfinish");
                    return;
                }
                else
                {
                    MessageBox.Show("金额添加失败");
                }
            }
            else
            {
                resultMoney = tabm.UpdateMoney(addMoney, "否", b1);
                int m = int.Parse(need) - addMoney;
                if (resultMoney)
                {
                    MessageBox.Show("金额已添加,当前项目还需筹集: "+m+" 元");
                    getAllDataType("notfinish");
                    return;
                }
                else
                {
                    MessageBox.Show("金额添加失败");
                }
            }
        }
        catch
        {
            MessageBox.Show("输入有误");
        }
    }
    else
    {
        MessageBox.Show("请输入完整信息");
    }
    

}

用户查询实现

C#捐款信息管理系统-LMLPHP
用户端项目进度查看
用户登录后可以看见或者搜索查询自己申请项目的进度,并可以提交新的申请

public bool GetApplyID(int a,string status,string finish)           
{
    string strsql = string.Format(allinfo + " where 申请编号=@申请编号 and 审核状态='{0}' and 项目是否完成='{1}'", status,finish);
    SqlParameter[] param = new SqlParameter[]
     {
        new SqlParameter("@申请编号",a)
     };
    DataTable dt = DBHelper.GetDataTable(strsql, param);
    if (dt.Rows.Count != 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
public DataTable GetApply(int a,string b)       //全部查找
{
    string strsql = "";
    if (a == 0 && b != "")
    {
        strsql = string.Format(sql + " where p.项目类型='{0}'",b);
    }
    else if(a != 0 && b == "")
    {
        strsql = string.Format(sql + " where a.受捐人编号='{0}'",a);
    }
    else
    {
        strsql = string.Format(sql + " where a.受捐人编号='{0}' and p.项目类型='{1}'", a, b);
    }
    SqlDataAdapter da = new SqlDataAdapter(strsql, DBHelper.connString);
    DataSet dt = new DataSet();
    da.Fill(dt);
    return dt.Tables[0];
}

其余功能

C#捐款信息管理系统-LMLPHP
功能实现
管理员增删查改逻辑比较简单,如下为操作数据库代码

 public bool Add(string a)
 {
     string sqlStr = "insert into project (项目类型) values(@项目类型)";
     SqlParameter[] param = new SqlParameter[]
     {
         new SqlParameter("@项目类型",a)
     };
     return DBHelper.ExcuteCommand(sqlStr, param);
 }

 public bool Update(int a,string tabs)
 {
     string sqlStr = "update project set 项目类型=@项目类型 where 项目编号=@项目编号";

     SqlParameter[] param = new SqlParameter[]
     {
         new SqlParameter("@项目类型",tabs),
         new SqlParameter("@项目编号",a)
         
     };
     return DBHelper.ExcuteCommand(sqlStr, param);
 }
 public DataTable GetAll()   //全部数据获取
 {
       string strsql = "select * from project";
       SqlDataAdapter da = new SqlDataAdapter(strsql, DBHelper.connString);
       DataSet dt = new DataSet();
       da.Fill(dt);
       return dt.Tables[0];
   }
public bool Delete(Tab tabs)        //删除数据
{
    string str = "delete From project where 项目编号 = @项目编号";
    SqlParameter[] param = new SqlParameter[]
    {
       new SqlParameter("@项目编号",tabs.box1)
    };
    return DBHelper.ExcuteCommand(str, param);
}

以上为该系统基本逻辑梳理,更多系统源码可访问 winform之家

12-10 16:04