家庭财务记账系统.docx
- 文档编号:9223887
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:36
- 大小:60.06KB
家庭财务记账系统.docx
《家庭财务记账系统.docx》由会员分享,可在线阅读,更多相关《家庭财务记账系统.docx(36页珍藏版)》请在冰豆网上搜索。
家庭财务记账系统
程序设计报告
设计题目
家庭财务记账系统
学院:
通信与信息工程学院
年级:
09级01班
2010年07月08日
通信与信息工程学院实验报告
设计题目:
家庭财务记账系统
一、程序设计的目的和要求
1.实验目的:
学会设计一个软件,是为用户进行家庭成员的收支构成及信息管理进行辅助的应用软件。
2.要求:
要写出设计报告,报告中要求写出总体设计框架和详细程序分析;在报告中每位成员要有明确分工;书写及设计方案均用A4纸打印,统一装订成册,并且交上电子版.
二、程序设计分组
本小组成员共6个人,可评出一个组长,其中有两人负责在图书管查资料,一人负责写实验报告,剩余4个人每人编辑一个程序功能,并且在运行无误后交上.。
三、程序设计环境
1.硬件环境:
每生一台品牌机
2.软件环境:
TurboC3.0
4、程序设计总体方案
家庭财务管理记账系统
总体设计
对本系统的功能板块、运行环境等进行了合理分析之后,下面要从系统总体结构、模块功能、界面和数据结构几方面进行系统的总体设计。
总体设计可在软件开发的早期站在全局高度对软件结构进行优化,这个时期付出的代价不高,却可以是软件质量得到重大改进。
系统模块结构图
依据需求分析结果,家庭财务管理系统可以分为4个模块:
用户登录模块、家庭成员财务管理模块、家庭成员财务管理模块、用户管理模块、功能选择模块。
如图所示。
家庭成员登录模块
家庭成员财务管理模块
家庭财务管理系统
家庭成员管理模块
功能选择模块
是
否否
是
普通家庭成员
家长
模块设计
1.家庭成员登录模块
提示用户输入登录名和密码,调用文件中储存的用户信息进行校验,只有当用户名和密码相匹配时,才允许用户使用该系统。
用户登录到系统后能够允许使用的系统功能和用户的权限有关。
普通家庭成员只能进行查询和游览,家长还可以进行增、删、该、查和对普通家庭成员的管理。
权限的设置在家庭成员信息文件中进行限制,权限的判定在家庭成员登录模块进行。
模块功能如树3.2所示。
2.家庭成员财务管理模块
当用户成功登入管理系统时,即可根据权限不同,调用家庭成员财务模块中的部分或全部子功能。
家庭成员财务管理模块的主要功能包括如下几个部分。
(1)创建收支信息文件:
提示家庭成员输入保存家庭成员收支信息记录的文件名,在磁盘上创建该文件,继续提示用户逐条输入家庭成员收支信息记录,每条记录包括家庭成员编号、姓名和收入、支出。
其中家庭成员财务合计项由系统自动计算获得,计算公式为:
合计=收入+支出。
该功能可连续输入若干条家庭成员记录,输入家庭成员号为0时则停止输入。
(2)查询收支信息:
提示家长或普通家庭成员输入要查询的具体文件名,可根据家庭成员号和家庭成员姓名两种方式进行查询,若有查询结果,则向用户显示相应查询结果的家庭成员号、姓名、收入构成等各项内容,并可让用户选择是否继续查找。
五、程序分析
1家庭成员登陆模板;源文件:
login.c头文件:
user.h
#include"stdio.h"
#include
#include
#include
#defineSIZE100
typedefstruct
{
longNumber;
charName[20];
charps[8];
intpower;
2家庭成员财务管理模板:
源文件:
admin.c家长功能选择界面及管理员功能调用
guest.c普通家庭成员功能选择界面及普通家庭成员功能调用。
Creat.c创建家庭成员收支信息文件。
Add.c增加收支信息。
Delete.c删除收支信息。
Modnum.c修改收支信息。
Qname.c按家庭成员姓名查询收支信息。
Qseatnum.c按家庭成员序号查询收支信息。
Ssum.c按收支合计数排序浏览。
头文件:
shead.h
计算公式
合计=收入-支出(sum=in-out)
函数声明
(1)voidAdmin()(由秋东完成)
#include"stdio.h"
#include
#include
#include
功能:
给出家长的功能选择提示界面,根据家长的选项调用相应函数。
输入:
家长输入要进行操作的数字选项。
输出:
家长选项对应的函数的执行结果。
(2)voidguest()(由秋东完成)
#include"shead.h"
#include"creat.c"
#include"add.c"
#include"delete.c"
#include"modnum.c"
#include"qname.c"
#include"qseatnum.c"
#include"ssum.c"
功能:
给出普通用户的功能选择提示界面,根据普通用户的选项调用相应函数。
输入:
普通用户输入要进行操作的数字选项。
输出:
用户选项对应的函数的执行结果。
(3)voidCreatFile()(由李翔完成)
功能:
创建家庭成员收入信息文件。
根据用户输入的文件名创建家庭成员收入信息文件,将用户输入的若干条家庭成员收入信息记录存入该文件并保存。
输入家庭成员序号0,结束输入。
最后列表显示文件内容。
(4)voidAddRecord()(由李翔完成)
功能:
增加。
根据用户输入的文件名打开家庭成员财务信息文件,进行添加记录操作,如没有文件存在,则创建。
将用户输入的若干条家庭成员信息记录追加存入该文件并保存。
输入家庭成员序号为0,结束输入。
最后列表显示文件内容。
(5)voidDelRecord()(由王德志完成)
功能:
删除家庭成员收支信息。
根据家长输入的文件名打开家庭成员财务信息文件,进行删除记录操作,如没有文件存在,则提示打开文件失败。
将要删除的家庭成员号对应的家庭成员记录从文件中删除,并保存文件,可继续删除。
最后列表显示文件内容。
(6)voidModifyByNunber()(由来少凯完成)
功能:
修改家庭成员收支信息。
根据家长输入的文件名打开家庭成员财务信
息文件,进行修改记录操作,如没有文件存在,则提示打开文件失败。
将要修改的家庭成员号对应的家庭成员记录各项内容修改为家长输入的内容,并保存文件。
可继续修改。
最后列表显示文件内容。
(7)voidQueryByName()(由来少凯完成)
功能:
按姓名查询。
根据用户输入的文件名打开家庭成员财务信息文件,进行按姓名查询操作,如没有文件存在,则提示打开文件失败。
列表显示查找到的记录内容,并提示是否进行下次查询。
(8)voidQueryBySeatNum()(由辛苗完成)
功能:
按序号查询。
根据用户输入的文件名打开家庭成员财务信息文件,进行按序号查询操作,如没有文件存在,则提示文件打开失败。
列表显示查找到的记录内容,并提示是否进行下次查询。
五、编译和调试过程
1.编译过程
由于在编辑过程中的粗心,分号丢了,函数名写错,程序就无法用行,所以就在改动程序,再一次执行。
再就是将函数类型如整型int写成浮点型float程序也就无方执行等一些小失误。
2.调试过程
由于程序过于复杂,部分功能不能实现
六、个人心得体会
心得体会
:
通过这次程序设计,一让我懂得了只有平时的多练习才会编写一些程序,以及会分析这些程序的功能,了解程序的特点。
二认真细心会在编写程序时节约不少的时间。
三在这次的程序设计中团结是很重要的,每个人的明确分工使任务能很顺利的完成
:
众人拾财火焰高,这是我在这次作业中最大的体会,我想这也是这次作业的意义所在吧,通过这次作业,我们都锻练了很好的合作能力,提升了彼此的沟通能力;再者,在分析程序时深刻的体会到打好学习基础很重要,只有拥有了扎时过硬的专业基础做起来才会得心应手,节省更多的时间。
这就是我在这次作业中最大的体会。
:
通过这次课程设计我深刻的体会到了团队合作和实践的重要意义,这个课题没有大家的合作是无法完成的,只有大家分工明确,积极参与才能出色的完成任务。
可我们忙了好长时间程序居然不运行,作业是做完了,可是是成功了还是失败了呢?
我也不知道,但是这个过程是快乐的,因为我们都做事了,这就是实践的魅力,我们最后都看到了自己的劳动成果,我想这种体会才是最重要的。
:
通过这次实习活动,体现出当今社会是一种集中体现了团队合作的社会体制,虽然世界劳动的分配方式是能者多劳,劳者多得的社会现状。
但是社会是我们每一个成员分子所组成的大熔炉。
任凭每一个人也发挥不了多大能耐,唯有团结一致才能发挥最大效果。
这次实习中,我们每个成员积极参与,服从分配,工作热情高涨,团队合作出色。
各成员之间彼此互相帮助,依彼之长,补己之短。
使得这次实习任务完成空前成功。
:
本次实习,给我的最大体会就是学习要严谨,要认真,在我们组全体成员的集体努力下,我们出色的完成了这次实习计划和教学任务。
团结互助、齐心努力是我们能完成的根本原因。
我现在认识到,在学习上,就要不懂就问,不懂就钻研,如果我们同学之间,同学和老师之间不去交流,不去相互帮助,那么就什么也做不好,今后,我会更加努力,更加勤奋的去学习这门课程!
:
在这个程序当中,我们组的每个成员都发挥了不可或缺的作用,在组长的坚强领导下,在老师和同班同学的大力支持下,在全组成员的不懈奋斗下,我们的课题终于完成了。
这说明了什么,这说明团结就是力量!
一个人的力量是有限的,但是我们大家的力量却是巨大的。
在学习上,我认为就应该这样,就应该同学之间多交流,多帮助。
我相信,明天会更好!
七、总结源代码
在程序输入中有时会出现一些小错误,如会丢掉分号,在函数与函数之间会缺少空格,有时也会把函数的大小写字母写错。
以后要多练习编写程序和程序输入,尽量在编译之前就能保证程序的正确性(包括语法正确和逻辑正确)。
这次上机使我熟悉了TurboC3.0环境;学会了独立使用该系统;编辑、编译、连接和运行一个C程序。
通过运行简单的C程序,初步了解了C源程序的特点。
通过本次高级程序设计的实习,我们不但在这门课程上有了新的提高,而且让我们意识到了团队合作的重要性!
尤其是这门课程的实习,更加让我们认识到认真,谨慎的态度是学习所不可缺少的,一个小小的标点符号,一个不起眼的字母,就能让我们整个系统无法运行。
我们认识到:
在知识的海洋当中,只有埋头苦学才能到达成功的彼岸,任何投机取巧,任何外门邪道都不能与真理相抗衡,只有一板一眼的去做,只有一步一个脚印的学习,才能使自己有所提高!
八、组长评语
首先,我能成为组长,我感到十分荣幸!
这次的实习课题,我们组能在规定的时间内出色完成,我感觉这是组内每一个成员的辛勤所得,这次的成功离不开大家的努力。
对于这次的课题,确实难度非常大,在刚开始的几天的里,我们尝试了几种方法,但是都不能全面的完成程序,大家一时间陷入了瓶颈!
直到后来,老师告诉我们要静下心来细细的去把其中出问题的地方弄懂,我们大家信心倍增。
经过了不懈的努力,我们历尽千辛万苦,终于将这个系统完成。
在这里,我想说的是,大家辛苦了!
在今后的学习道路上,我们组还要继续发扬这种精神,保持这种良好的状态,向着胜利的方向继续前进!
源代码
/*55页程序清单
(1):
user*/
#include"stdio.h"
#include
#include
#include
#defineSIZE100
typedefstruct
{
longNumber;
charName[20];
charps[8];
intpower;
}user;
externvoidGuest();
externvoidAdmin();
externvoidCreatUser();
externvoidAddUser();
externvoidDelUser();
externvoidModifyByUserNumber();
externvoidSortByUserNum();
#include"user.h"
#include"cuser.c"
#include"admin.c"
#include"guest.c"
#include"adduser.c"
#include"deluser.c"
#include"sunum.c"
#include"munum.c"
Mainfunctiomain()
intmain()
{
FILE*fp=NULL;
userShow;
userTmpS;
charDataFile[40]="yonghu";
inti;
charrelogin;
intsuccess=0;
}
printf("#====================================================#\n");
printf("#WelcometotheFamilyFanancialManagementSystem!
#\n");
printf("#====================================================#\n");
again:
printf("pleaseentertheusername:
");
scanf("%s",Tmps.Name);
printf("Password=");
for(i=0;i<6;i++)
{
Tmps.ps[i]=getch();
}
Tmps.ps[6]='\0';
fp=fopen(DataFile,"r");
if(fp==NULL)
{
printf("\nopenfile%sfail!
Endwithanykey\n",DataFile);
perror("openfilefail");
getch();
exit
(1);
}
while(fread(&show,sizeof(user),1,fp)!
=(int)NULL)
{
if((strcmp(Tmps.Name,show.Name)==0&&(strcmp(Tmps.ps,show.ps)==0))
{
printf("\nloginsuccessful!
\n");
cuccess=1;
if(Show.power==1)
{
printf("\nyourpowerisadministrator!
\n");
Admin();
if(Show.power==0)
{
printf("\nyourpowerisuser!
\n");
Guest();
}
}
}
if(success==0)
{
getchar();
printf("\nerrorusernameorpassword!
inputagain?
(y/n)");
scanf("%c",&relogin=='y'))
{
printf("youchooseinputagain:
\n");
gotoagain;}
else
{
printf("endprogram");
getch();
exit(0);
}
}
}
#include"stdio.h"
#include
#include
#include
#defineSIZE100/*mac.rosdefinition*/
typedefstruct
{
longNumber;
charName[20];
floatin;
floatout;
floatsum;
}money;
externvoidCreatFile();
externvoidAddRecord();
externvoidDelRecord();
externvoidModifyByNumber();
externvoidQueryBySeatNum();
externvoidQueryByName();
externvoidScrtBySum();
#include"shead.h"
#include"creat.c"
#include"add.c"
#include"delete.c"
#include"modnum.c"
#include"qname.c"
#include"qseatnum.c"
#include"ssum.c"
voidAdmin()
{
intchoice=0;
while
(1)
{
printf("----------------------------------------------\n");
printf("|
printf("|WecometoFamilyFinancialManagementSystem|\n");
printf("|
printf("|-----------------------------------------------|\n");
printf("|1.CreatFinancialFile|\n");
printf("|2.Addrecord()|\n");
printf("|3.Delrecord()|\n");
printf("|4.QueryByName()|\n");
printf("|5.QueryByeatNum()|\n");
printf("|6.ModifyByNumber()|\n");
printf("|7.SortBySum()|\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("|SystemUsreManagement|\n");
printf("|11.CreatNemUserfile()|\n");
printf("|12.AddUser()|\n");
printf("|13.DelUser()|\n");
printf("|14.ModifyUser()|\n");
printf("|15.SortByUserNum()|\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("|0.EndProgram|\n");
printf("---------------------------------------------------\n");
printf("#PleaseInputYourChoose#\n");
printf("#number1~7toManagetheFamily'sFinance#\n");
printf("#number11,12,13,14,15toManagetheSystemUser#\n");
printf("#number0toExittheSystem#\n");
printf("---------------------------------------------------\n");
scanf("%d",&choice);
getchar();
switch(choice)
{case1:
CreatFile();
break;
case2:
AddRecord();
bresk;
case3:
DelRecord();
break;
case4:
QueryByName();
break;
case5:
QueryBySeatNum();
bresk;
case6:
ModifyByNumber();
bresk;
case7:
sortBySum();
bresk;
case11:
CreatUser();
bresk;
case12:
AddUser();
bresk;
case13:
DelUser();
bresk;
case14:
ModifyByUserNumber();
bresk;
case15:
SortByUserNum();
bresk;
case0:
exit(0);
default;
bresk;
}
}
}
#include"stdio.h"
voidCreatFile()
{
FILE*fp=NULL;
moneyTmps;
charDataFile[40]="";
intcount=1;
printf("\npleaseinputnewfilenametostoredata,endwithenter.");
printf("\nNotice:
Nameoffilecan'texceed8characters.suffix
can'texceed3characters,partofexceedwillbediscarded.\n");
gets(DataFile);
while(*DataFile==('\0'))
{
printf("\npleaseinputnewfilenametostoredata,endwithenter.");
printf("\nNotice:
Nameoffilecan'texceed8characters,suffix
can'texceed3characters.partofexceedwillbediscarded.\n");
gets(DataFile);
}
fp=fopen(DataFile,"wb+");
if(fp==NULL)
{
printf("\nOpenfile%sfail!
Endwithanykey.\n",DataFile);
perror("Openfilefail");
getch();
exit
(1);
}
printf("inputnumber,nameandtheincomeandoutcome.numberis0
meansinputisend.\n");
printf("Numbervisnotexceed9figures,Nameisnotexceed20
char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家庭 财务 记账 系统