《基于net的个人理财系统本科毕业(设计)论文.doc》由会员分享,可在线阅读,更多相关《基于net的个人理财系统本科毕业(设计)论文.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、泰 山 学 院本科毕业论文基于.NET的个人理财系统所 在 学 院 信息科学技术学院 专 业 名 称 计算机科学与技术 申请学士学位所属学科 工 学 年 级 学生姓名、学号 指导教师姓名、职称 完 成 日 期 摘要摘 要当今世界,人们处在信息爆炸的时代,通过计算机处理工作以及生活上的事情已经成为人们生活之中不可或缺的一部分。方便、快捷、清晰的处理自己的事情成为人们对计算机应用服务的基本要求。在高节奏的工作及生活之下,人们对自身财务的管理及分配便有着更高的期望和需求,因此在当今社会人们工作生活中普遍使用微软的操作系统的情况下,在.NET平台上开发一款财务管理系统显得恰逢其时。该系统可以提供最简单
2、的财务登记方式,最直观的财务走向以及最方便的财务分配手段。本系统的实现用到了计算机程序领域的相关技术,其中包括C#语言、SQL Server数据库、XML数据集,使用到了Visual Studio 2010、SQL Server Management Studio等工具。关键词:C#;XML;SQL server数据库;Visual Studio ; SQL Server Management Studio ABSTRACTABSTRACTIn todays world,peopleare in the era of information explosion,processingby com
3、puterand things in lifehas becomean indispensable part of peopleslives.Conv.Convenient,fast ownthingsbecome the basicrequirement for computer applicationservice.Under thehigh pace oflife and work,management and distributionoftheir financialpeoplehave higher expectationsand demands,so thecommonly use
4、doperating systemMicrosoftin todays societyin peoples lifesituation,the development of afinancial managementsystemwasthe right timeon the.NET platform.The system canprovideto registration,the most intuitiveandmost convenientmeans offinancialallocation.This systemmake use of thecomputer programin the
5、 field ofrelated technology,including C#,SQL,XMLlanguageServer databasedata set,use the VisualStudio 2010,SQLServer ManagementStudio and other tools.Key words: C#;XML;SQL server database;Visual Studio ; SQL Server Management StudioII目录目 录1 引 言12 系统分析12.1 需求分析12.2 可行性分析23 总体设计23.1 项目规划23.2 系统窗体功能结构图2
6、3.3 设计目标33.4 开发工具及运行环境33.5 逻辑结构设计44 财务管理系统总体架构44.1 系统各功能窗体的运行结果44.2 系统数据集及数据库设计95 系统前台各功能模块的实现115.1 导航窗体功能及实现115.2 财务管理窗体主窗体115.3 财务管理系统财务记事窗体195.4 创建方法类246 结束语28参考文献30致谢31泰山学院本科毕业论文(设计)1 引 言当今人们所处时代是一个科技、经济、人文高速发展以及信息量几何级数的增长与传递的时代,计算机的应用在短短的十几年间便已覆盖到全社会的方方面面。随着人们对生活越来越快捷、越来越方便的极致追求,人们越来越习惯于使用计算机来帮
7、助人们达到工作、生活以及精神上的需求。人们善于利用计算机作为人际交流的平台,也善于利用计算机作为处理工作及生活上的琐事,使自身的生活更加方便和优质。计算机作为信息处理终端,最大的优点便在于它对数据处理的高效及精确。该系统为人们提供方便的财务管理办法,提供了最直观的财务走向及趋势。该系统能够快捷的登记人们的平时的花销与收入,能够直观的查看财务走向与收支情况。该平台拥有账户系统,可以区分财务登记人,可以申请账户,注销账户等功能;同时拥有管理员权限的人可以对账户进行管理,可以对后台数据库进行相关的维护和升级。2 系统分析2.1 需求分析在系统开发之前,用户的需求是系统开发的主要目标。通过用户的调查结
8、果显示,我们要求的财务管理系统必须要求以下的基本功能:(1)支持财务登记、删除、查询;(2)支持财务的收入分类及开销分类;(3)支持财务数据的日期性存储;(4)支持数据按时间要求做出的收支计算。另外,为增强用户对系统的体验及对系统的功能性要求,需要对本系统的发展功能为:(1)支持将数据以折线图的形式显示出来;(2)支持数据按照日期进行查询;(3)支持财务数据按照分类进行查询显示;(4)添加账号系统,方便不同人使用;(5)添加日记系统,方便于做日常性总结;2.2 可行性分析财务管理系统对使用者的财务进行登记、处理、存储、查询,应用端以应用程序的方式进行前台的登记、管理和查询,方便用户的使用;服务
9、端存储处理完毕后的分类数据;中间端采用XML数据集的方式存储处理中的数据,以加快程序的运行速度同时减少终端与服务器端过多的容错处理。3 总体设计3.1 项目规划 财务管理系统是一个功能全面并且方便快捷的应用程序,由前台应用程序、中间数据集及后台数据库胆大部分组成。(1)前台应用程序 前台应用程序主要包括财务登记、财务删除、财务更新、收支查询、时间段查询、分类项目查询、折线图等功能及模块。(2)中间数据集中间数据集主要功能是实现数据的快速插入、删除、修改的存储中继。(3)后台数据库后台数据库主要对前台处理的数据进行远程端的存储与备份,拥有简单的数据管理功能。3.2 系统窗体功能结构图财务管理系统
10、前台窗体功能结构,如图1所示。图3-1 财务管理系统前台窗体功能结构图 3.3 设计目标本系统是针对用户自身的财务进行有效的、直观的管理为原则进行设计开发的,其需要达到的目标如下:(1)通过登记的财务信息,能够直观的查看收入支出。(2)可以管理财务数据。(3)能够直观的查看消费及收支费用的走势。(4)提供财务情况的记录功能。(5)能够按照时间段进行精确查询。3.4 开发工具及运行环境开发工具:C#编译器: Microsoft Visual Studio 2010XML文档编写器: SublimeText_2.0.2.2221_XiaZaiBa数据库管理工具: SQL Server Manage
11、ment Studio运行环境:CPU: P41.8GHz;内存: 256MB以上。操作系统: Windows XP/7操作系统;数据库: SQL Server 2008;4 财务管理系统总体架构4.1 系统各功能窗体的运行结果4.1.1财务管理系统导航窗体。21图4-1 财务管理系统导航窗体运行结果(ZhuTi.cs)导航说明如下:表4-1 财务管理系统导航窗体说明区域名称说明对应文件1主功能窗体财务管理系统的主要功能窗体MoneyMake.cs2日记功能窗体添加的其他功能窗体,主要应对用户对一些平常事情的记事formNoteBook.cs4.1.2财务管理系统主功能窗体-财务收支页面。54
12、321图4-2 财务管理系统主功能窗体-财务收支页面(MoneyMake.cs)财务管理系统主功能窗体-财务收支页面功能如表2所示。表4-2 财务管理系统主功能窗体-财务收支页面功能展示区域名称说明对应文件1财务详细条目展示已登记财务的大体预览information.xml2财务入账模块是财务收入或支出的登记模块3财务收支状况的时间段查询主要对指定时间段内进行财务总收入的大体查询4财务查询结果显示查询后总体的结果5财务记事及账目删除模块1、 显示指定登记条目的财务记事;2、对指定登记条目执行删除命令4.1.3财务管理系统主功能窗体-财务走势页面。3421图4-3 财务管理系统主功能窗体-财务走
13、势页面(MoneyMake.cs)财务管理系统主功能窗体-财务走势页面功能如表2所示。表4-3 财务管理系统主功能窗体-财务收支页面功能展示区域名称说明对应文件1折线图区域展示财务收支总走势information.xml2设定时间单位为需要展示的财务设定展示单位3实时数据显示鼠标所处位置的金钱数据4设定时间段显示查询后总体的结果4.1.4财务管理系统主功能窗体-消费走势页面。图4-4 财务管理系统主功能窗体-消费走势页面(MoneyMake.cs)4.1.5财务记事主功能窗体。图4-5 财务管理系统主功能窗体-消费走势页面(formNoteBook.cs)4.1.6财务记事新增窗体。图4-6
14、财务管理系统新增记事窗体(formNoteAdd.cs)4.1.7财务记事展开页窗体。图4-7 财务记事展开页窗体(formNoteRead.cs)4.2 系统数据集及数据库设计4.2.1 XML数据集设计(实例): /声明,标示版本及标准 /根元素 /子元素,标示一条财务信息 1 /记录当前数目编号 支出 /记录当前信息是收入还是支出 -35 /记录金额 杂项 /记录本条信息属于什么类别 2014/3/4 /记录日期 /简单笔记 35 /隐藏元素,做数据统计 0 /隐藏元素,做数据统计 /本条信息结束 /下一条信息开始 2 支出 -132 杂项 2014/3/6 das 132 0 4.2.
15、2 数据库架构设计表Strip_HaveMake设计如图(详细见附录)。图4-8 Strip_HaveMake表的表头及数据类型表UserInfo(详细见附录)。图4-9 UserInfo表的表头及数据类型5 系统前台各功能模块的实现5.1 导航窗体功能及实现作为导航窗体,其肩负的主要功能就是负责为用户提供一个快捷的功能通道,使用户能够快速的进入所需的功能窗体。本系统的设计实在财务统计和财务记事上做了导航,其跳转的实现如下:MoneyMake rofm = new MoneyMake(); /实例化财务管理窗体MoneyMake rofm.Show(); /使窗体显现 this.Hide();
16、 /隐藏导航窗体财务记事窗体的跳转同上。退出功能是退出程序,各个主功能窗体都有添加(以下略过不再赘述),其实现如下: Application.Exit();5.2 财务管理窗体主窗体在本功能窗体之上,使用了TabControl容器组件,分别设计了财务收支页(tabPage1)、财务走势页(tabPage2)以及消费走势页(tabPage3)。其他公共区域有实时日期时间显示区域(DateTimeShow)、返回(btnBack)及退出,其详细实现如下代码显示:实时时间(添加计时控件Timer命名为TimeNow):TimeNow.Enabled = true; /开启控件 TimeNow.Int
17、erval = 1000; /设定时间间隔为1秒DateTime time = DateTime.Now; /定义时间函数time DateTimeShow.Text = time.ToString(yyyy-M-d HH:mm:ss); /对获取的系统时间进行格式化并将实时时间显示在控件DateTimeShow上。 返回(btnBack)功能是返回导航窗体,其实现如下: /设置返回按钮的事件 private void btnBack_Click(object sender, EventArgs e) this.Close(); /关闭当前窗体 /添加窗体关闭事件,默认返回导航窗体(当单击窗体
18、右上角小叉号时同样触发此事件)。private void MoneyMake_FormClosed(object sender, FormClosedEventArgs e) ZhuTi rofm = new ZhuTi(); rofm.Show();5.2.1财务收支页面作为财务收支页面,主要的工作是管理个人的财务信息,这里不仅有对数据的增、删、改、查,还有简单的预览和时间划分功能。数据条目功能区(dgvStrip_HaveMake)是作为已登记的财务信息的一览表,它首先绑定了一个数据集(information.xml),从中提取信息并显示在本控件中,其实现如下:/在窗体载入事件中定义并加载
19、数据集。 /数据源绑定 xDataDoc.DataSet.ReadXml(.Fileinformation.xml); dgvStrip_HaveMake.DataSource = xDataDoc.DataSet; dgvStrip_HaveMake.DataMember = Inf; /定义数据表 DataTable dTable = xDataDoc.DataSet.Tables0; /时间段查询起始时间 dtp1_tab3.Value = dtp1.Value = startTime.Value = Convert.ToDateTime(dTable.Rows04.ToString()
20、; dtp2_tab3.Value = dtp2.Value = Convert.ToDateTime(dTable.RowsdTable.Rows.Count - 14.ToString(); labXianShi(); /调用方法,在空间中显示信息/定义的方法 private void labXianShi()/显示财务,总 DataTable dTable = xDataDoc.DataSet.Tables0; int count = dTable.Rows.Count; /调用类FangFa中的方法getMoney()。 double haveMoney = FangFa.getMon
21、ey(xDataDoc, 7, Convert.ToDateTime(dTable.Rows04), Convert.ToDateTime(dTable.Rowscount - 14); double makeMoney = FangFa.getMoney(xDataDoc, 6, Convert.ToDateTime(dTable.Rows04), Convert.ToDateTime(dTable.Rowscount - 14); /显示大略的财务收支情况 labAllHave.Text = haveMoney.ToString(); labAllMake.Text = makeMoney
22、.ToString(); labHaveMake.Text = (haveMoney - makeMoney).ToString(); labDataTime.Text = dTable.Rows04.ToString() + - + dTable.Rowscount - 14.ToString(); 财务登记功能区是财务管理系统的重要组成部分,它负责将用户的财务信息登记入系统之中,其设计如下:图5-1 财务入账功能其中,金额(txtMoney)限定最长字符5位,收支(cbxHaveMake)填写“收入”、“支出”两项,默认选定“支出”。入账(btnIn)按钮的功能实现比较复杂,它需要判断数据
23、条目功能区(dgvStrip_HaveMake)中的数据序号是多少,需要依据写入的日期判断插入的数据应是在哪两条数据的之前、之中或之后?同时重新书写编号并刷新显示出来,之后清空入账区的数据,其具体的代码实现如下: private void btnIn_Click(object sender, EventArgs e)/添加数据 Regex re = new Regex(0-9*$); if (re.IsMatch(txtMoney.Text) /该方法是修改数据集中的数据表(会同时刷新datagridview),然后更新xml。 /查找有没有相同日期的数据,有的话合并计算,没有的话加入新行。
24、DataTable dTable = xDataDoc.DataSet.Tables0; bool bol = true;/指示是否要在最后添加行 int count = dTable.Rows.Count; if (txtMoney.Text = ) txtMoney.Text = 0; string numMoney = cbxHaveMake.Text = 收入 ? txtMoney.Text.Trim() : - + txtMoney.Text.Trim(); DateTime dt = Convert.ToDateTime(dateTimePicker1.Value.ToShortD
25、ateString(); for (int i = 0; i count; i+) if (dt Convert.ToDateTime(dTable.Rowsi4.ToString() DataRow dr = dTable.NewRow();/新建行,下同。 if (dateTimePicker1.Value.ToShortDateString() = dTable.Rowsi4.ToString()/合并相同的日期金额 if (dTable.Rowsi5.ToString().Trim() = )/备注的情况处理 if (txtBeiZhuIn.Text.Trim() = ) dTable
26、.Rowsi5 = dTable.Rowsi3 + : + dTable.Rowsi2 + + cbxType.Text.Trim() + : + numMoney; else dTable.Rowsi5 = dTable.Rowsi3 + : + dTable.Rowsi2 + + cbxType.Text.Trim() + : + numMoney + ( + txtBeiZhuIn.Text.Trim() + ); else if (dTable.Rowsi5.ToString().Trim().IndexOf(:, 0) != -1)/第三次及以上数据合并 if (txtBeiZhuI
27、n.Text.Trim() = ) dTable.Rowsi5 += + cbxType.Text.Trim() + : + numMoney; 时间段功能区主要负责设定查询时的时间段并使得数据条目功能区(dgvStrip_HaveMake)中处在时间段内的数据高亮。同时该功能区划定的时间段将作为一个默认数据传送到财务走势页和消费走势页,其功能实现如下:图5-2 时间段查询功能 private void searchTime_Click(object sender, EventArgs e)/时间段查询 /时间段内的数据高亮 DataTable dTable = xDataDoc.DataSe
28、t.Tables0; int count = dTable.Rows.Count; /清除原活动单元格的高亮for (int i = 0; i count; i+) dgvStrip_HaveMake.Rowsi.Selected = false; for (int i = 0; i count; i+) if (startTime.Value = Convert.ToDateTime(dTable.Rowsi4) dgvStrip_HaveMake.Rowsi.Selected = true; /财务显示,调用类FangFa中的getMoney()方法。 double haveMoney =
29、 FangFa.getMoney(xDataDoc, 7, startTime.Value, finshTime.Value); double makeMoney = FangFa.getMoney(xDataDoc, 6, startTime.Value, finshTime.Value); labAllHave.Text = haveMoney.ToString(); labAllMake.Text = makeMoney.ToString(); labHaveMake.Text = (haveMoney - makeMoney).ToString(); labDataTime.Text
30、= startTime.Value.ToShortDateString() + - + finshTime.Value.ToShortDateString(); 账目细则显示区是各个查询操作后产生数据显示的地方。图5-3 财务显示功能区账目管理区块是对选定的数据条目显示备注和对选定的条目执行删除的地方。当所有条目都删除掉时,将自动添加最后一行示例行,这中设定同时避免了在“入账”时产生的判断错误。其实现删除功能的代码如下:private void btnDelect_Click(object sender, EventArgs e)/删除活动单元格所在行。 DataTable dTable =
31、xDataDoc.DataSet.Tables0; int count=xDataDoc.DataSet.Tables0.Rows.Count; int index = dgvStrip_HaveMake.CurrentCell.RowIndex;/读取活动状态单元格的行号。 /当数据条目空间中的数据不存在时,自动添加一行示例,避免入账时产生判断错误。if (count = 1) dTable.Rows00 = 1; dTable.Rows01 = 收入; dTable.Rows02 = 0; dTable.Rows03 = 示例; dTable.Rows04 = 2000/1/1; dTab
32、le.Rows05 = 这是示例行,请不要输入同此行的日期数据!; dTable.Rows06 = 0; dTable.Rows07 = 0; else dTable.Rows.RemoveAt(index);/删除行 FangFa.sortSID(xDataDoc.DataSet.Tables0);/重新编号 FangFa.newUpdata(xDataDoc);/更新xml FangFa.GeShi();/格式化xml /财务及其它信息显示 labXianShi(); txtBeiZhuPrint.Text = ; 5.2.2财务走势页面财务走势页面是财务管理系统中最直观反映用户最近财产的
33、起伏变化的一个功能窗口,其最大的特色在于使用折线图的形式来表现。财务走势页面使用GDI绘图技术,通过最大值以及间距值等特殊计算方法使绘出的图像能够根据要求任意显示时间单位、时间间距等。主显示区域:本区域是图像呈现的画布,当根据时间单位进行计算得出数据小于两条时将不予显示并提示用户情况。其图像产生代码如下: /书写公共方法,使系统能够避免代码冗余。 public static void creatImage(int Xs, Bitmap image, DataTable dTable, bool XY, int moneyY,string nameX) Graphics g = Graphics
34、.FromImage(image); Pen paintPen1 = new Pen(Color.Blue, 3); Pen paintPen2 = new Pen(Color.Blue, 1); g.Clear(Color.White);/绘制初始化 g.DrawLine(paintPen1, 40,170, 680, 170);/中横线 g.DrawLine(paintPen1, 40, 10, 40, 380);/左竖线 g.DrawLine(paintPen1, 40, 380, 680, 380);/下横线 int xJianGe = 638 / (Xs - 1);/计算纵线间的间隔
35、,使用638而不是640,是为了留出最右边的一丝空隙。 if (XY = false)/横纵坐标线 for (int i = 1, xx = 40 + xJianGe; i Xs; i+, xx += xJianGe)/若4个数据,只需绘制三根纵线,第一根是Y轴。 g.DrawLine(paintPen2, xx, 10, xx, 380);/画纵线 for (int j = 1, yy = 10; j 38; j+, yy += 10) g.DrawLine(paintPen2, 40, yy, 678, yy);/画横线,678最右边的横坐标 /绘制横坐标值 Font fontX=new Font(宋体,12); DuiQi.Alignment=StringAlignment.Center; for (int i = 0, xx = 40; i Xs; i+, xx += xJianGe) g.DrawString(nameXi,fontX,Brushes.Blue,xx,380,DuiQi); Point ZheXian = new PointXs;/定义折线的点集合