还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
湖南第一师范学院毕业论文(设计)题目家庭财务管理系统设计与实现学生姓名学号系(部)专业班级指导教师湖南第一师范学院毕业论文(设计)指导教师评语目录摘要1绪论1第1章系统需求分析
21.1系统目标
21.2系统可行性分析
21.
2.1技术可行性
21.
2.2经济可行性
21.3系统需求分析方法
31.
3.1系统需求分析概述
31.
3.2系统需求分析方法
31.4系统功能需求分析4第2章系统总体设计
52.1系统设计方法
52.2系统架构
52.3系统功能模块细分6第3章系统实现
73.1系统主界面
73.2系统管理模块
83.3基础数据管理模块10第4章系统的测试与维护
144.1系统运行环境
144.2系统测试
144.
2.1系统登录测试
144.
2.2数据保存测试
144.
2.3系统功能测试
144.3系统运行情况15结束语17参考文献18致谢18附录19摘要家庭财务管理系统的设计采用EditPlus作为编辑器,linux下GCC编译器,版本为
4.
1.220070626(RedHat
4.
1.2-14)作为开发环境采用了两个文本文件来保存用户使用过程中产生的数据进行测试运行具有添加,查询,删除,修改修改密码,更换家长等的功能实现创建编号链接各功能列表,输入家庭成员收入信息情况,以及增加,删除,修改,还具有按具体时间指定姓名查找个人财务情况,按总计排序浏览所有用户财务信息等同时还设计了家长管理权限,实现用户的密码登陆功能,更加保密家庭财务信息等本系统为家庭的管理者提供充足的财务信息添加和查询手段,大大的方便家庭的管理者的合理理财是一个较具实用价值的推广软件关键词家庭财务;管理系统;linux操作系统绪论家庭财务管理系统是专门为一般家庭的财务管理所设计服务的,是每个家庭都该拥有的一款软件本系统具有界面清晰、操作简易、等特点,考虑到人们的一些操作习惯,提高了其的可操作性,完全能够满足你的需求作为计算机应用的一部分,使用计算机对家庭的各项事务进行管理,具有手工管理所无法比拟的优点,其优势已非常明显例如查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大的节省浪费在处理家庭事务上的时间,也是标志着一个家庭现代化,能够更好的融入社会本系统本着实用的原则,完成家庭财务管理系统中包括家庭成员信息的添加和删除、收支信息的添加、删除及帐户的管理,及相关数据的统计、查询、修改等全过程的工作总之,该系统对家庭财务的管理实现了规范化,非常适合于大部分家庭的的日常财务管理本系统编制过程中充分考虑了计算机的优越性,对于不是计算机专业的人员来说,只要阅读了操作说明,也可以很方便的进入系统和使用本系统提供的功能遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,任何一个系统都是在不断的发展中完善的,本系统也不例外,通过学习C程序设计后,采用linux环境下的GCC编译器作为编译环境,使程序编译和运行的本应用程序设计过程中使用基本控制结构,如循环和选择,着重实现管理系统的增、查、删、改等典型的管理功能程序设计是一门实践性很强的课程,既要掌握概念,又要动手编译,还要上机调试运行,通过这一次的毕业论文编撰使我从实践中更进一步的学习和熟练了C语言的编写本家庭财务管理系统在设计完成后进行了试运行,运行结果获得了大家的认可第1章系统需求分析
1.1系统目标本系统要达到的目标有以下几点
1.验证用户和密码的正确性再登入,以及修改密码和退出系统;
2.保存每次输入的收支记录,并提供两种查询方式按姓名和按年份;
3.家庭现金的收入/支出进行管理,实现收支记录的增加,修改,查询,删除;
4.整个收支记录保存为文本文件
1.2系统可行性分析可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决从现在应用的技术方面、管理者和用户的操作方式方面研究家庭理财系统的可行性和必要性家庭理财系统的实施,将很大程度上提高现代家庭的理财效率,使得现代家庭能够更加方便的对自己的财务进行个性化的管理
1.
2.1技术可行性技术可行性研究的任务,是从总体上鉴别和选择技术系统,是研究现有的技术条件能否顺利完成开发工作,硬、软件配置能否满足开发的需求等等本系统的开发使用Linux操作系统中得红帽企业版五作为系统开发的开发环境,linux系统有如下的特性自由与开放,配置要求低廉,功能强大而稳定,独立工作
[1]等运用C语言程序设计语言,C是一种融合了控制特性的现代化语言,其设计使得用户可以自然地采用自顶向下的规划,同时C还具有高效性,可移植性,强大的功能和灵活性,面向编程人员等特点
[2]非常有利于以后对新系统的扩展与修改综上所述,本系统为一个小型的家庭理财系统,所耗费的资源非常的小,现行的电脑无论是硬件还是软件都能够满足条件,因此,本系统在技术上是可行的
1.
2.2经济可行性进行软件开发项目成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发,这些即为经济可行性如今,随着计算机的大量普及,各种软件的开发成本越来越低,价格也越来越底本系统也是这样,开发成本较低,只是需要一台配置一般的计算机,该系统运行时占计算机的资源也不多,但并不会因为开发成本低而造成系统功能性能的下降相反,随着计算机技术的发展各种实用软件的性能日渐提高家庭理财管理系统廉价的开发成本,却能够为居民带来相当大的实惠和方便主要表现在1本系统是一个拥有多种实用功能的家庭理财管理信息系统,它集成了家庭成员管理、收入管理、支出管理、密码管理等多种功能,具有较强的实用性和方便性2本系统的运行可以大大提高居民管理财务的效率,减少不必要的人力和物力3本系统具有查询和统计功能,能够查询到用户在一段特定时间内收入和支出的情况4本系统的运行可以大大的提高家庭的工作效率由此可以得出,本系统在经济上是具有可行性的
1.3系统需求分析方法
1.
3.1系统需求分析概述在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时,为描写新系统的目的、范围和定义所要做的所有的工作
[3]需求分析是软件工程中的一个关键过程在这个过程中,系统分析员和软件工程师确定顾客的需要只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法需求分析阶段的任务是确定软件系统功能需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能它是软件工程中的一个关键过程在这个过程中,系统分析员和软件工程师必须确定顾客的需要只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法如果在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件无法在规定的时间里完工
1.
3.2系统需求分析方法在管理信息系统开发实践中,系统分析人员使用了多种系统分析方法,三种非常普通的系统分析方法是结构化方法、信息工程方法以及面向对象的方法等其中,结构化分析方法自从20世纪70年代末提出以后,由于其简单、清晰、易于学习、掌握和使用的特点,成为长期以来被广泛使用的分析方法
[4]结构化系统分析是指用一组标准的准则和工具从事分析工作,即有组织、有计划、有规律地进行分析它是一种利用系统工程的思想和有关结构的概念、自顶向下划分模块、逐步求精的分析方法该方法把研究对象看成一个系统,用分解和抽象这两个基本策略来控制系统的复杂性它有三个要点1分解和抽象;2图表描述;3模型转换
1.4系统功能需求分析家庭理财管理系统是典型的信息管理系统,其开发功能主要包括通过计算机管理个人财务,实现无纸化理财;通过查询分析,统计出各项数据,分析出生活中的浪费和节约的地方,通过强大的查询和索检高效的索检出数据,提高办事效率本系统主要有以下功能
(1)对家庭成员的管理相关信息存在“peoplelist.txt”中,普通成员可以对自己的密码进行修改,家长在密码修改功能上的基础上可以添加或删除成员
(2)日常财务管理,包括日常收入和日常支出,即记下日常的收入和日常的支出相关信息存入“thinglist.txt”中,均可以实现查询、添加、删除、修改功能
(3)理财分析,实现分类查询,即按类别查询收支明细第2章系统总体设计
2.1系统设计方法系统设计是对整个管理系统功能进行分析,并划分和构建系统功能模块模块化程序设计就是把一个大程序按一个人能理解的规模进行分解的一种方法模块化指的是把一个程序按功能分解成若干彼此具有一定独立性同时也具有一定联系的组成部分,这些组成部分称为模块系统设计是本系统开发的重要阶段,它直接影响到目标系统的质量,是整个开发工作的核心系统设计阶段的主要任务是在系统分析提出的逻辑模型的基础上,科学合理地进行物理模型设计本系统在设计过程中,充分考虑了系统的适应性和效率性,符合系统设计的原则
2.2系统架构通过对家庭理财功能的分析,本系统分为系统登录界面,浏览成员财务信息,增加新的家庭成员,查询成员收支信息,添加成员收支信息,修改成员收支信息,删除成员收支信息,收入支出项目管理界面,查询收支信息管理界面,查询明细界面,成员收支排行,更换家长,删除家庭成员信息,修改密码系统结构设计如图1家庭理财管理系统登录系统主界面浏览成员财务信息查询成员收支信息增加新的家庭成员删除家庭成员信息添加成员收支信息修改成员收支信息删除成员收支信息成员收支排行更换家长修改密码Peoplelist.txtThinglist.txt图1系统结构设计
2.3系统功能模块细分根据上述系统总体架构思想的分析,可将系统分为以下三大部分,系统功能模块如图2系统管理模块负责对家长和成员密码等进行管理;基础数据管理模块负责对家庭成员和财务信息进行管理;
(3)日常收支管理模块负责对日常收入和支出进行管理家庭理财管理系统系统管理基础数据管理收支管理更换家长退出查询、排序浏览收/支添加、修改、删除成员信息添加、修改、删除收入添加、修改、删除支出修改密码图2系统功能模块第3章系统实现
3.1系统主界面用户进入系统时要输入正确的用户名和密码,系统从后台peoplelist.txt文件中检索是否有相对应的数据信息,若输入正确则进入主界面,否则提示错误,需重新输入选择取消退出登陆系统模块流程图如图3所示开始退出失败用户登录进入系统图3模块流程图登录界面如图4所示图4登录界面输入正确的用户名和密码登录,进入系统主界面,如图5示图5系统主界面
3.2系统管理模块进入系统主界面“增加新的家庭成员”、“更换家长”和“退出本菜单”四个选项,各选项界面如图6,7,8,9所示图6增加新成员界面相关代码Carry_Data;printf\n[添加新成员]\n\n;printf\n请输入新成员姓名:;scanf%speop[n].username;fori=0;in;i++{//先判断将要添加的成员是否系统中已经存在了的成员ifstrcmppeop[i].usernamepeop[n].username==0{j=0;break;}}ifj==0printf\n该成员已存在\n;图7更换家长界面图8删除家庭成员界面ifk==1//k标记是指要删除的成员存在系统中{fori=0;in;i++ifstrcmppeop[i].usernamename==0{g=i;//用g保存序号p=1;//当找到该成员的具体位置时用p标记break;}ifp==1{//由于我采用的结构体存储用户信息所以删除其中某个成员后,其后的成员要依次前移一位n=h-1;fp=fopenpeoplelist.txtw;fprintffp%d\nn;fori=0;ig;i++fprintffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;fori=g+1;ih;i++fprintffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;fclosefp;printf\n删除%s成员成功!!!\nname;}}图9退出本菜单界面
3.3基础数据管理模块进入系统主界面后选择对应序号查询,添加,修改和删除四个成员收支信息功能,设计分别如图10,图11,图12,图13所示图10查询收支信息界面图11录入收支信息界面printf\n[录入收支信息]\n\n请按以下顺序录入成员收支信息:\n;printf\n请输入姓名:;scanf%sname;fori=0;in;i++ifstrcmppeop[i].usernamename==0{k=1;break;}ifi==nk=0;ifk==0printf\n不存在该成员请先添加其为家庭成员\n;ifk==1{strcpythi[m].namename;printf\n请输入年份:;scanf%dthi[m].year;printf\n请输入月份:;scanf%dthi[m].month;fori=0;im;i++{ifstrcmppeop[i].usernamename==0thi[i].year==thi[m].yearthi[i].month==thi[m].month{printf\n已存在%d年%d月的收支信息\n录入失败\nthi[m].yearthi[m].month;p=0;break;}}图12修改收支信息界面printf\n请输入需要修改的收支信息的具体时间\n年份月份\n;scanf%d%dyearmonth;fori=0;im;i++{//如果时间信息不匹配则不能修改收支信息,防止无意修改信息ifthi[i].year==yearthi[i].month==month{p=1;break;}}ifp==0printf\n没有该时间的收支信息\n\n修改失败\n;图13删除收支信息界面第4章系统的测试与维护
4.1系统运行环境硬件建议采用奔腾133以上的个人电脑,1G以上内存,40G以上的硬盘软件运行环境RedHatEnterpriseLinux5操作系统
4.2系统测试
4.
2.1系统登录测试输入错误的密码看系统能否进入本系统,重复多次在口令中输入一些不规范的符号,看系统的处理方式按正确的用户名和密码检查登录是否成功
4.
2.2数据保存测试根据程序的输入项输入,然后执行一次,如果成功,查看系统的状态根据恢复的限制条件,测试其他用户正在使用时,数据库能否正常恢复,关闭其他正在使用的用户,数据库的恢复是否成功
4.
2.3系统功能测试根据限制条件添加成员时,看系统的判断是否有效;增加和修改时,看是否能够更新成功;修改成员信息时,看成员编号及标记(Flag)是否被无意修改新增加的成员分配家长权限后,查看该新家长成员是否具有家长应该有的操作权限,比如再新增用户,添加收支,修改,删除收支信息等按照菜单提示,选择相应操作的数字,添加收支信息数据,查看有无错误;进行查看收支信息,修改收支信息,删除收支信息操作,看是否成功,收支信息数据添加后的结果是否准确家长身份修改密码,尝试更新后的密码是否可以再次登录,更换一下家长身份等普通成员身份具有查询年度收支信息,查询其他成员收支信息,家庭成员收支排行,修改密码等本程序中,添加的收支信息或成员名字时不允许重复,输入信息格式必须与我们定义格式相符,不相符时提示输入错误操作不成功,完成每一个添加、修改、删除动作保存后文本文件”peoplelist.txt”及”thinglist.txt”文本文件中的数据会相应更新
4.3系统运行情况进入系统操作登陆界面后,输入正确的姓名,密码登陆系统如果是家长身份的成员登陆后,则出现如图14所示菜单图14家长身份登录界面选择功能简介
1.浏览成员财务信息根据系统提示,输入浏览信息的年份系统会显示相应信息,如无则提示无该年的收支信息
2.增加新的家庭成员根据系统提示,增加新的家庭成员按照格式依次输入(姓名,密码,以及是否作为家长)
3.查询成员收支信息根据系统提示,查询指定成员的收支信息即显示相应信息
4.添加成员收支信息根据系统提示,添加指定家庭成员收支信息按照格式依次输入(姓名,年份,月份,收入,支出),如果指定时间的信息已经存在则提示录入失败
5.修改成员收支信息根据系统提示,输入修改收支信息的成员姓名,以及要修改的年份,月份,更新后的数据
6.删除成员收支信息根据系统提示,删除指定成员指定时间的收支信息
7.成员收支排行榜根据系统提示,输入指定年份,月份,系统将自动显示所有家庭成员该时间段的收支信息,并按照总计由大到小排序
8.更换家长根据系统提示,输入登录系统的家长姓名,以及用户想要更改为现任家长的新成员姓名
9.删除家庭成员系统自动显示当前系统中存在所有家庭成员姓名,家长按照需求输入要删除的成员姓名
10.修改密码根据系统提示,输入需要修改密码的用户名,先判断是不是该用户知道的情况下,所以要先验证性的输入旧密码,待验证成功后则可以输入新的密码
11.退出本菜单系统自动显示退出家长操作界面,并反馈给用户是否返回,或者退出系统如果是普通成员身份的成员登陆后,则出现如图15所示菜单图15普通成员身份登录界面功能简介
1.浏览成员财务信息根据系统提示,输入浏览信息的年份系统会显示相应信息,如无则提示无该年的收支信息
2.查询成员收支信息根据系统提示,查询指定成员的收支信息即显示相应信息
3.家庭成员收支信息根据系统提示,查询指定年份,月份的收入支出信息即显示按收入由大到小排序和按支出由大到小排序的两张表
4.修改密码根据系统提示,输入需要修改密码的用户名,先判断是不是该用户知道的情况下,所以要先验证性的输入旧密码,待验证成功后则可以输入新的密码
5.退出本菜单系统自动显示退出家长操作界面,并反馈给用户是否返回,或者退出系统结束语经过近一个多月的系统分析和设计,我深刻体会到要做好一个完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要耐心、要善于运用已有的资源来充实自己同时我也深刻的认识到,在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样对于系统而言才能更加有效通过此次毕业论文的编撰,我不但对linux下GCC编译环境有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,同时最重要的是摸索出了一套考虑问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅另外,在整个开发的过程中,本人一直都在坚持着尽管本管理系统存在着一些瑕疵,但其功能全面、易于日后程序更新、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的相信本家庭财务管理系统是家庭用户进行财务管理中必不可少的管理软件,通过开发这个系统,我掌握了C语言编程的各种应用技巧,大大增加了我对C语言的熟悉程度,巩固了之前我对C语言程序设计的学习,但在这次毕业论文中的最大收获并不是掌握这些开发工具及语言的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神总之,家庭财务管理系统的设计为我提供了一个良好的学习的平台,提供了坏境和基础,因为毕业论文的编写,使我更加全身心投入到了整合所学各种知识,更能学以致用,这对我来说意义是非凡的在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足,我将会一如既往的努力参考文献
[1]鸟哥编著鸟哥的Linux私房菜基础学习篇[M].第二版.北京人民邮电出版社,200716
[2]StephenPrata云巅工作室译.CPrimerPlus[M].北京:人民邮电出版社2005
[3]http://baike.baidu.com/view/
111493.htm
2012.
4.1
[4]JohnW.Satzinger朱群雄汪晓男等译系统分析与设计[M]北京机械工程出版社,200290
[5]李春葆等著.数据结构与算法[M].北京:清华大学出版社2005
[6]谭浩强著.C程序设计教程[M].北京清华大学出版社,
2007.
7.致谢非常感谢赵晋琴老师一直以来对我们的悉心指导,本文是在我的指导师赵晋琴老师的精心指导下完成的无论在选题、确定研究内容,还是在研究过程中都凝聚了赵老师的辛勤与汗水导师渊博的知识、活跃的学术思想、严谨求实的治学态度、丰富的教学经验、敏锐的科学前瞻性使我受益很多,赵老师的谆谆教海和精心指导将使我永生难忘赵晋琴老师教导我们学习的同时还指导我们正确的工作态度和方法,从他身上我们每个组员都可以感受到一个真正科学工作者的一丝不苟,这对我们一生都受益匪浅在此我要向赵晋琴老师表示最诚挚的敬意和谢意附录/**家庭财务管理系统*作者DaHai时间2012/4/2*/#includestdio.h#includestring.h#defineMAXSIZE100//定义家庭成员人数#defineMAXINFOR10000//定义收支信息容量structpeople//家庭成员登录信息结构{charusername
[200];//用户名(也是姓名)charcode
[200];//密码charflag
[200];//标志0为普通成员,1为家长}peop[MAXSIZE];structthing//成员收支信息结构{charname
[30];//姓名intyear;//年份intmonth;//月份intincome;//收入intoutput;//支出}thi[MAXINFOR];intWrite_Save;//将数据写进文件中intCarry_Data;//将数据从文件中读出intInit_Master;//初始化家长intAdd_People;//增加新的家庭成员intAdd_Thing;//录入成员收支信息intDele_People;//删除家庭成员intDele_Thing;//删除家庭成员收支信息intChange_Thing;//修改收支信息intChange_Host;//更换家长intBrowse_Peop;//浏览家庭成员信息intFind_Info;//查询某个成员收支信息intChange_Code;//修改密码intMonth_Rank;//月度收支排行榜intOver;//系统退出界面intParent_Choose;//家长选择功能intRank_Choose;//普通成员选择功能voidParent_Menu;//家长登陆菜单voidRank_Menu;//普通成员登陆菜单voidParent_Login_Init;//家长登录初始化voidRank_Login_Init;//普通成员登陆初始化voidLogin;//成员登录并判断是家长或者是普通成员/*全局变量n为文件中家庭成员实际容量m为文件中收支信息实际容量*/intn=0m=0;/*主函数*/intmain{Login;}/*保存信息到文件*/intWrite_Save{FILE*fp;inti;fp=fopenpeoplelist.txtw+;fprintffp%d\nn;fori=0;in;i++fprintffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;fclosefp;fp=fopenthinglist.txtw+;fprintffp%d\nm;fori=0;im;i++fprintffp%s%d%d%d%d\nthi[i].namethi[i].yearthi[i].monththi[i].incomethi[i].output;fclosefp;return0;}/*将数据从文件中读出*/intCarry_Data//将数据从文件中读出{FILE*fp;inti;iffp=fopenpeoplelist.txtr!=NULL{fscanffp%d\nn;fori=0;in;i++fscanffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;}fclosefp;iffp=fopenthinglist.txtr!=NULL{fscanffp%d\nm;fori=0;im;i++fscanffp%s%d%d%d%d\nthi[i].namethi[i].yearthi[i].monththi[i].incomethi[i].output;}fclosefp;return0;}/*初始化家长设置默认密码*/intInit_Master{Carry_Data;ifn==0{strcpypeop[n].usernamechengjian;strcpypeop[n].codechengjian;strcpypeop[n].flag1;n++;}Write_Save;return0;}/*增加新的家庭成员*/intAdd_People{intj=1iq=100m=3;Carry_Data;printf\n[添加新成员]\n\n;printf\n请输入新成员姓名:;scanf%speop[n].username;fori=0;in;i++{ifstrcmppeop[i].usernamepeop[n].username==0{j=0;break;}}ifj==0printf\n该成员已存在\n;ifj==1{printf\n\n请输入新成员密码:;scanf%speop[n].code;printf\n\n新成员是否作为家长(是输入1,否输入0):;scanf%speop[n].flag;ifstrcmppeop[n].flag1!=0strcmppeop[n].flag0!=0{printf\n输入格式错误,请重新输入1或者0!!;}fori=0;strcmppeop[n].flag1!=0strcmppeop[n].flag0!=0;i++{ifi!=0{printf\n输入格式错误,请重新输入1或者0!!;}printf\n\n新成员是否作为家长(是请输入1,否输入0):;scanf%speop[n].flag;}ifstrcmppeop[n].flag1==0printf\n添加新家长成功!!!\n;elseprintf\n添加新普通成员成功!!!\n;n++;Write_Save;}return0;}/*录入成员收支信息*/intAdd_Thing{intk=3ip=1;charname
[200]ch;Carry_Data;printf\n[录入收支信息]\n\n请按以下顺序录入成员收支信息:\n;printf\n请输入姓名:;scanf%sname;fori=0;in;i++ifstrcmppeop[i].usernamename==0{k=1;break;}ifi==nk=0;ifk==0printf\n不存在该成员请先添加其为家庭成员\n;ifk==1{strcpythi[m].namename;printf\n请输入年份:;scanf%dthi[m].year;printf\n请输入月份:;scanf%dthi[m].month;fori=0;im;i++{ifstrcmppeop[i].usernamename==0thi[i].year==thi[m].yearthi[i].month==thi[m].month{printf\n已存在%d年%d月的收支信息\n录入失败\nthi[m].yearthi[m].month;p=0;break;}}ifp==1{printf\n请输入收入(元):;scanf%dthi[m].income;printf\n请输入支出(元):;scanf%dthi[m].output;m++;printf\n录入成功!!!\n;Write_Save;}}return0;}/*删除家庭成员*/intDele_People{FILE*fp;charname
[20];intikghp=0;printf\n[删除家庭成员]\n\n;printf下面是目前系统中存在的所有用户\n;fori=0;in;i++{printf[ID.%d]%s\ni+1peop[i].username;}printf\n请输入要删除的家庭成员姓名;scanf%sname;Carry_Data;h=n;fori=0;in;i++{ifstrcmppeop[i].usernamename==0{k=1;break;}}ifi==nk=0;ifk==0printf\n不存在该成员\n;ifk==1{fori=0;in;i++ifstrcmppeop[i].usernamename==0{g=i;p=1;break;}ifp==1{n=h-1;fp=fopenpeoplelist.txtw;fprintffp%d\nn;fori=0;ig;i++fprintffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;fori=g+1;ih;i++fprintffp%s%s%s\npeop[i].usernamepeop[i].codepeop[i].flag;fclosefp;printf\n删除%s成员成功!!!\nname;}}Write_Save;return0;}/*删除家庭成员收支信息*/intDele_Thing{FILE*fp;charname
[20];intiyearmonthkgh=0b;printf\n[删除收支信息]\n\n;printf下面是目前系统中存在的所有用户\n;fori=0;in;i++{printf[ID.%d]%s\ni+1peop[i].username;}printf\n请输入需要删除收支信息的成员姓名;scanf%sname;Carry_Data;b=m;fori=0;im;i++{ifstrcmpthi[i].namename==0{k=1;break;}}ifi==mk=0;ifk==0printf\n不存在该成员的收支信息\n;ifk==1{printf\n以下为%s的所有收支信息:\n\n年份月份收入元支出元\nname;fori=0;im;i++{ifstrcmpthi[i].namename==0printf%4d%4d%9d%9d\nthi[i].yearthi[i].monththi[i].incomethi[i].output;}printf\n请输入需要删除的收支信息的具体时间\n年份月份\n;scanf%d%dyearmonth;fori=0;im;i++ifstrcmpthi[i].namename==0thi[i].year==yearthi[i].month==month{g=i;h=1;break;}ifh==1{m=b-1;fp=fopenthinglist.txtw;fprintffp%d\nm;fori=0;ig;i++fprintffp%s%d%d%d%d\nthi[i].namethi[i].yearthi[i].monththi[i].incomethi[i].output;fori=g+1;ib;i++fprintffp%s%d%d%d%d\nthi[i].namethi[i].yearthi[i].monththi[i].incomethi[i].output;fclosefp;printf\n删除成功!!!\n;}ifh==0printf\n不存在该时间的收支信息\n;}return0;}/*修改收支信息*/intChange_Thing{charname
[20]name1
[20];intiyearmonthyear1month1incomeoutputkp=0t=0;printf\n[修改收支信息]\n\n;printf下面是目前系统中存在的所有用户\n;fori=0;in;i++{printf[ID.%d]%s\ni+1peop[i].username;}printf\n请输入需要修改收支信息的成员姓名;scanf%sname;Carry_Data;fori=0;im;i++{ifstrcmpthi[i].namename==0{k=1;break;}}ifi==mk=0;ifk==0printf\n不存在该成员的收支信息\n;ifk==1{printf\n以下为%s的所有收支信息:\n\n年份月份收入元支出元\nname;fori=0;im;i++{ifstrcmpthi[i].namename==0printf%4d%4d%9d%9d\nthi[i].yearthi[i].monththi[i].incomethi[i].output;}printf\n请输入需要修改的收支信息的具体时间\n年份月份\n;scanf%d%dyearmonth;fori=0;im;i++{ifthi[i].year==yearthi[i].month==month{p=1;break;}}ifp==0printf\n没有该时间的收支信息\n\n修改失败\n;ifp==1{printf\n请输入修改后的数据:\n;printf\n姓名:;scanf%sname1;fori=0;in;i++{ifstrcmppeop[i].usernamename1==0{t=1;break;}}ifi==nt=0;ift==0printf\n不存在该成员请先添加其为家庭成员\n;ift==1{printf\n年份:;scanf%dyear1;printf\n月份:;scanf%dmonth1;printf\n收入元:;scanf%dincome;printf\n支出元:;scanf%doutput;fori=0;im;i++ifstrcmpthi[i].namename==0thi[i].year==yearthi[i].month==month{strcpythi[i].namename1;thi[i].year=year1;thi[i].month=month1;thi[i].income=income;thi[i].output=output;break;}printf\n修改成功!!!\n;}Write_Save;}}return0;}/*更换家长*/intChange_Host{intip=0h=0ab;charname
[20]name1
[20];Carry_Data;printf\n[更换家长]\n\n请输入现任家长的姓名;scanf%sname;fori=0;in;i++{ifstrcmppeop[i].usernamename==0strcmppeop[i].flag1==0{a=i;p=1;break;}}ifp==0printf\n%s不是现任家长\n修改失败\nname;ifp==1{printf\n请输入新家长的姓名;scanf%sname1;fori=0;in;i++{ifstrcmppeop[i].usernamename1==0{b=i;h=1;break;}}ifh==0printf\n不存在家庭成员%s修改失败\nname1;ifh==1{strcpypeop[a].flag0;;//更换家长即更换标志flagstrcpypeop[b].flag1;printf\n%s更换为家长成功!!!\nname1;Write_Save;}}return0;}/*浏览家庭成员信息*/intBrowse_Peop{charname
[20];intqa=0iyearjt=0income
[20]={0}output
[20]={0}in=0out=0in1=0out1=0;Carry_Data;printf请输入浏览的信息的年份;scanf%dyear;printf\n;forq=0;qm;q++{ifthi[q].year==year{a=1;break;}}ifa==0printf不存在%d年的收支信息\nyear;ifa==1{printf%d年度家庭成员收支信息表\nyear;printf┏──────────────────────────────────────────────────────┓\n;printf┃月份姓名收入元支出元总计元┃\n;printf┠──────────────────────────────────────────────────────┨\n;forj=1;j=12;j++{fori=0;im;i++{ifthi[i].year==yearthi[i].month==j{t++;ift==1{printf┃%2d月明细%9s%9d%12d%12d┃\njthi[i].namethi[i].incomethi[i].outputthi[i].income-thi[i].output;income[j]=income[j]+thi[i].income;output[j]=output[j]+thi[i].output;}ift!=1{printf┃%17s%9d%12d%12d┃\nthi[i].namethi[i].incomethi[i].outputthi[i].income-thi[i].output;income[j]=income[j]+thi[i].income;output[j]=output[j]+thi[i].output;}}}ift!=0{printf┠──────────────────────────────────────────────────────┨\n;printf┃%2d月合计%12d%12d%12d┃\njincome[j]output[j]income[j]-output[j];printf┠──────────────────────────────────────────────────────┨\n;}t=0;}fori=1;i=12;i++{in=in+income[i];out=out+output[i];}printf┠──────────────────────────────────────────────────────┨\n;printf┃%4d年合计%9d%12d%13d┃\nyearinoutin-out;printf┗──────────────────────────────────────────────────────┛\n;printf\n\n信息总表\n;printf各家庭成员总收支信息表未排序\n;printf┏──────────────────────────────────────────────┓\n;printf┃姓名总收入元总支出元总计元┃\n;printf┠──────────────────────────────────────────────┨\n;fori=0;im;i++{ifstrcmpthi[i].name0!=0{strcpynamethi[i].name;forj=i;jm;j++{ifstrcmpnamethi[j].name==0{in1=in1+thi[j].income;out1=out1+thi[j].output;strcpythi[j].name0;}}printf┃%10s%9d%12d%13d┃\nnamein1out1in1-out1;in1=0;out1=0;}}printf┗──────────────────────────────────────────────┛\n;}return0;}/*查询某个成员收支信息*/intFind_Info{intik;charname
[20];Carry_Data;printf\n[查询收支信息]\n\n请输入你要查询的成员姓名;scanf%sname;fori=0;im;i++{ifstrcmpthi[i].namename==0{k=1;break;}}ifi==mk=0;ifk==0printf\n不存在该成员的收支信息\n;ifk==1{printf\n%s的所有收支信息\n\nname;printf时间收入元支出元总计元\n;fori=0;im;i++{ifstrcmpthi[i].namename==0thi[i].year!=0printf%4d-%2d%9d%9d%9d\nthi[i].yearthi[i].monththi[i].incomethi[i].outputthi[i].income-thi[i].output;}}return0;}/*修改密码*/intChange_Code{intij=0ba;charname
[20]code
[20]code1
[20]chk
[20];Carry_Data;printf\n[修改密码]\n\n请需要修改密码的用户名:;scanf%sname;fori=0;in;i++{ifstrcmppeop[i].usernamename==0{b=1;a=i;break;}}ifi==n{b=0;}ifb==0printf\n不存在%s成员\nname;ifb==1{printf\n请输入旧密码;scanf%scode;ifstrcmppeop[a].codecode!=0{printf\n旧密码错误!\n修改失败...;}else{j=0;printf\n\n请输入新密码:;scanf%scode1;printf\n\n是否确定修改密码(是输入1否0);scanf%sk;ifstrcmpk1!=0strcmpk0!=0{printf\n输入格式错误,请重新输入1或者0!!;}fori=0;strcmpk1!=0strcmpk0!=0;i++{ifi!=0{printf\n输入格式错误,请重新输入1或者0!!;}printf\n\n是否确定修改密码(是输入1否0);scanf%sk;}ifstrcmpk1==0{strcpypeop[a].codecode1;printf\n%s成员密码修改成功!!!\nname;Write_Save;}ifstrcmpk0==0printf\n%s密码修改失败...\nname;}}return0;}/*月度收支排行榜*/intMonth_Rank{intiatj=0yearmonthincom
[20]outpu
[20];charnam
[20]
[20];Carry_Data;printf请输入想要查询的年月:\n年份月份\n;scanf%d%dyearmonth;printf\n【%d年%d月收入排行表】\nyearmonth;printf\n排行姓名收入支出总计\n;printf元元元\n;fori=0;im;i++{ifthi[i].year==yearthi[i].month==month{strcpynam[j]thi[i].name;incom[j]=thi[i].income;outpu[j]=thi[i].output;j++;}}fori=0a=0;aj;a++{fort=1;tj;t++{ifincom[i]incom[t]i=t;}printfID.%-5d%-10s%-9d%-9d%-9d\na+1nam[i]incom[i]outpu[i]incom[i]-outpu[i];incom[i]=0;i=0;}j=0;Carry_Data;printf\n【%d年%d月支出排行表】\nyearmonth;printf\n排行姓名支出收入总计\n;printf元元元\n;fori=0;im;i++{ifthi[i].year==yearthi[i].month==month{strcpynam[j]thi[i].name;incom[j]=thi[i].income;outpu[j]=thi[i].output;j++;}}fori=0a=0;aj;a++{fort=1;tj;t++{ifoutpu[i]outpu[t]i=t;}printfID.%-5d%-10s%-9d%-9d%-9d\na+1nam[i]outpu[i]incom[i]incom[i]-outpu[i];outpu[i]=0;i=0;}return0;}/*系统退出界面*/intOver{printf\n谢谢使用家庭财务管理系统!!!\n祝您工作愉快!!!\n;return0;}/*家长选择功能*/intParent_Choose{intchoose=0;charch;scanf%dchoose;systemclear;switchchoose{case1:systemclear;Browse_Peop;break;//浏览年度财务信息case2:systemclear;Add_People;break;//增加新的家庭成员case3:systemclear;Find_Info;break;//查询成员收支信息case4://添加成员收支信息systemclear;Add_Thing;printf请问是否继续录入?Y/N;scanf%sch;ifch==Y||ch==y{Add_Thing;}elsebreak;case5:systemclear;Change_Thing;break;//修改成员收支信息case6:systemclear;Dele_Thing;Find_Info;break;//删除成员收支信息case7:systemclear;Month_Rank;break;//成员收支排行榜case8:systemclear;Change_Host;break;//更换家长case9:systemclear;Dele_People;break;//删除家庭成员信息case10:systemclear;Change_Code;break;//更改密码case11:systemclear;Over;break;//结束}return0;}/*普通成员选择功能*/intRank_Choose{intchoose=0;scanf%dchoose;systemclear;switchchoose{case1:systemclear;Browse_Peop;break;//浏览所有成员的年度收支信息case2:systemclear;Find_Info;break;//查询成员收支信息case3:systemclear;Month_Rank;break;//特定年月排行信息case4:systemclear;Change_Code;break;//更换密码case5:systemclear;Over;break;//结束}return0;}/*家长登陆菜单*/voidParent_Menu{printf\n家长选择菜单\n;printf\t============================================================\n;printf\t============================================================\n;printf\t|
1.浏览成员财务信息
2.增加新的家庭成员|\n;printf\t|
3.查询成员收支信息
4.添加成员收支信息|\n;printf\t|
5.修改成员收支信息
6.删除成员收支信息|\n;printf\t|
7.成员收支排行榜
8.更换家长|\n;printf\t|
9.删除家庭成员
10.修改密码|\n;printf\t|
11.退出本菜单|\n;printf\t============================================================\n;printf\t============================================================\n;printf\t请从1-11中输入您的选择;}/*普通成员登陆菜单*/voidRank_Menu{printf\n普通成员选择菜单\n;printf*******************************************************\n;printf*******************************************************\n;printf*
1.浏览家庭成员信息
2.查询成员收支信息*\n;printf*
3.家庭成员收支排行榜
4.修改密码*\n;printf*
5.退出本菜单*\n;printf*******************************************************\n;printf*******************************************************\n;printf请从1-5中输入您的选择;}/*家长登录初始化*/voidParent_Login_Init{intq=0;Parent_Menu;Parent_Choose;printf\n
1.返回上一级
2.退出系统\n请输入你的选择;scanf%dq;ifq==1{systemclear;Parent_Login_Init;}elseifq==2{systemclear;Over;}}/*普通成员登陆初始化*/voidRank_Login_Init{intq=0;Rank_Menu;Rank_Choose;printf\n
1.返回上一级
2.退出系统\n请输入你的选择;scanf%dq;ifq==1{systemclear;Rank_Login_Init;}elseifq==2{systemclear;Over;}}/*成员登录并判断是家长或者是普通成员*/voidLogin{Init_Master;charch=0UserName
[30]Code
[30];inti=0j=0k=0h=0;Carry_Data;printf\n;printf**************************************************\n;printf欢迎使用简洁版家庭财务管理系统\n;printf**************************************************\n;printf**************************************************\n;printf*功能简介*\n;printf*
1.该系统实现用户密码保护功能,可更改密码*\n;printf*
2.对于用户的财务信息进行查询,添加,删除和修改*\n;printf*
3.可以指定年月查询财务信息,*\n;printf*
4.对于整体用户有排序的功能,*\n;printf*备注默认用户名,密码均为chengjian*\n;printf**************************************************\n\n;printf请输入姓名:;whilech=getchar!=\n{UserName[i]=ch;i++;}UserName[i]=\0;fori=0;in;i++{ifstrcmppeop[i].usernameUserName==0k=1;}if!k{systemclear;printf\n用户%s不存在,请重新登录\nUserName;Login;}else{printf\n请输入密码:;scanf%sCode;fori=0;in;i++{ifstrcmppeop[i].usernameUserName==0strcmppeop[i].codeCode==0h=1;ifh==1strcmppeop[i].flag1==0{systemclear;printf\n家长%s登录成功!!!\n\nUserName;Parent_Login_Init;break;}ifh==1strcmppeop[i].flag0==0{systemclear;printf\n普通成员%s登录成功!!!\n\nUserName;Rank_Login_Init;break;}}if!h{systemclear;printf\n密码错误,请重新输入\n;Login;}}}[主要对学生毕业论文(设计)的工作态度,研究内容与方法,工作量,文献应用,创新性,实用性,科学性,文本(图纸)规范程度,存在的不足等进行综合评价]指导教师(签名)年月日指导教师评定成绩。