C语言程序设计个人财务管理系统.doc
《C语言程序设计个人财务管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计个人财务管理系统.doc(22页珍藏版)》请在咨信网上搜索。
. 程序设计工程训练报告 C语言程序设计个人财务管理系统 课程名称 C语言程序设计工程训练 姓 名 院(系) 信息科学与技术学院 专业班级 学 号 指导教师 教务处制 目 录 1.需求分析 1 2系统总框图和功能模块说明 1 2.1系统总框图 1 2.2功能模块说明 1 3系统设计 2 3.1主要结构体 2 3.2主要功能函数 2 4系统调试 3 4.1、程序开始执行时系统的所显示的页面: 3 4.2、选择退出系统: 3 4.3、选择登陆,并且输入的帐号和密码都正确: 3 4.4、用户输入的帐号不正确: 4 4.5、用户输入的帐号正确,密码不正确: 4 4.6、用户进行具体操作: 5 5总结 6 6源程序清单 6 . 1.需求分析 编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。同时也要求系统能够对不同的用户的身份进行查找和验证。在验证通过之后,在对其进行用户所要求的操作。 作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。除此之外,还必须有足够大的空间来存储新的记录。所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。 2系统总框图和功能模块说明 2.1系统总框图 个人财务管理系统 输入个人信息 比对个人信息 修改账户资料 查询账户信息 输出账户清单 2.2功能模块说明 (1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。 (2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。 (3)load( ):此函数的作用是将结构体数组中写入文件的信息读出,由系统调用。 (4)lookup_accounts( ):此函数的作用是将用户输入的帐号与系统中的所有帐号进行对比,查看系统中是否有此帐号。 (5) check_code( ):此函数是作用是在系统查询到了帐号之后,对用户输入的帐号和密码进行检验,看是否相对应。 (6)print_message( ):此函数的功能是在系统检查了用户输入的帐号和密码之后,如果用户通过了系统的检查,在此显示用户可见的基本信息。 (7)find_record( ):此函数的作用是根据用户输入的日期进行查找操作。 (8)insert_record( ):此函数的功能是在记录中增加一条新的记录,这个记录由用户输入。 (9)del_record( ):此函数的功能是根据用户的输入的位置,将相应位置的记录删除。 (10)sum_num( ):此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总合。 (11)打印输出记录的函数:在本程序中一共有三个打印输出记录的函数,分别为all_print( )、acc_print( )、pay_print( )这三个函数。它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。 (12)mian( ):在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。 3系统设计 3.1主要结构体 个人信息 账户信息 3.2主要功能函数 old_record( ) //将所有用户信息存入系统 print_message( ) //显示用户可见的基本信息 sum_num( ) //计算所有收入和支出的总和 all_print( )、acc_print( )、pay_print( ) //打印输出全部记录,打印输出输入记录,打印输出支出记录 4系统调试 4.1、程序开始执行时系统的所显示的页面: 4.2、选择退出系统: 4.3、选择登陆,并且输入的帐号和密码都正确: 4.4、用户输入的帐号不正确: 4.5、用户输入的帐号正确,密码不正确: 4.6、用户进行具体操作: 5总结 本程序在编写是,主要就是基于用户的角度去分析该如何设计此程序,和编写功能模块的。在编写程序时,所有的数据都是对结构体进行的操作,在此过程中,我发现了自己在对指针操作的时候,尤其是对指向结构体数组的指针和指向结构体的指针的操作都不够熟练。但在编写完此程序之后,我感觉自己对语法的应用有了明显的提高。 6源程序清单 #include<stdio.h> #include<string.h> #define null 0 #define max 20 #define ok 1 struct record{ char date[20]; char operate[20]; int num; }; struct list_record{ char account[20]; char code[20]; char name[20]; int rec_len; struct record rec[max]; }r[max]; //系统原有数据,用户不可知 int old_record( struct list_record r[]) { int i; for(i=0;i<3;i++) r[i].rec_len=4; strcpy(r[0].account,"1001"); strcpy(r[1].account,"1002"); strcpy(r[2].account,"1003"); strcpy(r[0].code,"111111"); strcpy(r[1].code,"222222"); strcpy(r[2].code,"333333"); strcpy(r[0].name ,"wang"); strcpy(r[1].name ,"li"); strcpy(r[2].name ,"zhang"); strcpy(r[0].rec[0].date,"07-01-01"); strcpy(r[0].rec[1].date,"07-02-01"); strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in"); strcpy(r[0].rec[1].operate,"out"); strcpy(r[0].rec[2].operate,"in"); strcpy(r[0].rec[3].operate,"out"); strcpy(r[1].rec[0].operate,"out"); strcpy(r[1].rec[1].operate,"in"); strcpy(r[1].rec[2].operate,"out"); strcpy(r[1].rec[3].operate,"in"); strcpy(r[2].rec[0].operate,"in"); strcpy(r[2].rec[1].operate,"out"); strcpy(r[2].rec[2].operate,"in"); strcpy(r[2].rec[3].operate,"out"); r[0].rec[0].num=3000; r[0].rec[1].num=-1500; r[0].rec[2].num=2500; r[0].rec[3].num=-1000; r[1].rec[0].num=-3000; r[1].rec[1].num=5000; r[1].rec[2].num=-1000; r[1].rec[2].num=2000; r[2].rec[0].num=1000; r[2].rec[1].num=-1500; r[2].rec[2].num=3000; r[2].rec[2].num=-500; return ok; } //将数据写入文件 void save( ) {FILE *fp; int i; if((fp=fopen("wenjian","wb"))==null) {printf("can not open the file.\n"); return; } for(i=0;i<max;i++) if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n"); fclose(fp); } //文件读出 void load( ) {FILE *fp; int i; if((fp=fopen("wenjian","rb"))==null) {printf("can not open infile.\n"); return; } for(i=0;i<max;i++) if(fread(&r[i],sizeof(struct list_record),1,fp)!=1) {if(feof(fp)) (fclose(fp)); return; } fclose(fp); } //将用户输入的帐号与系统中原有帐号比较,查找用户帐号 int lookup_accounts( struct list_record r[],char acc[]) { int i; for(i=0;i<3;i++) if(strcmp(r[i].account,acc)==0) { return ok; } printf("帐号不存在,请重新输入!\n"); return null; } //检查密码函数 struct list_record check_code(struct list_record r[],char acc[],char c[]) { int i; struct list_record a; strcpy(a.account,"0"); strcpy(a.code,"0"); a.rec_len=0; for(i=0;i<a.rec_len;i++) { strcpy(a.rec[i].date,"0"); strcpy(a.rec[i].operate,"0"); a.rec[i].num=0; } for(i=0;i<3;i++) if(strcmp(r[i].account,acc)==0) if(strcmp(r[i].code,c)==0) return r[i]; printf("the code is wrong,please input again!\n"); return a; } //显示用户基本信息 void print_message( struct list_record *p) {printf("姓名:%s\n",p->name); printf("帐号:%s\n",(*p).account); } //根据用户输入的日期,查找记录 int find_record( struct list_record *p,char d[]) { int i; for(i=0;i<(*p).rec_len;i++) { if(strcmp((*p).rec[i].date,d)==0) { printf("date operate money\n"); printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d \n",(*p).rec[i].num); return ok; } } if(i==(*p).rec_len) printf("the date is not exit!\n"); return null; } //插入函数,根据用户输入的信息,增加记录 int insert_record( struct list_record *p,struct record *p1,int lop) { int i; if((lop<1)||(lop>((*p).rec_len+1))) { printf("the position is wrong.\n"); return 0; } else { for(i=(*p).rec_len;i>lop-1;i--) { strcpy((*p).rec[i].date,(*p).rec[i-1].date); strcpy((*p).rec[i].operate,(*p).rec[i-1].operate); (*p).rec[i].num=(*p).rec[i-1].num; } strcpy(p->rec[i].date,p1->date); strcpy((*p).rec[i].operate,(*p1).operate); (*p).rec[i].num=(*p1).num; (*p).rec_len++; return ok; } } // 删除记录函数 int del_record( struct list_record *p,int lop2) { int i; if((lop2<1)||(lop2>(*p).rec_len)) { printf("the position is wrong.\n"); return null; } else { for(i=lop2-1;i<(*p).rec_len-1;i++) { strcpy((*p).rec[i].date,(*p).rec[i+1].date); strcpy((*p).rec[i].operate,(*p).rec[i+1].operate); (*p).rec[i].num=(*p).rec[i+1].num; } (*p).rec_len--; return ok; } } //输出全部记录函数 void all_print( struct list_record *p) { int i; printf("date operate num\n"); for(i=0;i<(*p).rec_len;i++) { printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num); printf("\n"); } } //计算总的钱数 int sum_num( struct list_record *p) { int i; int sum=0; int sum_in=0; int sum_out=0; for(i=0;i<(*p).rec_len;i++) { sum+=(*p).rec[i].num; if((*p).rec[i].num>0) sum_in+=(*p).rec[i].num; if((*p).rec[i].num<0) sum_out+=(*p).rec[i].num; } printf("总金额为: %d\n",sum); printf("总收入为: %d\n",sum_in); printf("总支出为: %d\n",sum_out); return ok; } //输出收入记录 int acc_print( struct list_record *p) { int i; int sum_acc=0; printf("date operate num\n"); for(i=0;i<(*p).rec_len;i++) if((*p).rec[i].num>0) { sum_acc+=(*p).rec[i].num; printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num); printf("\n"); } printf("总收入金额为: %d\n",sum_acc); return ok; if(sum_acc==0) printf("there is no account.\n"); return null; } //输出支出记录 int pay_print( struct list_record *p) {int i; int sum_pay=0; printf("date operate num\n"); for(i=0;i<p->rec_len;i++) if((*p).rec[i].num<0) { sum_pay+=(*p).rec[i].num; printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num); printf("\n"); } printf("总的支出为: %d\n",sum_pay); return ok; if(sum_pay==0) printf("there is no payout.\n"); return null; } void main( ) { int j=0,n=0; int x,k,lop1,lop2; char data1[20]; char accou[20],cod[20]; struct record *p0; struct record a; struct list_record b; struct list_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("| |\n"); printf("------------------------------------------------------------\n"); scanf("%d",&x); if(x==0) printf(" 感谢您使用本系统,再见!\n"); else { do { printf("请输入帐号:"); //while(j<3); scanf("%s",accou); if(lookup_accounts(r,accou)) { printf("请输入密码:"); //while(j<3); scanf("%s",cod); b=check_code(r,accou,cod); 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; } else { printf("---------------请选择您要进行的操作-------------------\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=&b; print_message(p); do { scanf("%d",&k); //while(k>0) if(k==10) printf("感谢您使用本系统,再见!\n"); if(k==2) { printf("请输入您要查询的日期:"); scanf("%s",data1); find_record(p,data1); } if(k==3) { printf("请输入你要插入的位置:\n"); scanf("%d",&lop1); printf("请输入您要添加的记录:\n"); printf("日期:"); scanf("%s",p0->date); printf("操作:"); scanf("%s",p0->operate); printf("金额:"); scanf("%d",&(p0->num)); insert_record(p,p0,lop1); } if(k==4) { printf("请输入您要删除的记录的位置:\n"); scanf("%d",&lop2); del_record(p,lop2); } if(k==5) { all_print(p); sum_num(p); } if(k==6) acc_print(p); if(k==7) pay_print(p); }while(k>0); break; } } j++; }while(j<3); printf("感谢您使用本系统,再见!\n"); } } (2)量化评分表 请学生将下面成绩评定表复制到报告的最后一页(单独一页)。 程序设计工程训练成绩评定标准表 明细项目 评分等级(含系数) 评分分值 实际得分 考勤 A(1) B(0.8) C(0.5) D(0.0) 10 工程项目规范 A(1) B(0.8) C(0.5) D(0.2) 10 工程训练报告 A(1) B(0.8) C(0.5) D(0.2) 30 设计作品质量 A(1) B(0.8) C(0.5) D(0.2) 45 材料收集情况 A(1) B(0.8) C(0.5) D(0.2) 5 综合评分 优 90-100 良 80-89 中 70-79 合格 60-69 不合格 0-59 该生成绩为: ,指导老师(签名): 评定日期: 年 月 日 .- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 个人 财务管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文