




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计工程训练 报告 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 1.需求分析 编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要 面对不只是某一个人而言,而是要面对很多的用户。那么想要解决这一问题,就必 须要求这个系统能够存储许多用户的基本信息和记录。同时也要求系统能够对不同 的用户的身份进行查找和验证。在验证通过之后,在对其进行用户所要求的操作。 作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应 的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查 找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某 一条整体的记录。但不允许对每条记录的单项数据进行更改,因为不管是收入还是 支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行 操作。除此之外,还必须有足够大的空间来存储新的记录。所以此程序就是基于这 个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功 能。 2 系统总框图和功能模块说明 2.1 系统总框图 个人财务管理系统个人财务管理系统 输 入 个 人 信 息 比 对 个 人 信 息 修 改 账 户 资 料 查 询 账 户 信 息 输 出 账 户 清 单 2.2 功能模块说明 (1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。 (2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统 调用。 (3)load( ):此函数的作用是将结构体数组中写入文件的信息读出,由系统调 用。 2 (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( ) /打印输出全部记录,打 印输出输入记录,打印输出支出记录 3 4 系统调试 4.1、程序开始执行时系统的所显示的页面: 4.2、选择退出系统: 4.3、选择登陆,并且输入的帐号和密码都正确: 4 4.4、用户输入的帐号不正确: 4.5、用户输入的帐号正确,密码不正确: 5 4.6、用户进行具体操作: 6 5 总结 本程序在编写是,主要就是基于用户的角度去分析该如何设计此程序,和编写功 能模块的。在编写程序时,所有的数据都是对结构体进行的操作,在此过程中,我 发现了自己在对指针操作的时候,尤其是对指向结构体数组的指针和指向结构体的 指针的操作都不够熟练。但在编写完此程序之后,我感觉自己对语法的应用有了明 显的提高。 6 源程序清单 #include #include #define null 0 #define max 20 #define ok 1 struct record char date20; char operate20; int num; ; struct list_record char account20; char code20; char name20; int rec_len; struct record recmax; rmax; /系统原有数据,用户不可知 int old_record( struct list_record r) 7 int i; for(i=0;i3;i+) ri.rec_len=4; strcpy(r0.account,1001); strcpy(r1.account,1002); strcpy(r2.account,1003); strcpy(r0.code,); strcpy(r1.code,); strcpy(r2.code,); strcpy( ,wang); strcpy( ,li); strcpy( ,zhang); strcpy(r0.rec0.date,07-01-01); strcpy(r0.rec1.date,07-02-01); strcpy(r0.rec2.date,07-03-01); strcpy(r0.rec3.date,07-04-01); 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-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); 8 strcpy(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; 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; 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;imax;i+) 9 if(fwrite( fclose(fp); /文件读出 void load( ) FILE *fp; int i; if(fp=fopen(wenjian,rb)=null) printf(can not open infile.n); return; for(i=0;imax;i+) if(fread( return; fclose(fp); /将用户输入的帐号与系统中原有帐号比较,查找用户帐号 int lookup_accounts( struct list_record r,char acc) int i; for(i=0;i3;i+) if(strcmp(ri.account,acc)=0) return ok; 10 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;ia.rec_len;i+) strcpy(a.reci.date,0); strcpy(a.reci.operate,0); a.reci.num=0; for(i=0;iname); printf(帐号:%sn,(*p).account); /根据用户输入的日期,查找记录 int find_record( struct list_record *p,char d) int i; for(i=0;ilop-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); (*p).reci.num=(*p1).num; (*p).rec_len+; return ok; / 删除记录函数 int del_record( struct list_record *p,int lop2) int i; if(lop2(*p).rec_len) printf(the position is wrong.n); return null; else 13 for(i=lop2-1;i(*p).rec_len-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; (*p).rec_len-; return ok; /输出全部记录函数 void all_print( struct list_record *p) int i; printf(date operate numn); for(i=0;i(*p).rec_len;i+) printf(%s ,(*p).reci.date); printf(%s ,(*p).reci.operate); printf(%d ,(*p).reci.num); printf(n); /计算总的钱数 int sum_num( struct list_record *p) int i; int sum=0; int sum_in=0; 14 int sum_out=0; for(i=0;i0) sum_in+=(*p).reci.num; if(*p).reci.num0) sum_out+=(*p).reci.num; printf(总金额为: %dn,sum); printf(总收入为: %dn,sum_in); printf(总支出为: %dn,sum_out); return ok; /输出收入记录 int acc_print( struct list_record *p) int i; int sum_acc=0; printf(date operate numn); for(i=0;i0) sum_acc+=(*p).reci.num; printf(%s ,(*p).reci.date); printf(%s ,(*p).reci.operate); printf(%d ,(*p).reci.num); printf(n); 15 printf(总收入金额为: %dn,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 numn); for(i=0;irec_len;i+) if(*p).reci.num0) sum_pay+=(*p).reci.num; printf(%s ,(*p).reci.date); printf(%s ,(*p).reci.operate); printf(%d ,(*p).reci.num); printf(n); printf(总的支出为: %dn,sum_pay); return ok; if(sum_pay=0) printf(there is no payout.n); return null; void main( ) int j=0,n=0; 16 int x,k,lop1,lop2; char data120; char accou20,cod20; struct record *p0; struct record a; struct list_record b; struct list_record *p; b.rec_len=0; p0= old_record(r); save( ); load( ); printf( 欢迎使用个人财政支出管理系统!n); printf(-n); printf(| |n); printf(| 1、登陆系统 |n); printf(| 2、退出系统 |n); printf(| |n); printf(-n); scanf(%d, if(x=0) printf( 感谢您使用本系统,再见!n); else do printf(请输入帐号:); /while(j3); scanf(%s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创先争优考试题目及答案
- 2025-2026学年吉林省白城一中高二上学期开学考数学试题及答案
- 山东省威海市环翠区温泉小学2025-2026学年三年级上册第一、二单元质量检测数学试题(含答案)
- 2025妇幼保健院护理信息系统的深度应用与问题反馈试题
- 沧州市中医院放疗科病历文书书写规范与质量考核试题
- 石家庄市人民医院运营管理岗位准入综合知识笔试试题
- 财会岗位笔试题及答案
- 2025年甘肃省庆阳市西峰区招聘城镇公益性岗位20人模拟试卷及1套完整答案详解
- 上海市中医院骨肿瘤活检术规范操作考核
- 2025年湖南长沙水业集团有限公司春季校园招聘24人考前自测高频考点模拟试题有完整答案详解
- 围墙新建及改造工程施工组织设计(技术标)
- 房屋建筑学民用建筑构造概论
- 政策议程多源流模型分析
- 蓝点网络分账解决方案
- GB/T 22315-2008金属材料弹性模量和泊松比试验方法
- GB/T 17980.37-2000农药田间药效试验准则(一)杀线虫剂防治胞囊线虫病
- 血管活性药物(ICU)课件
- 旅游饭店服务技能大赛客房服务比赛规则和评分标准
- “手电筒”模型-高考数学解题方法
- GB∕T 2980-2018 工程机械轮胎规格、尺寸、气压与负荷
- TTAF 068-2020 移动智能终端及应用软件用户个人信息保护实施指南 第8部分:隐私政策
评论
0/150
提交评论