能选择界面是不同的。 (3)管理收支信息:用户根据提示输入家庭成员的姓名、各项财务信息,如收入、支出、合计。 (4)增加家庭成员收支信息:可在原有收支信息文件的基础上增加新的家庭成员财务信息记录,并继续保存至数据库。 (5)删除家庭成员收支信息:提示用户输入要进行删除操作的家庭成员,如果在文件中有该家庭成员的收支信息存在,则将该序号所对应的姓名、序号、各种收入信息等在对应项目中加以删除。 (6)修改家庭成员收支信息:提示用户输入要进行修改操作的家庭成员,如果有该家庭成员的收支信息存在,则提示用户输入该序号对应的家庭成姓名、收入和支出构成等需要修改的选项,并将修改结果存储于数据库。 (7)查询家庭成员财务情况:分为根据家庭成员查询和项目查询两个具体需求,选择其中一项用户输入要查询家庭成员信息或项目,如果在数据库中有对应的家庭成员财务信息,则逐项列出对应家庭成员的收支状况。 (8)家庭成员管理:家长对普通家庭成员的管理也需要进行家庭成员的创建、增加、删除、修改和浏览。每当有家庭成员登录系统时,系统都会根据数据库中的用户名和密码进行核实判断,用户才能够顺得登录。家长还具有增加新家庭成员的功能。当某些家庭成员不再使用系统时,还可进行删除操作,并且家长具有修改家庭成员权限的功能。2 / 19
2.3 程序流程图 家庭财务管理系统家庭成员管理收支项目管理统计管理其他功能家庭成员增加家庭成员修改家庭成员删除收支项目增加收支项目修改收支项目查找收入项目统计支出项目统计数据库备份 图1内部功能模块图 2.4系统工作原理 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图2所示 。 3 / 19
执行过程请求客户端回发验证Web服务器传送数据库检索 图 2系统工作原理图 2.5数据库设计 2.5.1数据库需求分析 数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MYSQL,SQL Server, Oracle等。我采用了SQL server2005数据库管理系统,建立的数据库名为FinancialManagement。 2.5.2数据库结构设计 主要用于保存家庭人员的基本信息,该表的结构如表1 所示 表1 Users表(家庭人员信息表) 列名 Id Name Pwd RealName 数据类型 Int Nvarchar Nvarchar Navarre 长度 4 50 50 50 允许空 否 是 是 是 主要用于保存记账类型的基本信息,该表的结构如表2 所示 表 2 Type表(记账类型信息表) 列名 Id Name Type 数据类型 Int Nvarchar Nvarchar 长度 4 50 50 允许空 否 是 是 4 / 19
主要用于收入记账的基本信息,该表的结构如表3所示 表3 F_shouru表(财务信息表) 列名 Id Name Type Addtime UserName AddMoney Ds 数据类型 Int Nvarchar Nvarchar Datetime Nvarchar Float Text 长度 4 50 50 8 50 8 16 允许空 否 是 是 是 是 是 是 主要用于支出记账的基本信息,该表的结构如表4所示 表 4 F_zhichu表 (财务信息表) 列名 Id Name Type Addtime UserName AddMoney Ds 数据类型 Int Nvarchar Nvarchar Datetime Nvarchar Float Text 长度 4 50 50 8 50 8 16 允许空 否 是 是 是 是 是 是 主要用于保存数据类型的基本信息,该表的结构如表5所示 表 5 Data表(数据类型信息表) 列名 Id Path Addtime 数据类型 Int Nvarchar Addtime 长度 4 500 50 允许空 否 是 是 5 / 19
2.6系统E-R图 家庭财务管理系统如图3所示 数据备份数据收入项目收入日期属于支出日期支出项目收入成员收入收入金额备注属于种类属于收入用户支出支出支出成员输入帐号输入密码备注支出金额生活费用分类教育费用收支种类生活费用教育费用 图3 E-R图 2.7处理流程设计 2.7.1 系统操作流程 如图4所示: 6 / 19
系统主界面系统登录界面系统管理输入操作员及密码数据库检查密码正确功能界面功能处理错误信息密码错误 图4 系统操作流程 2.7.2 数据增加流程 添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。数据增加流程图:如下图5所示。 开始自动生成编号输入数据是否合法写入数据库结束 图5 数据增加流程图 2.7.3 数据修改流程 在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,合法则保存至数据库,不合法重新输入。数据修改流程图如下图6所示。 7 / 19
开始选择需要修改的记录输入数据是否合法写入数据库结束图6 数据修改流程图 2.7.4 数据删除流程 当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删除数据库相关内容。数据删除流程图如下图7所示。 开始选择需要删除的记录是否删除更新数据库结束图7 数据删除流程图 8 / 19
3功能模块设计 3.1用户登陆模块 系统的登录界面,需要家庭成员才能登录进入使用系统,当输入错误的帐号、密码会有提示框提醒重新输入。如图8所示: 图8 用户登录模块 主要代码如下: private void chkUser() { if (TxtUserName.Text == \"\" && TxtPassword.Text == \"\") { Alert.AlertAndRedirect(\"没有输入账号和密码!\ } else { dr = data.GetDataReader(\"select * from [Users] where Name='\" + TxtUserName.Text.Trim() + \"'and Pwd='\" + TxtPassword.Text.Trim() + \"'\"); if (dr.Read()) { Session[\"User\"] = dr[\"Name\"].ToString(); Response.Redirect(\"Default.aspx\"); } else { Alert.AlertAndRedirect(\"账号或者密码不对请重新登陆!\ } } 9 / 19
} protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { chkUser(); } protected void ImageButton2_Click(object sender, ImageClickEventArgs e) { TxtPassword.Text = \"\"; TxtUserName.Text = \"\"; } protected void LinkButton1_Click(object sender, EventArgs e) { Response.Redirect(\"Login.aspx\"); } 3.2 账目管理模块 进入账簿管理可以对录入的收支项目进行查看、修改、删除、新增和查找管理账目信息。如下图9所示: 图9 账目管理模块 主要代码如下: protected void gvFilms_RowDeleting(object sender, GridViewDeleteEventArgs e) { SqlHelper mydata = new SqlHelper(); string ID = gvFilms.DataKeys[e.RowIndex].Values[0].ToString(); try { mydata.RunSql(\"delete from F_Money where id='\" + ID + \"'\"); Label4.Text = \"删除成功!\"; gvFilms.EditIndex = -1; Get_Article(); } 10 / 19
catch { Label4.Text = \"删除失败!\"; } } private void Get_Article() { try { gvFilms.DataSource = GetCodeBy(0); gvFilms.DataBind(); } catch { } } protected void gvFilms_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvFilms.PageIndex = e.NewPageIndex; Get_Article(); } protected void gvFilms_RowDataBound(object sender, GridViewRowEventArgs e) { //鼠标移动变色 if (e.Row.RowType == DataControlRowType.DataRow) { //当鼠标放上去的时候 先保存当前行的背景颜色 并给附一颜色 e.Row.Attributes.Add(\"onmouseover\\"currentcolor=this.style.backgroundColor;this.style.backgroundColor='#f6f6f6',this.style.fontWeight='';\"); //当鼠标离开的时候 将背景颜色还原的以前的颜色 e.Row.Attributes.Add(\"onmouseout\\"this.style.backgroundColor=currentcolor,this.style.fontWeight='';\"); } //单击行改变行背景颜色 if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add(\"onclickhis.style.color='buttontext';this.style.cursor='default';\"); } } public DataSet GetCodeBy(int iCount) { SqlHelper date = new SqlHelper(); 11 / 19
string strTop = \"\"; if (iCount > 1) { strTop = \"top \" + iCount.ToString(); } string sql = \"select \" + strTop + \" * from [F_Money] \"; SqlConnection con = new SqlConnection(SqlHelper.connstring); SqlCommand cmd = new SqlCommand(sql, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = null; try { con.Open(); ds = new DataSet(); da.Fill(ds); } catch (SqlException ex) { throw ex; } catch (Exception ex) { throw ex; } finally { con.Close(); } return ds; } protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { Response.Redirect(\"AddMoney.aspx\"); } protected void ImageButton2_Click(object sender, ImageClickEventArgs e) { Response.Redirect(\"Search.aspx\");} 3.3 添加账目模块 家庭成员登陆后可以进入账簿管理,在这里可以添加账目信息,包括收支的项目、收支类型、收支成员类型、收支的金额和可以对这笔记账进行备注。如图10所示: 12 / 19
图10 添加模块 主要代码如下: Alert alert = new Alert(); SqlHelper data = new SqlHelper(); public string DownPath; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Type(); Users(); } } private void Type() { drpParentItem.DataSource = data.GetDataReader(\"select * from Type \"); drpParentItem.DataTextField = \"name\"; drpParentItem.DataValueField = \"id\"; drpParentItem.DataBind(); } private void Users() { drpUserName.DataSource = data.GetDataReader(\"select * from Users \"); drpUserName.DataTextField = \"RealName\"; drpUserName.DataValueField = \"id\"; drpUserName.DataBind(); } 13 / 19
protected void IbnOk_Click(object sender, ImageClickEventArgs e) { data.RunSql(\"insert into F_Money(name,Type,UserName,AddMoney,Ds)values('\" + drpParentItem.SelectedItem.Text + \"','\" + drpSubItem.SelectedItem.Text + \"','\" + drpUserName.SelectedItem.Text + \"','\" + TxtMoney.Text + \"','\" + TxtStatement.Text + \"')\"); Alert.AlertAndRedirect(\"添加成功!\ } protected void IbnCanel_Click(object sender, ImageClickEventArgs e) { Response.Redirect(\"MangerZb.aspx\"); } 3.4 查找账目信息 家庭成员登陆后进入账簿管理,可以按时间对账目信息进行查询。如图11所示: 图11 查找模块 主要代码如下: protected void IbnOk_Click(object sender, ImageClickEventArgs e) { string beingtime = txttime1.Value; string endtime = Text1.Value; Response.Redirect(\"SearchList.aspx?b=\"+beingtime+\"&e=\"+endtime); } protected void IbnCanel_Click1(object sender, ImageClickEventArgs e) { Response.Redirect(\"MangerZb.aspx\"); 14 / 19
} 3.5 家庭人员管理模块 家庭成员登陆后,进入家庭成员管理模块,对现有的家庭成员进行添加、删除和修改。如图12所示: 图12 家庭成员管理模块 主要代码如下: protected void ImageButton2_Click1(object sender, ImageClickEventArgs e) { Response.Redirect(\"AddUser.aspx\"); } protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { data.RunSql(\"insert into Users(Pwd,Name,RealName)values('\" + TextBox4.Text + \"','\" + TextBox3.Text + \"','\" + TextBox2.Text + \"')\"); Alert.AlertAndRedirect(\"添加成功!\ } 3.6 账目类别信息管理 家庭成员登陆后,进入收支项目管理可以对所需要的项目进行添加、修改和删除账目类别信息。如图13所示: 15 / 19
图13收支项目管理模块 主要代码如下: protected void InitData() { SqlHelper mydata = new SqlHelper(); GridView1.DataSource = mydata.GetDataReader(\"select * from Type\"); GridView1.DataBind(); } //GridView控件RowDeleting事件 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { SqlHelper mydata = new SqlHelper(); string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString(); try { mydata.RunSql(\"delete from Type where id='\" + ID + \"'\"); Label4.Text = \"删除成功!\"; GridView1.EditIndex = -1; InitData(); } catch { Label4.Text = \"删除失败!\"; } } 3.7 账目统计信息 家庭成员登陆后,进入报表统计模块,可以查询现有账目信息,可以导出Excel 保存和打印所需要的数据。如图14所示: 16 / 19
图14 账目统计模块 主要代码如下: public DataSet GetCodeBy(int iCount) { SqlHelper date = new SqlHelper(); string strTop = \"\"; if (iCount > 1) { strTop = \"top \" + iCount.ToString(); } string sql = \"select \" + strTop + \" * from [F_Money] \"; SqlConnection con = new SqlConnection(SqlHelper.connstring); SqlCommand cmd = new SqlCommand(sql, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = null; try { con.Open(); ds = new DataSet(); da.Fill(ds); } catch (SqlException ex) { throw ex;} catch (Exception ex) {throw ex;} finally {con.Close();} return ds; } private void DisableControls(Control gv) { 17 / 19
LinkButton lb = new LinkButton(); Literal l = new Literal(); string name = String.Empty; for (int i = 0; i < gv.Controls.Count; i++) { if (gv.Controls[i].GetType() == typeof(LinkButton)) { l.Text = (gv.Controls[i] as LinkButton).Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(DropDownList)) { l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } if (gv.Controls[i].HasControls()) { DisableControls(gv.Controls[i]); } } } public override void VerifyRenderingInServerForm(Control control) { } protected void Button1_Click(object sender, EventArgs e) { DisableControls(gvFilms); Response.ClearContent(); Response.AddHeader(\"content-disposition\ Response.ContentType = \"application/excel\"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); gvFilms.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); } 18 / 19
4.设计体会 通过这次课程设计,我大致了解了进行软件开发工作的基本过程,并且从中获得了许多实际的、有意义的知识,其中我对以下几点有深刻的体会: 1)编程中定义窗体及变量的名称时,一定要规范,要让其他编程人员能够看懂,必要时可以加注释。 2)对各个控件的属性、事件要了解清楚,这样才能在编程的过程中熟练的应用。 3)在编程的过程中要不断的思考,对每一个可能出现的问题都尽量在编程中处理掉,避免以后的麻烦。 4)对编程中用到的函数,要将其变量的含义了解清楚,这样才能顺 利应用,以实现函数的功能。 5)程序编好后调试是非常重要的,它的意义在于通过调试可以逐步完善它的功能,改正程序中的错误,使程序尽量达到尽善尽美,在调试的过程中尽量不要以编程时的思想去调试,要以一个普通用户的思维去思考。 5.参考文献 [1]屈喜龙,朱杰等. ASP+SQL SERVER开发动态网站实例荟粹[M].北京:机械出版社,2013. [2]李明刚. ASP.NET Web站点高级编程范例[M]. 清华大学出版社第五事业部,2010 [3]曹衍龙.ASP/ASP.NET数据库开发实用工程案例精选[M]. 北京:清华大学出版社,2014. [4]Mesbah Ahmed,Chris Garrett,Jeremy Faircloth,Chris Payne.Design Microsoft asp.netapplication[M]. Syngress Publishing, Inc,2012. [5]Visual C#.NET Web 应用程序设计[M].北京:清华大学出版社,2012.1 [6]陈恩义.Michael Otey,Paul Conte[英]. SQL Server 2000开发指南[M].北京:清华大学出版社,2014. [7]Dreamweaver MX 2004 完全征服手册[M].北京;中国青年出版社,2014. [8]吕静骅 史进.Dusan Petkovic[美].SQL Server 2000基础教程[M].北京:清华大学出版社,2011 [9]李万宝. ASP.NET技术详解与应用实例[M].北京:机械工业出版社,2015. [10]Douglas J. Reilly .Design Microsoft asp.net application[M].北京:清华大学出版社,2011. 19 / 19
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务