C语言程序设计实验报告_第1页
C语言程序设计实验报告_第2页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言程序设计实验报告 家庭财务管理系统 安阳工学院 c 语言 课 程 设 计 课程题目:家庭财务管理系统 院 系:计算机科学与信息工程学院 专业班级:11级计算机科学与技术(嵌入方向) 姓 名:吕鹏 学 号:202103010042 号码:1476265623 指导老师:高原 家庭财务管理系统 完成时间:公元二零一二年六月十五 课 程 设 计 任 务 书 家庭财务管理系统 工作方案: 1. 小组审题,查阅资料,进行设计前的必要资料预备(2 天) 。 2. 把程序完整运行出来(3 天) 。 3. 增加改进程序(2 天) 。 4. 写课程设计报告(2 天) 。 5. 提交课程设计报告及答辩(1

2、天) 任务下达日期:2021 任务完成日期:2021 年 6 月 1 日 年 6 月 15 日 指导老师(签名) : 同学(签名) : 吕鹏 家庭财务管理系统一、设计要求1.要求使用多文件方式实现设计. 2.要求在各个文件内实现结构化设计. 3.每个模块作为一个单独的 c 文件. 4.宏和数据结构等放在头文件中,并使用条件编译. 二、系统的功能模块 依据设计要求,同学成果管理系统功能模块如图 2-1 所示。 家庭财务管理系统 收入管理 支出管理 统计 退出 添对 加法 收 入 查 删 除 询 收 收 入 图 21 入 明 细 反 修 改 收 入 添 加 支 出 查 询 支 出 明 细 删 除

3、支 出 修 改 支 出 家庭财务管理系统 三、数据结构定义及描述#define max_name 11/*家庭成员姓名最大长度*/ #define max_detail 21/*备注最大长度*/ #define menu_count 9 /*菜单选项个数*/ #define data_file fs.dat/*数据文件文件名*/ typedef enum _fi_type /*自定义枚举型表示收入收出*/ income = 1,/*收入*/ payout = -1/*支出*/ fi_type; typedef struct _fi_info/*储存家庭财务信息的结构体*/ int year;/

4、*年*/ int month;/*月*/ fi_type type;/*数据类型*/ char namemax_name;/*家庭成员姓名*/ float money;/*收入或支出金额*/ char detail max_detail;/*备注*/ fi_info; typedef struct _fi_data/*储存财务数据结构 的结构体*/ fi_info info;/*财务数据*/ 家庭财务管理系统 每个家庭成员的财务讯息用结构体 fi_info 来储存,用结构体 fi_date 来储存财务的数据,其中 max_name, 家庭成员姓名的长度, max_detail 来限定备注的长度

5、。 用 其中 struct _fi_data*next; 来表示指向下一个节点的指针,用于便利操作。 四、函数功能及参数说明、相互调用关系依据功能模块划分,同学成果管理系统需建立的文件、各文件所包含的函数以及 各函数的相互调用关系下表所示。 源函数 menu 函数名称 quit add_income search_income delete_income updete_income add_payout search_payout delete_payout updete_payout count_total 表4-1 函数功能 退出系统 添加收入 查询收入明细 删除收入 修改收入 添加支出

6、查询支出明细 删除支出 修改支出 统计总支出收入 总控函数 main() 函数名称 search_date delete_date 函数功能 查询处理 删除处理 家庭财务管理系统 函数名称 initialize save_to_file() clear_date() 帮助函数 fi_date* get_last fi_date* get_previous input_info show_info fi_data*head 函数功能 系统初始化 将财务数据保存到文件 清空链表中的数据 得到财务链表最终一个节点 取得财务数据节点的前一个节点 输入财务数据信息 显示财务数据 财务数据的头节点 图 4

7、-3五、各变量的定义和作用 #define max_name 11/*家庭成员姓名最大长度*/ #define max_detail 21/*备注最大长度*/ #define menu_count 9 /*菜单选项个数*/ #define data_file fs.dat/*数据文件文件名*/ typedef struct _fi_info/*储存家庭财务信息的结构体*/ int year;/*年*/ int month;/*月*/ fi_type type;/*数据类型*/ char namemax_name;/*家庭成员姓名*/ float money;/*收入或支出金额*/ char d

8、etail max_detail;/*备注*/ 家庭财务管理系统 主函数(main()在此文件的主要功能是依据用户输入不同的值, 调用对应的处理 函数,用户输入的数值与之对应的处理函数如下图所示。 主函数 main(),输入不同的数值调用不同的处理函数 数 1 值 调 添 加 查 询 收 删除 修 改 添 加 查 询 删 除 支 修 改 统 计 退出系统 用 收入 函 数 功 能 调 add_ 用 inco 函 me 数 类 型 输入错误后,请选择 0-9 的任意数重试 search_ income dele te_ inco me updat e_ incom e add_ payou t

9、searc h_ payou t delete_ payout updat e payou t count total quit 入明细 收入 收入 支出 支 出 出 明细 支出 总 支 出 收 入 2 3 4 5 6 7 8 9 0 2、search_date该函数的功能是收入和支出的查询操作。提示用户根据指定的格式输入要 查询的年月,假如用户输入错误,给出相应的提示信息,假如用户输入正确, 则在单链表中查询该年月的收入信息。假如查询胜利,推断查询的个数是否 小于九,调用函数 show_info 显示找到的收入信息;假如大于 9,按空格键进 家庭财务管理系统 3、delte_data该函数的

10、功能为收入和支 出的删除操作,首先提示用户输入要删除收入 的年月,然后依据用户收入的年月信息在单链中查找相关的信息,假如查找 胜利,且查找的数据小于 9,直接调用 show_info()h 函数显示查找到的收入 信息;假如查到的信息大于九条,则按空格键翻页。最终提示用户输出要删 除的收入信息的序号,完成删除操作。假如查找不胜利,给出相应的提示信 息。提示用户是否连续删除操作,假如输入 y 或 y,则在进行操作,否则返 回主菜单界面。 七、改进或增加功能模块说明1、在程序中增加了设置密码选项,只有用户输入自己的密码才能进行各种操作,程序如下 #includestring.h int main()

11、 struct data int i; char ch20; char name20; dt; file * fp; char shuru20; char ch; char c; if(fp=fopen(aa.dat,w)=null) printf(can not open aa.datfile!nplease set up this file in same directory!n); printf(按回车键退出.n); ch=getchar(); 家庭财务管理系统 fread(dt,sizeof(struct data),1,fp); if(dt.i=2) printf(请输入密码:);

12、gets(shuru); if(strcmp(shuru,dt.ch)=0) main_1(); else printf(password error!n); printf(是否重设密码: y n n); scanf(%c,ch); c=getchar(); if(ch='y'|ch='y') printf(请输入用户名:); gets(shuru); if(strcmp(shuru,)=0) fp=fopen(aa.dat,w); printf(*提示*n); printf(*账户已清除(原储存资料未清除)!请重设账户与密码!*n); printf(*n);

13、printf(按回车键退出.n); ch=getchar(); fclose(fp); else if(dt.i!=2) printf(首次登陆(或已清除账户),请设置用户名及密码n); printf(请输入用户名(为找回密码而设):); 家庭财务管理系统 scanf(%s,dt.ch); ch=getchar(); if(fp=fopen(aa.dat,w)=null) printf(can not open!); exit(0); dt.i=2; fwrite(dt,sizeof(struct data),1,fp); fclose(fp); main_1(); return 0; /接收

14、最终的回车字符 增加此程序后可以提高系统的平安系数以及可操作性。 八、程序测试 1、系统运行后,需要输入密码后才能进入主界面。允许用户输 入 09 的不同数字,以实现不同的操作。输入密码界面和主界面如 图 8-1,8-2 所示。 家庭财务管理系统 图 8-2 管理系统主菜单界面 2、添加收入信息进入主菜单界面后,输入数字 1,进入添加信息操作,用户依据提示的信息输入 年月,家庭成员姓名、输入明细和备注信息,输入完成后返回主界面。输入信息情 况如 8-3 所示。 家庭财务管理系统 界面 家庭财务管理系统 5、修改收入信息 在主菜单中输入 4,则进行修改信息的操作,系统提示要查询的年月,修改收入信

15、息的操作界 面如 8-6 所示。 图 86 修改输入信息 6、添加支出信息以及查询支出信息 在菜单中输入 5,进入添加支出信息操作,输入信息和查询支出状况如 8-7,8-8 所示。 家庭财务管理系统 图 8-8 查询支出信息 7、修改支出信息 在主菜单中的输入 8,进行修改支出操作,修改支出的信息的界面如图 8-9 所示 图 8-9 修改后的数据 8、在主菜单中输入 9,进行总收入和总支出信息的操作,操作界面如 8-10 所示。 家庭财务管理系统 九、程序设计过程中遇到的问题及解决过程 1.对程序整体理解,但在设计过程中,细节问题处理不当,造成程序不能运行或者运行错误,并且,对某一部分的程序不

16、能独立设计出来。 对此问题的解决是参考了c程序设计课程设计上的参考程序,完成了设计,但是不是一味的照搬,对参考程序进行了修改和添加。增加了按成果区间查询的查询方式,增加了按总成果排序的排序方式。 家庭财务管理系统 2.在组建工程的时候,将各个程序分给小组成员,两个人设计一个模块,但是消失了连接错误,各个模块之间也消失了输入上的错误,致使程序不能运行。 对于各个模块逐一检查,添加修改,最终使各个模块错误消退,同时连接错误也自行解决。 3.在刚开头程序设计的时候,不了解什么是组建工程,什么是模块,对于程序设计本身也有不理解的地方,不知道该从何下手。 解决方法:先看c程序设计课程设计,了解怎样组建工程,理解每个模块的作用,弄清晰参考程序上的规律挨次以及如何设计等问题,然后再进行课程设计。 十、课程设计心得及体会 对于第一次做课程设计的我来说,这次的课程设计是一次既让人苦痛又让人快乐的事情。开头的时候根本不清晰课程设计要设计什么,不知道究竟怎样设计,由于平常所写的c程序都是一些简洁而且基本的c程序,根本不是解决实际状况,符合客户要求的工程程序,所以觉得无从下手,觉得很困难,甚至没有一个思路,而且对于组建工程,构建模块等工作无法理解。这些状况都使自己

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论