



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青岛理工大学C 语言程序设计题目家庭财务管理系统指导教师:王金龙姓名:吴玮学号:201007133班级:网络 102专业:网络工程地点:多媒体楼 207时间:6.27至 7.01一、内容家庭财务管理系统主要是对家庭成员的收入,支出,进行添加,删除,查询等操作,并能统计总收入和总支出。该软件给家庭成员提供了一个管理家庭财务的平台。1) 菜单设计: 本系统提供简单易操作的界面。 有提示, 帮助用户根据需要对家庭财务管理系统进行操作。2) 添加模块:根据实际的收入或支出,添加相应的记录,条数不限。3) 查询模块:可以选择不同关键字输入,查找该条记录。4) 删除模块:若某条记录错误或者不需要则可以删除
2、。5) 显示模块: 按照添加的先后顺序依次把记录显示在屏幕上,并显示总收入和总支出以及余额。6) 退出模块:退出财务管理系统并保存文件。)二、上机环境操作系统: windows XP开发工具: VC6.0+三、函数调用关系图1添加联系开始打开文件,载入信息菜单界面2340查删显退询除示出联联联系系系保存结束四、各函数功能说明1系统主要函数及功能。1. ) add 函数:功能为添加收入或支出的记录2. ) search 函数:功能为查找联系人输入关键字,从文件中搜索相应的记录并显示出来。3. ) delete_rec 函数:功能为删除记录若某条记录错误或者不需要则可以删除。4. ) show 函
3、数:功能为显示记录,将添加的记录显示在屏幕上。5. ) quit 函数:功能为保存信息退出系统。五、算法描述添加: 在主菜单选择添加选项后,系统会依次让用户输入年月日,并且限定月份输入时要在1 至 12 内,如果符合要求则继续执行,输完整条记录。动态链表会根据用户的使用情况动态调整内存大小。插入一个结点到已有链表后,head 指向插入的结点,该结点指向head 原来所指的结点。每添加一条记录后接点随即加一。查询 :在主菜单选择查询选项后,选择查询方式,1. 按姓名查2. 按备注查。然后按提示输入相应的信息姓名(或备注) ,系统会根据信息用一个指针从这个链表的第一个结点依次往后开始查询,若某个结
4、点符合则输出该记录的信息,若指向NULL即最后一个结点也查询完毕依然没找到,则返回主菜单。删除:输入需要删除的姓名和金额,系统会根据信息用一个q 指针从这个链表的第一个结点依次往后开始查询, 并将已查询过的结点赋给另一个p 指针。若某个结点符合则显示该记录的信息, 并让用户再次确认是否删除。 若指向 NULL即最后一个结点也查询完毕依然没找到,则则返回主菜单。如果确定删除该结点,则q 所指的结点的前一个结点(即p 所指的结点)指向该接点所指向的下一个结点,也就是将 q 所指的结点从原来的链表中分离出来。每删除一条记录后接点随即减一。六、程序运行效果图1. 添加联系人添加记录时限定月份在 112
5、 月之间,否则无法添加,每添加一条记录后就返回主菜单,链表中插入了该结点。2 查询联系人查询记录时, 可以选择备注或者姓名进行查找。 若选择按姓名查找, 则在输入名字后,系统会根据添加的先后顺序,在屏幕上依次显示出该联系人的全部记录。3 删除联系人选择删除选项后, 界面会让使用者输入要删除者的姓名及金额, 并根据输入的信息显示该条记录, 并且为了防止意外删除而有提示是否删除, 经使用者再三确认后便删除该记录。4 显示联系人在菜单中选择显示选项后, 系统会把所有的记录按照先后顺序依次逐条显示在界面上,还计算出了一共的收入,一共的支出及当前余额。并且5 退出在菜单中选中该选项后,系统会把所有的资料
6、都保存到文件中,然后关闭该系统。七、总结本次对家庭财务管理系统的编写,我遇到了许多困难。 主要原因不怎么擅长使用“指针”。在添加模块中, 由于没有很好的理解指针中插入的专用句子, 所以脱离书本的时候根本不知怎么开始, 自己想了很久也没想出来, 后面翻了书, 把相关的句子抄上去后死记硬背了下来。 p->next=head;head=p; 在添加节点数是, 未强调 Recordcount 数据类型。 在写删除模块是也遇到了类似的问题。 看了书上的一个例题,里面有两个指针, 可是我的代码中只有一个,怎么办呢?模仿了书上的写法, 第一次以失败告终, 经过很多种修改后总结出失败的原因是该指针定义错
7、误, 针对该错误,经过很多的尝试终成功了。在显示函数中,自我感觉没有错误了,可是每次在“一共收入,一共支出, 当前余额” 后面都显示了一长串数字,在快放弃时终于发现自己犯了一个很可笑的错, printf 语言中居然用了取地址符。在保存函数中也犯了一些常见的错,在写入文件中居然用了fscanf语句。八、参考文献谭浩强 C 程序设计(第四版) 清华大学出版社。九、程序清单(双列排版,小五号字 )#include <stdio.h>case 1:add();break;#include<stdlib.h>case 2:search();break;#include<st
8、ring.h>case 3:delete_rec();break;struct F_Datacase 4:show();break;int year;/年int month;/月int data;/日期float amout;/金额char name20;/姓名int type;/收入或支出类型char comment100;/备注struct F_Data*next;/定义一个指针;void main()int i,w=1;while(w=1);void add()system("cls");/*清屏*/int Recordcount;struct F_Data*h
9、ead;struct F_Data *p=NULL;/*定义pNode为 struct F_Data类型指针 */p=(structF_Data*)malloc(sizeof(structF_Data);/* 运 行 时 动 态 调 整 所 占 内 存void add();的大小 */void search();printf("请输入年份:");void delete_rec();scanf("%d",&p->year);void show();printf("请输入月份:");doscanf("%d"
10、;,&p->month);if(p->month>0)&&(p->month<13)/*限定月份为112 */printf("*n");printf("欢迎使用家庭财务管理系统printf("1:添加记录 n");printf("2:查询记录 n");printf("3:删除记录 n");printf("4:显示所有记录n");printf("0:退出 n");scanf("%d",&
11、i);switch(i)n");printf("请输入日期 :");scanf("%d",&p->data);printf("请输入金额 :");scanf("%f",&p->amout);printf("请输入姓名 :");scanf("%s",p->name);printf("收入按 1,支出按scanf("%d",&p->type);0:");printf("请输
12、入类型 :");scanf("%s",p->comment);p->next=head;/*插入一个结点*/head=p;Recordcount+;/*结点数加一*/system("PAUSE");/*停顿 */void search()system("cls");/* 清屏 */struct F_Data*head;char name20;int type;int choice;structF_Data*p=NULL;/* 定义 pNode 为 struct F_Data类型指针 */printf("
13、1按姓名查找 n2 按备注查找 n ");printf("请输入你的选择:");scanf("%d",&choice);if(choice=1)printf("请输入姓名: ");scanf("%s",name);for(p=head;p!=NULL;p=p->next)/*从链表的第一个结点到尾结点*/if(strcmp(p->name,name)=0)/*如果输入的name 和结点中的name一样 */printf("%dt",p->year);print
14、f("%dt",p->month);printf("%dt",p->data);printf("%.2ft",p->amout);printf("%st",p->name);printf("%dt",p->type);printf("%sn",p->comment);if(choice=2)printf("请输入类型:1收入 0支出 n");scanf("%d",&type);for(p=he
15、ad;p!=NULL;p=p->next);if(p->type=type)/*如果输入的 type 和结点中的type 一样 */printf("%dt",p->year);printf("%dt",p->month);printf("%dt",p->data);printf("%.2ft",p->amout);printf("%st",p->name);printf("%dt",p->type);printf("%
16、sn",p->comment);system("PAUSE");/*停顿 */void delete_rec()system("cls");/*清屏 */struct F_Data*head;int Recordcount;char name20;float amout;int choice;structF_Data *p=NULL,*q=NULL;/* 定义 p 和 q都为 struct F_Data类型指针 */p=head;/*p指向第一个结点*/q=head;/*q指向第一个结点*/printf("请输入要删除者的姓名:
17、");scanf("%s",name);printf("请输入金额: ");scanf("%f",&amout);for(;q!=NULL;q=q->next)/*q指针从链表的第一个结点到尾结点*/if(head->amout=amout)&&(strcmp(head->name,name)=0) /*如果头结点符合要求*/printf("%dt",q->year);printf("%dt",q->month);printf(&q
18、uot;%dt",q->data);printf("%.2ft",q->amout);printf("%st",q->name);printf("%dt",q->type);printf("%sn",q->comment);printf("确认删除?n 1是 n 2否n");scanf("%d",&choice);if(choice=1)head=q->next;/*删除头结点 */Recordcount-;/*结点数减一
19、 */else break;elseif(q->amout=amout)&&(strcmp(q->name,name)=0) /*如果结点符合要求*/printf("%dt",q->year);printf("%dt",q->month);printf("%dt",q->data);printf("%.2ft",q->amout);printf("%st",q->name);printf("%dt",q->type);printf("%sn",q->comment);printf("确认删除? n 1是 n 2否n");scanf("%d",&choice);if(choice=1)p->next=q->next; /*删除一个结点*/Recordcount-;/*结点数减一*/else break;elsep=q;/*p后移一个位子 */system("PAUSE");/* 停顿 */void show()system("cls"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 育苗知识与技能培训考核试卷
- 科研伦理审查与违规处理考核试卷
- 染整行业绿色制造与清洁生产考核试卷
- 染料在农业生物防治中的应用考核试卷
- 竞赛场地布局与设计考核试卷
- 批发商财务管理与风险控制考试考核试卷
- 租赁农机在农业机械化推广中的作用考核试卷
- 拼多多农产品电商平台活动策划代运营服务协议
- 海关关员岗位海关业务流程优化聘用合同
- 城市管理系统数据收集与合规利用协议
- 水下探测技术发展-洞察分析
- DB21T 3508-2021 旅游景区木栈道设置与维护规范
- 扁桃体癌护理查房
- 医疗技术销售技巧
- 2024专利代理人考试真题及答案
- 2025年高考数学模拟卷(一)含答案及解析
- 高英-Mark-Twain-Mirror-of-America原文+翻译+修辞
- 中国老年骨质疏松症诊疗指南(2023)解读课件
- 高中英语新课程标准解读课件
- 《宠物营养与食品》课件-1.3宠物的蛋白质营养
- 2024年湖南省中考道德与法治试题卷(含答案解析)
评论
0/150
提交评论