个人收支管理系统

合集下载

电子底账系统培训课件

电子底账系统培训课件

电子底账系统培训课件电子底账系统培训课件一、什么是电子底账系统电子底账系统是一种用于记录和管理个人或组织财务收支的工具。

它通过数字化的方式,将传统的纸质账本转化为电子形式,提供了更加便捷和高效的财务管理方式。

二、电子底账系统的优势1. 精确性:电子底账系统能够自动计算和记录每一笔财务收支,减少了人为错误的发生,提高了数据的准确性。

2. 实时性:通过电子底账系统,用户可以随时查看最新的财务状况,及时了解自己或组织的财务情况,做出相应的决策。

3. 方便性:电子底账系统可以随时随地访问,无需携带纸质账本,只需通过电脑、手机等设备即可管理财务。

4. 统计分析:电子底账系统提供了丰富的统计和分析功能,可以根据不同的需求生成报表、图表等,帮助用户更好地了解财务情况。

三、如何使用电子底账系统1. 注册账号:首先需要在电子底账系统的官方网站或应用商店下载并注册账号。

根据个人或组织的需求选择适合的系统。

2. 添加账本:登录账号后,需要添加账本,可以根据不同的用途创建不同的账本,如个人账本、家庭账本、企业账本等。

3. 记录收支:在账本中记录每一笔收支,包括收入、支出、借贷等信息。

可以设置分类,方便后续的统计和分析。

4. 设置预算:根据个人或组织的需求,可以设置预算,系统会根据实际情况进行提醒,帮助控制支出。

5. 查看报表:通过电子底账系统提供的统计和分析功能,可以生成各种报表,如收支明细表、分类统计表等,帮助用户更好地了解财务状况。

6. 数据备份:定期进行数据备份,以防数据丢失或系统故障,确保财务数据的安全性。

四、电子底账系统的应用场景1. 个人财务管理:电子底账系统适用于个人财务管理,可以帮助个人记录和管理自己的收支情况,合理规划财务。

2. 家庭理财:对于家庭来说,电子底账系统可以帮助家庭成员共同管理家庭财务,合理分配家庭收入。

3. 企业财务管理:对于企业来说,电子底账系统可以帮助企业实时了解财务状况,提高财务管理效率,做出更加科学的决策。

案例四 家庭财务管理系统

案例四 家庭财务管理系统

案例四家庭财务管理系统4.1需求分析家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量。

在需求分析过程中,概括描述了本软件能够为用户提供哪些服务、系统功能的整体框架,以及相应的业务流程。

4.1.1 系统概述家庭财务管理系统给家庭成员提供了一个管理平台,家庭成员可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改等管理操作。

同时,该系统还提供了家庭成员管理功能,根据家庭成员的分类,其拥有的权限也不同,系统可以判断登录家庭成员的用户名和密码,从而判断其是否可以使用该系统。

系统亦可登录家庭成员的权限信息,从而判断该家庭成员能够使用该系统的哪些特定功能,不同级别的家庭成员之间不能够越权使用系统功能。

家庭成员分家长和普通成员两类。

4.1.2 系统运行环境一、硬件环境●处理器:Intel Pentium 166 MX或更高●内存:32MB●硬盘空间:1GB●显卡:SVGA显示适配器二、软件环境●操作系统:Windows 98/ME/2000/XP4.1.3 功能需求描述家庭财务管理系统软件是为用户对家庭成员的收支构成及信息进行辅助管理的应用软件,功能需求描述如下。

1.用户登录:系统获取的家庭成员用户名和密码判断该家庭成员能否成功登录系统,并且当用户登录后根据权限判断该家庭成员是家长还是普通成员,可以使用哪些对应功能。

普通用户只能管理财务信息,而家长还可以管理用户信息。

2.给家庭成员提供功能选择界面:不同级别的家庭成员对应不同的功能选择界面。

功能选择界面包括输入功能选项、调用相应程序两大需求。

3.创建收支信息文件:用户根据提示输入家庭成员序号、姓名、各项财务信息,如收入、支出、合计。

可一次性输入多条家庭成员的收支信息。

并将家庭成员收支信息存储在系统磁盘文件中,以便进行管理、查找和备份。

4.增加家庭成员收支信息:可在原有收支信息文件的基础上增加新的家庭成员财务信息,并保存至磁盘,5.删除家庭成员收支信息:提示用户输入要删除的家庭成员序号,如果在文件中有该家庭成员的收支信息,则将该序号对应的信息在文件中删除。

家庭财务管理系统毕业论文终稿

家庭财务管理系统毕业论文终稿

家庭财务管理系统毕业论文终稿本文作者将探讨家庭财务管理系统的开发与应用,旨在提高家庭理财水平,避免过度消费和债务,在经济上取得长期可持续的稳定收益。

本文首先介绍了家庭财务管理系统的背景和现状,其次探讨了家庭理财的重要性以及影响因素,接着分析了家庭财务管理系统开发的需求和设计思路,最后阐述了系统优点和实现方法。

一、家庭财务管理系统的背景与现状随着经济发展和社会变化,人们的消费观念也发生了转变。

许多人更加注重及时、便捷地掌握自己的收支状况,实现家庭财务管理的精细化和科学化。

然而,目前市场上的家庭财务管理软件种类繁多,而且往往不够智能化和个性化,难以满足用户的实际需求。

此外,由于家庭理财知识和技能的匮乏,许多人往往存在消费决策不合理、开支过度等问题,导致财务困境、债务累积等后果。

因此,通过建立易用、实用的家庭财务管理系统,帮助用户更好地管理自己的财务,具有极为重要的现实意义和市场前景。

二、家庭理财的重要性及影响因素家庭理财对于个人和家庭经济具有重要的影响,能够帮助人们理财风险,提高生活品质。

正确的家庭理财有助于保障经济安全和稳定性,避免因意外事故、突发疾病等造成的经济压力和后果。

此外,良好的家庭财务管理还可以促进家庭关系、增进幸福感和生活质量,从而实现家庭幸福指数的提升。

家庭理财不仅受到个人收入、家庭结构和风险偏好等因素的影响,还受到宏观经济情况、产业发展、社会政策等多方面的影响。

在此基础上,进行理性思考和决策,选择合适的投资方式和消费方式,是进行家庭理财的基本要求。

三、家庭财务管理系统的开发需求和设计思路1.开发需求(1)安全性家庭财务管理系统必须确保用户的隐私安全,如账号密码、财务记录等涉及到用户的敏感信息必须进行保密和加密处理,防止数据泄漏和安全漏洞。

(2)用户友好性家庭财务管理系统必须简单易用、符合用户习惯,避免繁琐的输入步骤、页面跳转等问题,使用户能够轻松快捷地处理财务事项。

(3)智能化家庭财务管理系统需要具有一定的智能化和数据分析能力,能够根据用户的消费习惯、收支情况等,给予适当的财务建议和咨询,以便更好地指导用户进行理财决策。

大吧掌门店管理系统

大吧掌门店管理系统

大吧掌智能门店管理系统
向大家介绍一个门店管理系统——大吧掌智能网咖管理系统。

作为一款连锁门店管理系统,它集成了各种功能和工具,可以帮助网咖业主提高管理效率、优化用户体验并且促进业务发展。

一、多方位管理
大吧掌智能网咖管理系统可实现对网吧上网设备进行安全、稳定的远程管理,通过设备管理功能,管理员可轻松实现用户机器重启、关机、锁屏、设置软件黑白名单等功能,从而节省管理成本、提高管理效率。

同时系统还支持员工管理模块,管理员可根据角色权限设置员工信息、工作时间等,实现员工的管理与监督。

二、会员管理
大吧掌智能网咖管理系统的会员管理功能非常全面,网咖管理员可根据不同会员等级,设置不同的折扣、积分奖励方案等,从而提高用户黏性。

同时针对永久会员的收益进行报表统计,帮助管理员迅速了解会员活跃度、消费情况、留存率等信息。

三、财务管理
财务管理是大吧掌智能网咖管理系统不可或缺的一部分,系统中提供日常账目管理、收银记录、收支记录等功能,帮助网咖业主实现财务收支的统计和管理,让业务发展更加稳健可靠。

四、数据分析
大吧掌智能网咖管理系统数据分析模块提供了各种数据分析工具,通过报表分析、流量分析、设备分析等多种途径,迅速了解网咖当前的运营情况,为业务发展提供决策依据。

五、用户体验
为了满足用户体验的需求,大吧掌智能网咖管理系统设计了丰富的功能,让用户不仅可以享受到良好的上网环境,还可获得更好的用户体验。

总之,大吧掌智能网咖管理系统拥有功能全面、稳定可靠、易于管理、智能提醒等特点,为网咖业主提供了优质的管理服务,助力业务发展。

如果你是网咖业主,不妨来了解一下大吧掌智能网咖管理系统。

SCM一卡通(含考勤、消费、门禁模块)

SCM一卡通(含考勤、消费、门禁模块)

SCM一卡通管理平台方案一、SCM一卡通管理平台概述SCM一卡通管理平台是基于 B/S架构,以非接触式卡和软件平台为核心,实现企业内部常见的门禁、考勤、消费、访客、会议等应用的综合管理平台。

通过“一卡、一库”有效提高企业的管理效率,实现企业信息化。

用户可将企业内的人、财、物的管理和服务全面纳入“一卡通”平台,实现企业内部的身份认证和财务结算的统一管理,提升企业管理的集中化、安全化和电子化。

系统可实现与 OA、ERP等系统灵活对接,为企业管理者和员工提供方便快捷的服务。

系统适用于规模较大和对安全要求较高的企业园区、司法、政府、军工和金融等行业领域。

系统拓扑图:二、系统特点SCM一卡通管理系统主界面:◆采用B/S架构,支持各种常用WEB浏览器,无需安装客户端,使用方便快捷。

◆支持互联网访问方式(固定IP和网络域名),方便企业实现远程管理和控制。

◆服务器采用独立WEB Service程序,方便安装和维护。

◆支持多种类型的数据库,提供标准数据接口,可以方便的接入企业OA、ERP、财务等管理软件。

◆使用独立的通讯服务程序,保证数据传输的稳定、高效,支持局域网/互联网/串口/无线/U盘等传输方式。

◆灵活的考勤排班设置,多种消费模式的支持,以及稳定高效的安全门禁,保障企业的一体化需求。

◆支持多种识别方式包括:指纹、IC(S50,S70)、ID、UIM手机卡、CPU卡和其他电子标签。

◆多种类型的报表统计,支持各种数据格式的定制,满足企业个性化需求。

三、系统功能SCM一卡通管理平台系统,为中小型企业提供日常的单据管理,设备管理,考勤排班管理,消费管理,门禁管理,权限管理等一卡通管理功能。

软件系统支持 Oracle,MSSQL Server ,Mysql ,三种数据库,采用免安装的绿色软件模式,方便快捷的建立局域网络拓扑架构,可实现广域网的远程访问和管理功能。

软件可在多种语言(中,英,繁)模式下随意转换,轻松实现多语言版本。

个人外汇监测系统申请书

个人外汇监测系统申请书

尊敬的评审委员会:您好!我谨以此书申请贵单位个人外汇监测系统项目的研究与开发。

本人深知外汇监测系统对于国家经济安全的重要性,同时也看到了个人外汇监测系统在当前国际经济环境下的重要性。

在此,本人郑重承诺,若有幸获得贵单位的支持和信任,必将全力以赴,为我国个人外汇监测系统的研究与开发做出自己的贡献。

随着全球化进程的不断推进,国际经济贸易往来的日益频繁,个人外汇收支项目越来越多,规模也越来越大。

在此背景下,建立个人外汇监测系统,既可以有效监管个人外汇收支,防范洗钱、恐怖融资等风险,又能为个人外汇管理提供科学依据,促进我国外汇管理水平的提升。

一、项目背景与目标1. 项目背景近年来,我国个人外汇收支规模持续扩大,个人外汇管理面临着越来越大的压力。

一方面,个人外汇收支项目繁多,管理难度大;另一方面,非法外汇交易、洗钱、恐怖融资等风险不断增加,对国家经济安全构成威胁。

为应对这些挑战,有必要研究开发一套个人外汇监测系统,提高个人外汇管理水平。

2. 项目目标本项目旨在研究开发一套个人外汇监测系统,实现对个人外汇收支的全面监测、分析和管理,有效防范非法外汇交易、洗钱、恐怖融资等风险,提升我国个人外汇管理水平。

二、项目内容与技术路线1. 项目内容本项目主要包括以下几个方面的内容:(1)数据采集与整合:从多个数据源采集个人外汇收支数据,进行数据清洗、转换和整合,形成统一的数据库。

(2)监测分析模型:建立个人外汇收支监测分析模型,实现对个人外汇收支的实时监测、分析和预警。

(3)风险评估与管理:根据监测分析结果,对个人外汇收支进行风险评估,制定相应的风险管理措施。

(4)系统开发与实现:开发一套具备数据采集、处理、分析和展示功能的个人外汇监测系统,满足实际应用需求。

2. 技术路线本项目采用以下技术路线:(1)大数据技术:运用大数据技术进行数据采集、存储、处理和分析,提高数据处理能力。

(2)机器学习算法:采用机器学习算法构建个人外汇收支监测分析模型,实现对数据的智能分析。

2023年现金收支的日常管理规定

2023年现金收支的日常管理规定

2023年现金收支的日常管理规定引言:随着科技的发展, 现金收支管理已经不再像以前那样繁琐, 许多人都习惯使用在线支付或者信用卡消费。

然而, 现金仍然是一种重要的支付方式, 因此对于个人和企业来说, 有效的现金收支管理是至关重要的。

本文将介绍2023年现金收支的日常管理规定, 以帮助个人和企业有效管理现金。

一、制定预算制定预算是进行现金收支管理的第一步。

预算是指在一定时间范围内规划和控制支出的金额计划。

个人和企业可以通过记录和分析历史数据, 制定出符合实际情况的预算。

预算的制定要考虑到固定费用(如房租、水电费等)、可变费用(如衣食住行等)以及应急费用等因素。

制定预算有助于合理规划和安排现金使用, 避免过度消费或者现金不足的情况发生。

二、建立记账系统建立一个有效的记账系统可以帮助个人和企业持续追踪和管理现金收支。

可以选择使用纸质记账本、电子表格或者专业记账软件等方式进行记账。

记账时需要记录每一笔现金的来源和去向, 例如收入、支出、存款、投资等。

同时, 还要包括日期、金额以及相关的描述等信息。

建立记账系统可以帮助个人和企业清晰地了解现金流动情况, 及时发现问题并做出调整。

三、分析和控制支出及时进行支出的分析和控制是进行现金收支管理的关键。

个人和企业可以根据记账数据, 分析哪些支出是必要的, 哪些支出是可以缩减或者避免的。

例如, 可以通过比较不同供应商的价格, 选择更有竞争力的供应商以降低成本。

此外, 也可以通过制定购买计划、设定限额或者设置提醒功能等方式来控制支出。

通过合理分析和控制支出, 可以更好地管理现金, 实现节约和增加盈利的目标。

四、建立紧急储蓄无论是个人还是企业, 在现金收支管理中, 建立紧急储蓄非常重要。

紧急储蓄是为应对突发事件或者临时需求时准备的现金储备, 例如疾病、车辆维修或者意外费用等。

个人可以将一定金额的收入储蓄起来, 作为紧急使用;企业也可以将一部分利润或者现金流入作为紧急储备。

《国家外汇管理局关于进一步完善个人结售汇业务管理的通知》

《国家外汇管理局关于进一步完善个人结售汇业务管理的通知》

《国家外汇管理局关于进一步完善个人结售汇业务管理的通知》相关问题的解答各外汇指定银行:近日国家外汇管理局对《国家外汇管理局关于进一步完善个人结售汇业务管理的通知》(汇发[2009]56号)中相关问题进行了解答,现整理转发给各银行,供各银行内部掌握,请遵照执行:1、执行《通知》过程中,对于发生在同一银行网点不同柜台、同一银行不同网点、不同银行分拆结售汇行为的监管要求?答:首先,各银行应通过采取强化临柜人员代位监管职责意识、实行日终核对当天业务流水的制度、设计监管电子台账等手段保证做好同一网点分拆结售行为监管工作;在此基础上,逐步完善监管能力、提高技术条件,逐步完善本银行全系统的事前和事后监管、以及核查报告工作。

此外,外汇局也将通过综合利用个人结售汇系统数据和国际收支系统个人跨境交易数据,加强分拆结售汇监管,形成对银行分拆业务管理的有效补充,加强对银行分拆结售汇管理的督导。

2、《通知》第一条中有关“同日、隔日或连续多日”的表述如何理解?答:这主要表达相对集中的一段时间。

同日指同一天;隔日包括隔一日也包括隔几日;连续多日中间可以有间断,时间跨度包括汇入到结汇,或购汇到汇出全过程,按照1个月执行。

3、结售汇接近年度总额、提钞接近1万美元、手持现钞结汇接近5000美元的资金范围如何认定?答:按照与限额下浮20%掌握,即结售汇接近年度总额的资金范围为等值4-5万美元、提钞接近1万美元为8000-10000美元、手持现钞结汇接近5000美元为4000-5000美元。

4、关于分拆到5人或5次以上有没有金额范围的要求?答:《通知》第一条规定的分拆到5人或5次以上的涉嫌分拆结售汇行为主要关注问题3中近限额的交易。

但如果存在分拆到3万或者4人等明显规避《办法》和《通知》规定的分拆行为,也应按照《通知》第一条第六款进行相应的关注和处理。

5、《通知》第一条第四款关于7日内从同一账户5次以上提钞的要求如何理解?答:这里的7天指7个银行营业日,但如果发现个人每7天提钞4次、超过但接近7天提钞5次等故意规避《通知》规定的行为,也应按照第一条第六款处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与信息工程学院课程设计报告2011-2012第二学期课程设计名称C语言课程设计设计题目个人收支管理系统学生姓名学号专业班级指导教师2012年7月4日个人收支管理一、设计目的一些比较发达国家人的生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善.国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支。

进行账目的统计,如果是手动统计的话,首先,如果每天统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以前的记录,会变的越来越困难。

因此,需要一个功能比较完善的记账系统来代替传统的手工统计。

个人收支管理系统可以方便地记录您家庭的每日收支情况。

二、功能描述如图1所示,本系统主要有8个板块构成:1.个人收支管理系统显示界面。

个人收支管理系统必须在系统运行后第一时间显示出来。

此界面显示了一个收入模式、一个支出模式、一个明细表、一个查询与统计、一个记录数据写入文件、一个读取文件的功能。

2.收入模式。

用户可以在收入模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志。

默认币种为人民币,也可以是美圆、欧元、日币或英镑。

3.支出模式。

用户可以在支出模式中输入以下数据:顺序号、日期、摘要、金额、余额、币种,收入或支出标志。

默认币种为人民币,也可以是美圆、欧元、日币或英镑。

4.明细表。

用户可以根据需要输入起止时间来查询一段时间内的收入支出情况,系统会通过列表的形式把内容展示出来。

5.查询与统计。

在此功能模式下,用户可以对一段时间的收入支出情况进行查询,可以得到总收入、总支出和余额。

此数据是按月或按年份统计计算的。

6.此板块属于拓展功能1---写入文件,记录数据。

在此模块下,用户可以根据需要爆当前输入的数据保存下来,以备后用。

7.此板块属于拓展功能2—读取文件,读取数据。

在此模块下,用户可以读取以前所记录的数据并进行查看。

8.退出系统。

三、总体设计1.系统执行主程序本系统执行主程序如图2所示。

首先,调用main函数,是系统进入主显示面。

然后由用户选择所需要的功能,并进入相应功能程序,按照用户需求进行相应操作后回到主显示界面,等待用户继续按键选择功能进行操作。

2.系统显示界面此系统界面主要由可供选择的功能组成:收入、支出、明细表、查询与统计、写入文件、读取文件。

用户在进行选择后可通过switch 语句进行跳转进入相应分程序。

四、数据结构设计data 结构体struct data{int n;//顺序int y,m,d;char zy[100]; //摘要float money,rmoney;//金额,余额char biz[5]; //币种int x; //收支类型(标记,明细表或查询统计用)}p[100];本程序中主要数据都需要显示顺序、日期、摘要、金额、余额、币种和收支类型,所以需要定义data 结构体。

Int n:表示顺序。

Int y,m,d:用来定义日期。

Char zy:摘要。

Float money、rmoney:金额、余额。

Char biz[5]:币种。

Int x:定义收支类型。

五、函数功能描述1.check():函数原型:int check()check函数主要用于检查输入日期的合法性、日期的先后顺序是否正确,并查找符合日期要求的数据。

2.fflush()函数原型:fflush(stdin)主要用于清除缓存,方便用户接下来的操作。

3.gets()函数原型:gets()函数主要用于把用户输入的数据保存到指定数据中。

4. strlen()函数原型:size_t strlen(const char *s)该函数是用来计算字符串的长度,用于用户接下来的操作。

5. strcpy()函数原型:char *strcpy(char *s1,const char *s2)该函数用于把字符串s2复制给字符串s1。

6.file *()函数原型:file *fp1;通过文件指针便于对流的访问。

7.Fopen()函数原型:fopen (FILE_NAME,”r或w”)该函数用于打开文件,进行读取或写入。

8.Fclose ()函数原型:fclose()该函数主要用来关闭用户打开的文件。

9.Main()函数原型:void main()Main()为主函数。

四、程序实现1.源码分析(1)程序预处理#include <stdio.h> //标准输入输出函数库#include <stdlib.h> //标准函数库#include <string.h> //字符串操作函数库int income()//收入模式int expend() //支出模式int list()//明细表int destat () //查询与统计void write() //写入文件void read () //读取文件(2)主函数main()Main()函数主要实现了对整个程序的调用,以及相关功能模块的调用。

它主要的工作是初始化程序。

void main(){int n; //确定用户需要进入的功能模块do{printf("++++++++++++++++++\n");printf(" 个人收支管理 \n"); //用户可以进行的功能操作选项printf("1.收入 \n");printf("2.支出 \n");printf("3.明细表 \n");printf("4.查询与统计 \n");printf("5.写入文件 \n");printf("6.读取文件 \n");printf("0.退出系统 \n");printf("++++++++++++++++++\n");printf("请输入你要进行操作:");scanf("%d",&n); //捕获用户要进行的操作switch (n){case 1:income(p); system("cls");break; //进入收入模块,结束后返回case 2:expend(p); system("cls");break; //进入指出模块,结束后返回case 3:list(p); system("cls");break; //进入明细表,结束后返回case 4:destat(p); system("cls");break; //进入查询与统计,结束后返回case 5:write(p); system("cls");break; //进入写入文件,结束后返回case 6:read(p); system("cls");break; //进入读取文件,结束后返回}}while(n!=0); //退出系统}2.程序运行结果显示(1)初始化界面(2)进入收入模式结束时按Enter返回主界面(3)进入支出模式结束时按Enter返回主界面(4)明细表结束时按Enter返回主界面(5)查询与统计按年查询按月查询(6)写入文件(7)读取文件在这我们主要显示退出系统后读取文件操作显示:之后用户可以根据需要进行相应操作查看数据。

(8)退出系统六、课程设计总结经过2个星期的努力,终于完成了个人收支管理系统的设计。

本来,在开始上课之前,我们都以为这是很简单的东西,毕竟我们都学习了这么时间,并且也在课上进行了一次次的实战训练。

可是,没想到,别看平时比较容易,在这一刻,要把课上学到的知识融会贯通,要想设计出自己心满意足的东西是多么的困难。

不过,还好,总算完成了,也感受到了成功的喜悦。

努力奋斗,并不是没有回报的当然,在这2个星期的过程中,我们也发现了许多问题并克服了它们。

这些问题或许是上课时没注意到的细节问题,或是自己之前一直没能搞懂的知识点,但不论如何,它都让我们学会了好多新的东西,有了新的感悟。

在此,感谢老师们的辛勤工作,无私贡献,感谢老师们的指导。

七、源代码#include <stdio.h>#include <stdlib.h>#include <string.h>struct data{int n;int y,m,d;char zy[100]; //摘要float money,rmoney;//金额,余额char biz[5]; //币种int x; //收支类型(标记,明细表或查询统计用)}p[100];int k=1;int check1(int y, int m, int d)//检测日期合法性{int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(y>0){if(m>0&&m<13){if(d>0&&d<=a[m-1])return 1;if((((y%4==0)&&(y%100!=0))||(y%400==0))&&(m==2)&&(d==29))return 1;}}return 0;}int check2(int y1,int m1,int d1,int y2,int m2,int d2)//检测日期的先后顺序是否正确{if(y2>y1) return 1;if(y2==y1&&m2>m1) return 1;if(y2==y1&&m2==m1&&d2>d1) return 1;if(y2==y1&&m2==m1&&d2==d1) return 1;elsereturn 0;}int check3(int y1,int m1,int d1,int y2,int m2,int d2) //查找符合要求的日期{int i,k=0;for(i=0;i<100;i++){if((check2(y1,m1,d1,p[i].y,p[i].m,p[i].d))&&(check2(p[i].y,p[i].m,p[i].d,y2,m2,d2)))k=k+1;}if (k=1)return 1;elsereturn 0;}int income(struct data p[]){int i;char q[100];for(i=k-1;;i++){do{printf("请输入日期(例:2012-7-1):");scanf("%d-%d-%d",&p[i].y,&p[i].m,&p[i].d);}while(!check1(p[i].y,p[i].m,p[i].d));fflush(stdin);printf("请输入摘要(默认:无):");gets(p[i].zy) ;if(strlen(p[i].zy)==0)strcpy(p[i].zy,"无");fflush(stdin);printf("请输入金额:");scanf("%f",&p[i].money);fflush(stdin);printf ("请输入币种(默认RMB):");gets (p[i].biz);if(strlen(p[i].biz)==0) strcpy(p[i].biz,"RMB"); p[i].x=1;p[i].rmoney=p[i-1].rmoney+p[i].money;p[i].n=k;k=k+1;;printf("请输入Enter继续:");fflush(stdin);gets(q);return 0;}}int expend(struct data p[])//支出{int i;char q[100];for (i=k-1;;i++){do{printf("请输入日期(例:2012-7-1):");scanf("%d-%d-%d",&p[i].y,&p[i].m,&p[i].d);}while(!check1(p[i].y,p[i].m,p[i].d));fflush(stdin);printf("请输入摘要(默认:无):");gets(p[i].zy) ;if(strlen(p[i].zy)==0)strcpy(p[i].zy,"无");fflush(stdin);printf("请输入金额:");scanf("%f",&p[i].money);fflush(stdin);printf ("请输入币种(默认RMB):");gets (p[i].biz);if(strlen(p[i].biz)==0) strcpy(p[i].biz,"RMB"); p[i].x=0;p[i].rmoney=p[i-1].rmoney+p[i].money;p[i].n=k;k=k+1;printf("请输入Enter继续:");fflush(stdin);gets(q);return 0;}}int list(struct data p[]){char q[100];int i,y1,m1,d1,y2,m2,d2;do{ printf("输入时请注意日期的先后顺序\n");do{printf("请输入起始时间(例2000-1-1):");scanf("%d-%d-%d",&y1,&m1,&d1);}while(!check1(y1,m1,d1));do{printf("请输入截至时间(例2000-1-1):");scanf("%d-%d-%d",&y2,&m2,&d2);}while(!check1(y2,m2,d2));}while(!check2(y1,m1,d1,y2,m2,d2));if(check3(y1,m1,d1,y2,m2,d2)==0){printf ("此时间段内没有收支记录!\n");}else{printf("顺序号\t日期\t\t摘要\t金额\t余额\t币种\t标志\n");for(i=0;i<k;i++)printf("%d\t%d-%d-%d\t%s\t%g\t%g\t%s\t%d\n",p[i].n,p[i].y,p[i].m,p[i].d, p[i].zy,p[i].money,p[i].rmoney,p[i].biz,p[i].x);printf("注意:标志1为收入,标志0为支出!");}printf("请按Enter继续!");fflush(stdin);gets(q);return 0;}int destat (struct data p[]) //查询与统计{int y,m,z,i; char q[100];float sum1=0,sum2=0,rmoney;printf("请选择查询方式:\n");printf("1.查询年份:\n");printf("2.查询月份:\n");scanf("%d",&z);if(z==1){printf("请输入要查询的年份:");scanf("%d",&y);for(i=0;i<100;i++){if((y==p[i].y)&&(p[i].x==1))sum1=sum1+p[i].rmoney;if((y==p[i].y)&&(p[i].x==0))sum2=sum2+p[i].rmoney;}}if(z==2){printf ("请输入年份:");scanf ("%d",&y);do {printf ("请输入月份:");scanf ("%d",&m);}while (m<1||m>12);for(i=0;i<100;i++){if ((p[i].y==y)&&(p[i].x==1)&&(p[i].m==m)) sum1=sum1+p[i].rmoney;if ((p[i].y==y)&&(p[i].x==0)&&(p[i].m==m)) sum2=sum2+p[i].rmoney;}}rmoney=sum1-sum2;printf("总收入: %g\n",sum1);printf("总支出: %g\n",sum2);printf("余额: %g\n",rmoney);printf("请按Enter继续: ");fflush(stdin);gets(q);return 0;}void write(struct data p[])//写入文件{int i;FILE *fp;char q[20],t[100];if(k-1==0)printf("请先输入数据!!");else{printf("请输入文件名: ");fflush(stdin);gets(q);if(strlen(q)==0){strcpy(q,"record.dat");printf("已保存为默认文件data.dat\n") ;}fp=fopen(q,"w");for(i=0;i<k;i++){fwrite(&p[i],sizeof(struct data),1,fp);}printf ("记录已存储!\n");}printf ("\n请按Enter键继续:");fflush(stdin);gets(t);}void read (struct data p[])//读取文件{FILE *fp;char q[20],t[100];k=0;printf("输入文件名:");fflush(stdin);gets (q);if(strlen(q)==0) {strcpy(q,"record.dat");printf("已打开默认文件data.dat\n");}if((fp=fopen(q,"rb"))==NULL)printf("文件不存在!\n");else{fp=fopen(q,"r");while(!feof(fp)){fread(&p[k++],sizeof(struct data),1,fp);}fclose(fp);k=k-1;printf ("文件已读取!\n");}printf ("\n请按Enter键继续:");fflush(stdin);gets(t);}void main(){int n;do{printf("++++++++++++++++++\n");printf(" 个人收支管理 \n");printf("1.收入 \n");printf("2.支出 \n");printf("3.明细表 \n");printf("4.查询与统计 \n");printf("5.写入文件 \n");printf("6.读取文件 \n");printf("0.退出系统 \n");printf("++++++++++++++++++\n");printf("请输入你要进行操作:");scanf("%d",&n);switch (n){case 1:income(p); system("cls");break; case 2:expend(p); system("cls");break; case 3:list(p); system("cls");break; case 4:destat(p); system("cls");break; case 5:write(p); system("cls");break; case 6:read(p); system("cls");break; }}while(n!=0);}。

相关文档
最新文档