捐款信息管理系统
技术
C#+sqlserver
主要功能
- 登录、注册功能,两种角色登录判断,一种为管理员,一种为用户
- 管理员发起项目,即发布项目,同时拥有对项目的增加、删除、修改、查询
- 用户对管理员发起的项目可以进行申请操作,根据发布的项目类型提交自己的募捐申请。
- 用户可以跟踪查询自己申请的结果,是否通过,以及是否完成。
- 管理员可以对用户的申请进行审批。
- 管理员对所有项目下的用户申请进行统一查询如:通过申请人、项目类型、是否通过、是否完成,金额入账等操作
- 计算捐款金额是否满足提交的所需金额,并给出结果,显示是否完成或者还差多少。
功能实现
管理员审批实现
功能描述
如图管理员首先可以通过申请人、项目类型进行查询,可以两个关键字联合,也可以单独,同时基于该两个字段可以查询相关通过的,未通过的,完成的,未完成的信息。如:申请人:小明,项目类型:希望工程。当点击全部查询,输出符合该两个条件的所有信息。如点击通过查询则筛选出符合该两条信息且申请要是通过的记录,点击未通过查询,完成项目查询和未完成项目同理。
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("请输入完整信息");
}
}
用户查询实现
用户端项目进度查看
用户登录后可以看见或者搜索查询自己申请项目的进度,并可以提交新的申请
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];
}
其余功能
功能实现
管理员增删查改逻辑比较简单,如下为操作数据库代码
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之家