个人收支管理组织系统.docx

上传人:牧羊曲112 文档编号:4234882 上传时间:2023-04-10 格式:DOCX 页数:36 大小:172.50KB
返回 下载 相关 举报
个人收支管理组织系统.docx_第1页
第1页 / 共36页
个人收支管理组织系统.docx_第2页
第2页 / 共36页
个人收支管理组织系统.docx_第3页
第3页 / 共36页
个人收支管理组织系统.docx_第4页
第4页 / 共36页
个人收支管理组织系统.docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《个人收支管理组织系统.docx》由会员分享,可在线阅读,更多相关《个人收支管理组织系统.docx(36页珍藏版)》请在三一办公上搜索。

1、计算机科学与信息工程学院课程设计报告2011-2012 第二学期课程设计名称 c语言课程设计 设计题目个人收支管理系统学生姓名学号专业班级指导教师2012 年 7 月 4 日个人收支管理一、设计目的一些比较发达国家人的生活中对理财有着很严格的计划 ,因此国 外的理财系统总体来说比较普遍 ,做的也比较完善 .国内的理财系统主 要偏重于办公财务软件 ,而个人理财和家庭理财方面的比较少 ,因此需 要开发相关的系统软件,从而达到引导理性消费,合理安排收支。进行账目的统计, 如果是手动统计的话,首先,如果每天统计的 话,用于统计的账本和记录会越来越多, 不利于保管, 容易造成丢失; 其次,随着纪录的增多

2、, 如果要查找以前的记录, 会变的越来越困难。 因此,需要一个功能比较完善的记账系统来代替传统的手工统计。个人收支管理系统可以方便地记录您家庭的每日收支情况。二、功能描述如图 1所示,本系统主要有 8个板块构成:1. 个人收支管理系统显示界面。 个人收支管理系统必须在系统运 行后第一时间显示出来。 此界面显示了一个收入模式、 一个支出模式、 一个明细表、一个查询与统计、一个记录数据写入文件、一个读取文 件的功能。2. 收入模式。用户可以在收入模式中输入以下数据:顺序号、日 期、摘要、 金额、余额、币种, 收入或支出标志。 默认币种为人民币, 也可以是美圆、欧元、日币或英镑。3. 支出模式。用户

3、可以在支出模式中输入以下数据:顺序号、日 期、摘要、 金额、余额、币种, 收入或支出标志。 默认币种为人民币, 也可以是美圆、欧元、日币或英镑。4. 明细表。用户可以根据需要输入起止时间来查询一段时间内的收入支出情况,系统会通过列表的形式把内容展示出来。5. 查询与统计。在此功能模式下,用户可以对一段时间的收入支 出情况进行查询,可以得到总收入、总支出和余额。此数据是按月或 按年份统计计算的。6. 此板块属于拓展功能 1- 写入文件,记录数据。在此模块下, 用户可以根据需要爆当前输入的数据保存下来,以备后用。7. 此板块属于拓展功能 2读取文件,读取数据。在此模块下, 用户可以读取以前所记录的

4、数据并进行查看。8. 退出系统。个人收支管理系统退出系统读取文件支出模式收入模式图1简易系统功能模块图二、总体设计1系统执行主程序本系统执行主程序如图2所示。首先,调用main函数,是系统进 入主显示面。然后由用户选择所需要的功能,并进入相应功能程序, 按照用户需求进行相应操作后回到主显示界面, 等待用户继续按键选 择功能进行操作。2系统显示界面此系统界面主要由可供选择的功能组成:收入、支出、明细表、查询与统计、写入文件、读取文件。用户在进行选择后可通过 switch语句进行跳转进入相应分程序。日期摘要输入文件名 读取文件写入文件查询与统计退出系统金额列表总收入总支出余额币种图2系统执行主流程

5、图四、数据结构设计data结构体struct dataint n;顺序int y,m,d;char zy100; / 摘要float money,rmoney;/ 金额,余额char biz5; / 币种int x; / 收支类型(标记 ,明细表或查询统计用)p100 ; 本程序中主要数据都需要显示顺序、日期、摘要、金额、余额、 币种和收支类型,所以需要定义 data 结构体。Int n :表示顺序。Int y ,m ,d :用来定义日期。Char zy : 摘要。Float money 、 rmoney :金额、余额。Char biz5 :币种。Int x : 定义收支类型。五、函数功能描述

6、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,con

7、st char *s2 ) 该函数用于把字符串s2复制给字符串si。6. file * () 函数原型: file *fp1;通过文件指针便于对流的访问。7. Fopen()函数原型:fopen (FILE_NAME ,” r或w” )该函数用于打开文件,进行读取或写入。8. Fclose ()函数原型: fclose() 该函数主要用来关闭用户打开的文件。9. Main() 函数原型: void main()Main ()为主函数。四、程序实现1.源码分析(1)程序预处理#include #include / 标准输入输出函数库/ 标准函数库/ 字符串操作函数库int income () i

8、nt expend() int list () int destat () void write() void read ()/ 收入模式/ 支出模式/ 明细表/ 查询与统计/ 写入文件/ 读取文件#include (2)主函数 main()Main() 函数主要实现了对整个程序的调用, 以及相关功能模块的 调用。 它主要的工作是初始化程序。void main()int n; / 确定用户需要进入的功能模块doprintf(+n);printf(个人收支管理n); / 用户可以进行的功能操作选项printf(1.收入n);printf(2.支出n);printf(3.明细表n);printf(

9、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 5:write(p);system(cls);break; /进入写入文件,结束后返回case 6:read(p);system(cls);b

10、reak; /进入读取文件,结束后返回while( n!=0); /退出系统2 .程序运行结果显示(1)初始化界面(2)进入收入模式-*C; VP ooumi! r -aniil 5vtt incErlAdainEFtratiarilj2!1-.it2+-+1.T寸H1 - S !-丁* WK 十 + 、出刃询人呼:旳+辅 F 亠 !*1R L. E 1 1 rf i. t X- *Czbacmaits utiA Set t ijigs1|1AiaBi.d al r at or|k V iJjEeKiI 2 A+ s -+ SV1 7=+ L#t- Lx+ Hv*上廖词卢!l小 化州无HE 永

11、1-Er 号;5.Z:!%上 p V - I #H Itsstl需 M:t*l 书,-x农氧:I: iKUU-Nh n:ab g星nRl 一 Il结束时按Enter返回主界面(3)进入支出模式EE:XDodiBEnts and Sett i/nAdnim strfttorX-feUfl课稈i计23吓人枚芟骨il2C0S-5-5ID*里 二宀 7;r當社人入A人A人”收訂-HLT .15JF.孙霍轴.药*2.囂乩S.J9.”请以思g歯X -11F d -t:e1巳Ea 卡二果 = R I 1 鶴封默结一 JI1-廿豎 CSC r聖晰要亦科in 程-K.V編”喘口皓馬En结束时按Enter返回主界

12、面(4)明细表1: *Ce DocuAeEits and Sett ingE iAiiiinistraror _SiSX程设计 2%十人收支管理eseInI - 0 理 iccfc. 管+*行日斜7-5-fl姗 十r“井意冷期S1阳A-仆 收 百243QH-忘 麦H文咬莎*+宙嚅-食 _卿 个X山细询、需+*X时人入号 I 我畐出晏退+更输玛 意 B.g.tuifc.札”華蠕圭r呃丄 NHa2000-丄一丄金顿余或帀种标恵23S235RHB17?d&llarBRR!请我EnMiW务结束时按Enter返回主界面(5)查询与统计 *C: MlocTrafint 3 md KettiiirsMIrL

13、wimst ratoirXfiEl设计2Y4H人 Iti7它規忙富上*卄作 :遅 :噪 :%S 计+进 p t -A 衷=_丈左节VI你古書 片夬出卵奧囁-ft入常前 f 协蕃夺W汶迥1|驸找至 t+札轧 06. 趴按年查询-C: Docnrafflit a md Kef t jnrsftrlwimst fatorXBl S.S设计214人 B(芟官理好上-J hTr+J-rxrh t -F 快 驴t+*番伤惰 A衷L.F箱血舍聲 郭询人帶+A翳前 杳 W+T 耳芳 E:,B,wEl.,B,“11话a,B濟入聲鱼询的年飯2BBS希萄* -679? 话欣師应沖:-按月查询-收A 表与文4冷 牛人

14、出坯臭醫(6) 写入文件fr岂-t tTFpr yF旷 tts+1A乏与丈文耒个妆4明=具主(7) 读取文件在这我们主要显示退出系统后读取文件操作显示:C:ocuEsnirs aiul SctEaoirPQ-|支 计人 表与V蒙协董个入岀絢萌入番”入任退H築a.20,M.5.fc.E卄|4ciieii a and. Set t ins iLdla mi at r at ariSlT-ijr计卜人枚支总理-丄.亡Ir.I.-F 秤 7:,-己2S*P- +理 +i-sful * JJ.J +1* +殳 +咁 + (X Jr-”操 计 -i 脅文蒙你意 卄个入出细询入暑入任 +4查写渎風+毂 “2

15、.3.|4.!5.请诗之后用户可以根据需要进行相应操作查看数据。(8) 退出系统訥kDocuBents and Se-ttinfsVAdtinistrat.六、课程设计总结经过2个星期的努力,终于完成了个人收支管理系统的设计。 本 来,在开始上课之前,我们都以为这是很简单的东西,毕竟我们都学 习了这么时间,并且也在课上进行了一次次的实战训练。可是,没想 到,别看平时比较容易,在这一刻,要把课上学到的知识融会贯通, 要想设计出自己心满意足的东西是多么的困难。不过,还好,总算完 成了,也感受到了成功的喜悦。努力奋斗,并不是没有回报的! 当然,在这2个星期的过程中,我们也发现了许多问题并克服了它们。

16、 这些问题或许是上课时没注意到的细节问题, 或是自己之前一直没能 搞懂的知识点,但不论如何,它都让我们学会了好多新的东西,有了 新的感悟。在此,感谢老师们的辛勤工作,无私贡献,感谢老师们的指导。七、源代码#include #include #include struct dataint n;int y,m,d;char zy100; / 摘要float money,rmoney;/ 金额,余额char biz5; / 币种p100;int k=1;int check1(int y, int m, int d)/ 检测日期合法性int a12=31,28,31,30,31,30,31,31,30

17、,31,30,31;if(y0)if(m0&m0&dy1) return 1;if(y2=y1&m2=m1&d2d1)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;i100;i+)if(check2(y1,m1,d1,pi.y,pi.m,pi.d)&(check2(pi.y,pi.m,pi.d,y2,m2,d2)k=k+1;if (k=1)return 1;else re

18、turn 0;int income(struct data p)int i;char q100;for(i=k-1;i+)doprintf( 请输入日期(例 :2012-7-1 ): ); scanf(%d-%d-%d,&pi.y,&pi.m,&pi.d);while(!check1(pi.y,pi.m,pi.d);fflush(stdin);printf( 请输入摘要 (默认 :无): );gets(pi.zy) ;if(strlen(pi.zy)=0)strcpy(pi.zy,无 );fflush(stdin);printf( 请输入金额 :);scanf(%f,&pi.money);ff

19、lush(stdin);printf ( 请输入币种 (默认 RMB):);ounoMb)so6 e_pls)lls -s黑9岳緯堰=lu_d:L+M2 專 u.md 匚 UOE-二 d+A UOEV二duA UOE.-二 d匚 x.mdFCQIAIgNq 三 dMdobsouz_q.三 d)u24=SMJNq.曰d) SO6A(pmdumd-A.md)ppo=llM宀MP.曰 doau.曰 doa-A.曰 d03-=p%1p%1p%=ueos(L.卜&LOCXI.-s 隸 口緯堰=u_d)op )(+土=上.!|)O4 -00 匸 belpu 一 田帜 v(=d erop 10nls)pue

20、dxe -u 一fflush(stdin);gets(pi.zy) ;if(strlen(pi.zy)=0)strcpy(pi.zy, 无 );fflush(stdin);printf( 请输入金额 :);scanf(%f,&pi.money);fflush(stdin);printf ( 请输入币种 (默认 RMB):);gets (pi.biz);if(strlen(pi.biz)=0) strcpy(pi.biz,RMB);pi.x=0;pi.rmoney=pi-1.rmoney+pi.money;pi.n=k;k=k+1;printf( 请输入 Enter 继续: );fflush(s

21、tdin);gets(q);return 0;int list(struct data p)char q100;int i,y1,m1,d1,y2,m2,d2;do printf( 输入时请注意日期的先后顺序! n);doprintf( 请输入起始时间(例 2000-1-1 ): );scanf(%d-%d-%d,&y1,&m1,&d1);while(!check1(y1,m1,d1);doprintf( 请输入截至时间(例 2000-1-1 ): );scanf(%d-%d-%d,&y2,&m2,&d2);while(!check1(y2,m2,d2);while(!check2(y1,m1

22、,d1,y2,m2,d2);if(check3(y1,m1,d1,y2,m2,d2)=0)elseprintf(”顺序号t日期tt摘要t金额t余额t币种t标志n”); for(i=0;ik;i+)printf(%dt%d-%d-%dt%st%gt%gt%st%dn,pi.n,pi.y,pi.m,pi.d, pi.zy,pi.money,pi.rmoney,pi.biz,pi.x);printf( 注意:标志 1为收入,标志 0为支出! );printf( 请按 Enter 继续!);fflush(stdin);gets(q);return 0;/ 查询与统计int destat (struct

23、 data p)int y,m,z,i; char q100;printf( 请选择查询方式: n);printf(1. 查询年份: n);printf(2. 查询月份: n); scanf(%d,&z);if(z=1)printf( 请输入要查询的年份: ); scanf(%d,&y);for(i=0;i100;i+)if(y=pi.y)&(pi.x=1) sum1=sum1+pi.rmoney;if(y=pi.y)&(pi.x=0) sum2=sum2+pi.rmoney;if(z=2)printf ( 请输入年份: );scanf (%d,&y);do scanf (%d,&m);whi

24、le (m12);for(i=0;i100;i+)if (pi.y=y)&(pi.x=1)&(pi.m=m)sum1=sum1+pi.rmoney;if (pi.y=y)&(pi.x=0)&(pi.m=m) sum2=sum2+pi.rmoney;rmoney=sum1-sum2;printf( 总收入: %gn,sum1);printf( 总支出 : %gn,sum2);printf( 余额: %gn,rmoney);printf(” 请按 Enter 继续:”); fflush(stdin);gets(q);return 0;void write(struct data p)/int i;

25、FILE *fp;char q20,t100; if(k-1=0) printf( 请先输入数据 !); else printf( 请输入文件名 : ); fflush(stdin); gets(q);if(strlen(q)=0)strcpy(q,record.dat);printf( 已保存为默认文件fp=fopen(q,w);for(i=0;ik;i+)写入文件data.datn) ;fwrite(&pi,sizeof(struct data),1,fp);printf (n 请按 Enter 键继续: ); fflush(stdin);gets(t);void read (struct

26、 data p)/读取文件FILE *fp;char q20,t100;k=0;printf( 输入文件名 :);fflush(stdin);gets (q);if(strlen(q)=0) strcpy(q,record.dat);printf( 已打开默认文件 data.datn);if(fp=fopen(q,rb)=NULL)printf( 文件不存在 !n);elsefp=fopen(q,r);while(!feof(fp)fread(&pk+,sizeof(struct data),1,fp);fclose(fp);k=k-1;printf ( 文件已读取! n);printf (n

27、 请按 Enter 键继续: );fflush(stdin);gets(t);void main()int n;doprintf(+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 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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号