


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教帅教务处制1.需求分析12系统总框图和功能模块说明12.1系统总框图12.2功能模块说明13系统设计23.1主要结构体23.2主要功能函数24系统调试34.1、程序开始执行时系统的所显示的页面:34.2、选择退出系统:34.3、选择登陆,并且输入的帐号和密码都正确:34.4、用户输入的帐号不正确:44.5、用户输入的帐号正确,密码不正确:44.6、用户进行具体操作:55总结66源程序清单61.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所
2、要面对不只是某一个人而言,而是要面对很多的用户。那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。同时也要求系统能够对不同的用户的身份进行查找和验证。在验证通过之后,在对其进行用户所要求的操作。作为一个财政支出系统,那么就要求对丁用户关丁金钱的每一项操作都要有相应的记录,同时并允许用户对丁每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。除此之外,还必须有
3、足够大的空间来存储新的记录。所以此程序就是基丁这个思想而编写出来的,基本满足了用户对丁一个财政支出管理系统所要求的相关功能。2系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1) old_record():此函数由系统自行调用,作用是将所有用户信息存入系统。(2) voidsave():此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。(3) load():此函数的作用是将结构体数组中写入文件的信息读出,由系统调用lookup_accounts():此函数的作用是将用户输入的帐号与系统中的所有帐号进行对比,查看系统中是否有此帐号(4) check_code():此函数是作
4、用是在系统查询到了帐号之后,对用户输入的帐号和密码进行检验,看是否相对应。(5) print_message():此函数的功能是在系统检查了用户输入的帐号和密码之后,如果用户通过了系统的检查,在此显示用户可见的基本信息。(6) find_record():此函数的作用是根据用户输入的日期进行查找操作。(7) insert_record():此函数的功能是在记录中增加一条新的记录,这个记录由用户输入。(8) del_record():此函数的功能是根据用户的输入的位置,将相应位置的记录删除。(9) sum_num():此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总
5、合。(10) 打印输出记录的函数:在本程序中一共有三个打印输出记录的函数,分别为all_print()、acc_print()、pay_print()这三个函数。它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。(11) mian():在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。3系统设计3.1主要结构体个人信息账户信息3.2主要功能函数old_record()将所有用户信息存入系统print_message()显示用户可见的基本信息sum_num()计算所有收入和支出的总和all_print()、acc_print()、pay_pr
6、int()打印输出全部记录,打印输出输入记录,打印输出支出记录4.1、程序开始执行时系统的所显示的页面:4.2、选择退出系统:4.3、选择登陆,并且输入的帐号和密码都正确:欢迎使用个人财政支出管理系细青输入帐号:1001青输入密码:llilli请选择您要进行的操作录录己己天出记收支录记记记找川除出出出古*-=1001入不入不入不您会笛董|P®P谢I青柴ii献thethe1001codecodeisiswronsr,pleasewrong.,pleaseinfiutinputaga±nTagain*iicodeiswrong,pleaseinputa?ainTiicodeis
7、uroriQf,pleaseinputaain*您的密码不正顼,请退出系统,谢谢使用,再见I感谢您使用本累统,再电!PressanvkeitocontinueH4.4、用户输入的帐号不正确:样与请重新输入I卷蕾请重新输入IJ1卷在,请重新蓊入I便用本索统,常西an5/keytocontinue4.5、用尸输入的帐号正确,密码不正确姓名:wan31:1001请输入您要查询的日期:07-01-01dateoperatemoney07-01-01in3000备输入你要插入的位置,请胸入您要添加的记录:日期=07-05-01操隹:in金额*100Bdateoperatenum07-H5-B1in100
8、00701-01in300907-0201out-150007-H3-«lin25M0070401out-100ft总金额为=4000总收入为=6500总支出为:-25002dateoperatenum07-05-01in100007-02-01out-150007-03-01in2500070401out1000总金额为:1000总收入为:3500总麦出为=-2500dateoperatenum07-05-01in100007-03-01in2500俱收入金额为:3500dateoperatenun07-02-01out-150007-04-01out-1008总的支出为盘-250
9、00国谢您使用本系统,再见I炉映”mykeytoconri时晚5总结本程序在编写是,主要就是基于用户的角度去分析该如何设计此程序,和编写功能模块的。在编写程序时,所有的数据都是对结构体进行的操作,在此过程中,我发现了自己在对指针操作的时候,尤其是对指向结构体数组的指针和指向结构体的指钉的操作都不够熟练。但在编写完此程序之后,我感觉自己对语法的应用有了明显的提6源程序清单#include<stdio.h>#include<string.h>#definenull0#definemax20#defineok1structrecordchardate20;charoperat
10、e20;intnum;structlist_recordcharaccount20;charcode20;charname20;intrec_len;structrecordrecmax;rmax;系统原有数据,用户不可知intold_record(structlist_recordr)inti;for(i=0;i<3;i+)ri.rec_len=4;strcpy(r0.account,"1001");strcpy(r1.account,"1002");strcpy(r2.account,"1003");strcpy(r0.co
11、de,"11111T);strcpy(r1.code,"222222");strcpy(r2.code,"333333");strcpy(,"wang");strcpy(,"li");strcpy(,"zhang");strcpy(r0.rec0.date,"07-01-01");strcpy(r0.rec1.date,”07-02-0T);strcpy(r0.rec2.date,”07-03-0T);strcpy(r0.r
12、ec3.date,”07-04-0T);strcpy(r1.rec0.date,"07-01-02");strcpy(r1.rec1.date,"07-02-02");strcpy(r1.rec2.date,"07-03-02");strcpy(r1.rec3.date,"07-04-02");strcpy(r2.rec0.date,"07-01-03");strcpy(r2.rec1.date,"07-02-03");strcpy(r2.rec2.date,"07
13、-03-03");strcpy(r2.rec3.date,"07-04-03");strcpy(r0.rec0.operate,"in");strcpy(r0.rec1.operate,"out");strcpy(r0.rec2.operate,"in");strcpy(r0.rec3.operate,"out");strcpy(r1.rec0.operate,"out");strcpy(r1.rec1.operate,"in");strcpy(
14、r1.rec2.operate,"out");strcpy(r1.rec3.operate,"in");strcpy(r2.rec0.operate,"in");strcpy(r2.rec1.operate,"out");strcpy(r2.rec2.operate,"in");strcpy(r2.rec3.operate,"out");r0.rec0.num=3000;r0.rec1.num=-1500;r0.rec2.num=2500;r0.rec3.num=-1000;
15、r1.rec0.num=-3000;r1.rec1.num=5000;r1.rec2.num=-1000;r1.rec2.num=2000;r2.rec0.num=1000;r2.rec1.num=-1500;r2.rec2.num=3000;r2.rec2.num=-500;returnok;将数据写入文件voidsave()FILE*fp;inti;if(fp=fopen("wenjian","wb")=null)printf("cannotopenthefile.n");return;for(i=0;i<max;i+)if
16、(fwrite(&ri,sizeof(structlist_record),1,fp)!=1)printf("filewriteerror.n");fclose(fp);文件读出voidload()FILE*fp;inti;if(fp=fopen("wenjian","rb")=null)printf("cannotopeninfile.n");return;for(i=0;i<max;i+)if(fread(&ri,sizeof(structlist_record),1,fp)!=1)if(
17、feof(fp)(fclose(fp);return;fclose(fp);将用户输入的帐号与系统中原有帐号比较,查找用户帐号intlookup_accounts(structlist_recordr,characc)inti;for(i=0;i<3;i+)if(strcmp(ri.account,acc)=0)returnok;printf(-帐号不存在,请重新输入!n");returnnull;/检查密码函数structlist_recordcheck_code(structlist_recordr,characc,charc)(inti;structlist_record
18、a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i+)(strcpy(a.reci.date,"0");strcpy(a.reci.operate,"0");a.reci.num=0;for(i=0;i<3;i+)if(strcmp(ri.account,acc)=0)if(strcmp(ri.code,c)=0)returnri;printf("thecodeiswrong,pleasein
19、putagain!n");returna;显示用户基本信息voidprint_message(structlist_record*p)(printf("姓名:%sn",p->name);printf("帐号:sn",(*p).account);根据用户输入的日期,查找记录intfind_record(structlist_record*p,chard)(inti;for(i=0;i<(*p).rec_len;i+)(if(strcmp(*p).reci.date,d)=0)(printf("dateoperatemoney
20、n");printf("%s",(*p).reci.date);printf("%s",(*p).reci.operate);printf("%dn",(*p).reci.num);returnok;if(i=(*p).rec_len)printf("thedateisnotexit!n");returnnull;插入函数,根据用户输入的信息,增加记录intinsert_record(structlist_record*p,structrecord*p1,intlop)(inti;if(lop<1)
21、|(lop>(*p).rec_len+1)(printf("thepositioniswrong.n");return0;else(for(i=(*p).rec_len;i>lop-1;i-)(strcpy(*p).reci.date,(*p).reci-1.date);strcpy(*p).reci.operate,(*p).reci-1.operate);(*p).reci.num=(*p).reci-1.num;strcpy(p->reci.date,p1->date);strcpy(*p).reci.operate,(*p1).operate
22、);(*p).reci.num=(*p1).num;(*p).rec_len+;returnok;/删除记录函数intdel_record(structlist_record*p,intlop2)(inti;if(lop2<1)|(lop2>(*p).rec_len)(printf("thepositioniswrong.n");returnnull;else(for(i=lop2-1;i<(*p).rec_len-1;i+)(strcpy(*p).reci.date,(*p).reci+1.date);strcpy(*p).reci.operate,(*
23、p).reci+1.operate);(*p).reci.num=(*p).reci+1.num;(*p).rec_len-;returnok;输出全部记录函数voidall_print(structlist_record*p)(inti;printf("dateoperatenumn");for(i=0;i<(*p).rec_len;i+)(printf("%s",(*p).reci.date);printf("%s",(*p).reci.operate);printf("%d",(*p).reci.num
24、);printf("n");计算总的钱数intsum_num(structlist_record*p)(inti;intsum=0;intsum_in=0;intsum_out=0;for(i=0;i<(*p).rec_len;i+)(sum+=(*p).reci.num;if(*p).reci.num>0)sum_in+=(*p).reci.num;if(*p).reci.num<0)sum_out+=(*p).reci.num;printf("总金额为:dn”,sum);printf("总收入为:%dn",sum_in);
25、printf("总支出为:%dn",sum_out);returnok;输出收入记录intacc_print(structlist_record*p)(inti;intsum_acc=0;printf("dateoperatenumn");for(i=0;i<(*p).rec_len;i+)if(*p).reci.num>0)(sum_acc+=(*p).reci.num;printf("%s”,(*p).reci.date);printf("%s”,(*p).reci.operate);printf("%d”,
26、(*p).reci.num);printf("n");printf("总收入金额为:dn",sum_acc);returnok;if(sum_acc=0)printf("thereisnoaccount.n");returnnull;输出支出记录intpay_print(structlist_record*p)inti;intsum_pay=0;printf("dateoperatenumn");for(i=0;i<p->rec_len;i+)if(*p).reci.num<0)sum_pay+=
27、(*p).reci.num;printf("%s",(*p).reci.date);printf("%s",(*p).reci.operate);printf("%d",(*p).reci.num);printf("n");printf("总的支出为:%dn",sum_pay);returnok;if(sum_pay=0)printf("thereisnopayout.n");returnnull;voidmain()intj=0,n=0;intx,k,lop1,lop2;c
28、hardata120;characcou20,cod20;structrecord*p0;structrecorda;structlist_recordb;structlist_record*p;b.rec_len=0;p0=&a;old_record(r);save();load();printf("欢迎使用个人财政支出管理系统!n");printf("n");printf("|n");printf("|1、登陆系统|n");printf("|2、退出系统|n");printf(&qu
29、ot;|n");printf("n");scanf("%d",&x);if(x=0)printf("感谢您使用本系统,再见!n");elsedoprintf("请输入帐号:");/while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou)(printf("请输入密码:");/while(j<3);scanf("%s",cod);b=check_code(r,accou,co
30、d);if(b.rec_len=0)do(b=check_code(r,accou,cod);/while(n>3)scanf("%s",cod);n+;while(n<3);if(n=3)printf("您的密码不正确,请退出系统,谢谢使用,再见!n");break;elseprintf("请选择您要进行的操作n");printf("|n");/while(j<3);printf("|2、查找记录|n");printf("|3、增加记录|n");printf("|4、删除记录|n");printf("|5、输出所有记录|n");printf("|6、输出所有收入记录|n");printf("|7、输出所有支出记录|n");printf("|n");printf("|n");p=&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作场所的学习动机与工作效率关系研究
- 企业智能化管理系统的构建与实践
- 智慧城市的社会治理与创新
- 家庭教育中心理激励方法探讨
- 提升在线教学质量实操与策略研究
- 19-木皮蓝变?有没有办法提前预防富深一个解决方案
- 全球视野下的葡萄酒产区特色:2025年品牌国际化路径研究报告
- 公交优先发展战略背景下2025年城市交通拥堵治理路径探索报告
- Chitosan-Cy7-5-MW-100000-生命科学试剂-MCE
- 北京市昌平二中学南校区2024年化学九年级第一学期期末质量跟踪监视试题含解析
- 中医养生的吃野山参粉养生法
- 新闻采编培训课件
- 来料检验规范
- 电镀产品检验记录
- 2023-2024学年辽宁省大连市小学语文五年级期末评估试卷附参考答案和详细解析
- 2023年小学数学必背定义和公式
- 2023年四川省宜宾市全科医学专业实践技能测试卷(含答案)
- 兴平市生活垃圾焚烧发电项目环评报告
- 主令电器(课用)课件
- 湘少版英语六年级下册全册教案
- 湖南省长郡中学“澄池”杯数学竞赛初赛试题(扫描版含答案)
评论
0/150
提交评论