家庭财务管理系统_第1页
家庭财务管理系统_第2页
家庭财务管理系统_第3页
家庭财务管理系统_第4页
家庭财务管理系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1. 课程设计目的及要求22. 相关知识23. 设计方案.23.1题目内容23.2分析题目要求23.3流程图34. 程序代码实现.55. 测试数据及运行结果.136. 课程设计总结157. 参考文献.151 课程设计目的及要求通过课程设计,进一步巩固和复习C语言程序设计的基础知识,了解软件的编制过程及各环节的具体内容,掌握结构化程序、模块化程序设计方法,提高学生分析问题,解决问题以及书籍运用能力。2 相关知识 本课程设“家庭财务管理系统”就是通过学习C程序设计采用Visual C+作为编译环境。本系统的总体思想基于结构化的程序设计。应用高级语言程序设计中的基本控制结构,如循环和选择,着重实

2、现管理系统的增、删、改、查等典型的管理功能。3.设计方案3.1题目内容家庭成员可以对其成员编号,姓名以及收入,支出构成进行增加,删除,修改等管理操作。家庭成员分为管理员和普通用户两类,权限不同。管理员还要在本系统外事先创建家庭成员信息文件,在文件中保存用户的序号,姓名,密码,权限。用户必须正确输入姓名和密码才能登录使用本系统。3.2分析题目要求管理员界面有12个选项可供管理员挑选:1. 创建家庭成员财务信息文件(该文件内容为序号,姓名,收入,支出,合计。)并初始化2. 添加财务收支信息记录;3. 删除财务收支信息记录; 4. 按姓名查询家庭成员财务收支信息记录;5. 按家庭成员序号查询家庭成员

3、财务信息;6. 修改家庭成员收支信息记录;7. 按财务合计项排序浏览;8. 增加家庭成员信息;9. 删除家庭成员信息;10. 按用户序号修改家庭成员信息;11. 按家庭成员序号排序浏览用户信息12.退出本系统。管理员界面,创建家庭成员财务信息文件并初始化,修改家庭成员收支信息记录。3.3流程图 (1)家庭管理选择界面 1.1家庭管理选择界面 (2) 创建家庭成员财务信息文件:1. 2创建家庭成员财务信息文件 (3)修改家庭成员收支信息记录:1.3修改家庭成员收支信息记录4. 程序代码实现(1)/*admin.c:家长管理功能选择界面,根据用户选项调用相应函数实现系统功能*/#include &

4、quot;shead.h" /*家庭成员财务信息头文件*/#include "creat.c" /*创建家庭成员财务信息文件*/#include "add.c" /*增加家庭成员财务信息记录*/#include "delete.c" /*删除家庭成员财务信息记录*/#include "modnum.c" /*按家庭成员序号修改家庭成员财务信息*/#include "qname.c" /*按家庭成员姓名查询家庭成员财务信息*/#include "qseatnum.c"

5、 /*按家庭成员序号查询家庭成员财务信息*/#include "ssum.c" /*按财务合计项排序浏览家庭成员财务信息*/void Admin() int choice = 0; /*存放用户选项的变量*/ /*=功能及操作的界面提示=*/ while(1) printf("-n"); printf("| |n"); printf("| Welcome to Family Financial Management System |n"); printf("| |n"); printf(&quo

6、t;|-|n"); printf("| 1. Creat Financial File |n"); printf("| 2. AddRecord() |n"); printf("| 3. DelRecord() |n"); printf("| 4. QueryByName() |n"); printf("| 5. QueryBySeatNum() |n"); printf("| 6. ModifyByNumber() |n"); printf("| 7.

7、SortBySum() |n"); printf("+n"); printf("| System User Management |n"); printf("| 11.CreatNewUserFile() |n"); printf("| 12.AddUser() |n"); printf("| 13.DelUser() |n"); printf("| 14.ModifyUser() |n"); printf("| 15.SortByUserNum() |n

8、"); printf("+n"); printf("| 0. End Program |n"); printf("-n"); printf("# Please Input Your Choose #n"); printf("# number 17 to Manage the Family's Finance #n"); printf("# number 11,12,13,14,15 to Manage the System User #n"); printf

9、("# number 0 to Exit the System #n"); printf("-n"); scanf("%d",&choice); getchar(); /*根据用户选项调用相应函数*/ switch(choice) case 1: CreatFile(); /*创建初始财务信息文件*/ break; case 2: AddRecord(); /*增加财务信息记录*/ break; case 3: DelRecord(); /*修改财务信息记录*/ break; case 4: QueryByName(); /*

10、按家庭成员姓名查询财务信息*/ break; case 5: QueryBySeatNum(); /*按家庭成员序号查询财务信息*/ break; case 6: ModifyByNumber(); /*按家庭成员序号修改财务信息*/ break; case 7: SortBySum(); /*按财务合计项排序浏览财务信息*/ break; case 11: CreatUser(); /*创建初始家庭成员信息文件*/ break; case 12: AddUser(); /*增加家庭成员*/ break; case 13: DelUser(); /*删除家庭成员*/ break; case 1

11、4: ModifyByUserNumber(); /*按家庭成员序号修改家庭成员*/ break; case 15: SortByUserNum(); /*按家庭成员序号排序浏览*/ break; case 0: exit(0); /*退出系统*/ default: break; (2)/*creat.c:用于创建家庭成员财务信息文件并初始化*/#include "stdio.h"/*函数CreatFile*/void CreatFile() FILE *fp = NULL; /*定义指向文件的指针*/ money TmpS; /*定义进行操作时存放结构体变量的*/ cha

12、r DataFile40 = ""/*存储员财务收支信息的文件名*/ int count = 1; /*计算可输入数据的最大范围*/ /*输入存放财务收支信息的文件名*/ printf("n please input new file name to store data,end with enter."); printf("n Notice:Name of file can't exceed 8 characters.suffix can't exceed 3 characters,part of exceed will be

13、 discarded.n"); gets(DataFile); /*如家长没有输入,则循环提示家长输入*/ while(*DataFile = ('0') printf("n please input new file name to store data,end with enter."); printf("n Notice:Name of file can't exceed 8 characters,suffix can't exceed 3 characters.part of exceed will be disc

14、arded.n"); gets(DataFile); /*用二进制写的方式打开文件,即创建文件*/ fp = fopen(DataFile,"wb+"); /*如果当前文件不存在,提示打开文件失败*/ if (fp = NULL) printf("n Open file %s fail!End with any key.n",DataFile); perror("Open file fail"); getch(); exit(1); /*如果成功打开或创建文件,则提示输入家庭成员序号、姓名、财务收支构成等相关信息*/ pri

15、ntf("input number,name and the income and outcome.number is 0 means input is end.n"); printf("Number is not exceed 9 figures,Name is not exceed 20 characters,range of grade:0.001000.00n"); /*循环从键盘上读取家长输入的序号、姓名、收入、支出等相关信息*/ while(count <= SIZE) /*输入序号,如为0则停止输入*/ printf("n

16、input 'number =0' means end input.n"); printf("number="); scanf("%ld",&TmpS.Number); if (TmpS.Number = 0 ) break; /*提示输入姓名*/ printf("name="); scanf("%s",TmpS.Name); /*提示输入收入*/ printf("in="); scanf("%f",&TmpS.in); /*提示输入

17、支出*/ printf("out="); scanf("%f",&TmpS.out); /*用公式自动计算家庭成员财务合计*/ TmpS.sum=TmpS.in-TmpS.out; printf("n"); /*如遇无法写入文件的异常,则加以提示*/ if(fwrite(&TmpS,sizeof(money),1,fp)!=1) printf("nwrite file %s fail!End with any keyn",DataFile); perror("Write file fail

18、 "); getch(); exit(1); count+; /*如果输入的数据量超过最大允许的范围,则提示数据不能录入*/ if (count>SIZE) printf("nsorry,number of data can not exceed%dn",SIZE); fclose(fp); /*在屏幕上显示初始化后的文件内容*/ /* clrscr();*/ printf("The data you input is store successful %s in file.n",DataFile); printf("Conte

19、nt as follow:n"); /*打开财务信息文件,如无法打开,则提示*/ fp=fopen(DataFile,"rb"); if (fp = NULL) printf("nOpen file%sfail!End with any key n",DataFile); perror("Open file fail"); getch(); exit(1); printf("nNumbertNametintouttsumn"); while(fread(&TmpS,sizeof(money),1,

20、fp) != (int)NULL) printf("n%ldt%st%4.2ft%4.2ft%4.2fn",TmpS.Number,TmpS.Name,TmpS.in,TmpS.out,TmpS.sum); fclose(fp);(3)/* modnum.c :修改家庭成员收支信息记录 */#include "stdio.h"void ModifyByNumber() int i,j,k; long modnum;/*存储家长输入的要修改的家庭成员序号*/ /*输入各项修改后信息*/ long Number; char Name20; float in;

21、 float out; float sum; money TmpS; /*定义进行操作时的临时结构体变量*/ money sSIZE;/*SIZE,在shead.h头文件中定义的常量,值为100 */ int recNumber; char DataFile40 = "",next; /*DataFile存储家庭成员收支信息信息的文件名,next为是否进行下一次删除操作的选项*/ FILE *fp;/*=fp指针指向存储数据的文件名=*/ /*提示家长输入要进行修改记录的文件名*/ printf("nplease input the name of file wh

22、ere data is stored,end with enter key.n"); gets(DataFile); /*提示家长输入要进行修改记录的文件名*/ while(*DataFile = ('0') printf("nplease input the name of file where data is stored,end with enter key.n"); gets(DataFile); begin: /*以读的方式打开文件,如文件不存在,提示错误*/ fp=fopen(DataFile,"rb"); if (

23、fp = NULL) printf("nOpen file %s fail!End with any keyn",DataFile); perror("Open file fail"); getch(); exit(1); printf("please input the Employee'seatnum which you will modify:"); scanf("%ld",&modnum); printf("the money you will delete is:%ldn&quo

24、t;,modnum); /*输入要修改记录的各项内容值*/ Number=modnum; printf("name="); scanf("%s",Name); printf("in="); scanf("%f",&in); printf("out="); scanf("%f",&out); /*用公式自动计算家庭成员财务合计*/ sum=in-out; /*将文件中要修改的信息存入结构体数组*/ recNumber=0; /*循环将文件数据读入结构体数组, 如

25、文件中的数据家庭成员号和要修改的家庭成员号不符,则原样写入数组, 如文件中数据的家庭成员号和要修改家庭成员号匹配, 则根据家长输入的各项修改内容重新赋值,即修改,并写入数组*/ while(fread(&TmpS,sizeof(money),1,fp) != (int)NULL) if(TmpS.Number!=modnum) srecNumber.Number = TmpS.Number; strcpy(srecNumber.Name, TmpS.Name); srecNumber.in = TmpS.in; srecNumber.out = TmpS.out; srecNumber

26、.sum = TmpS.sum; recNumber+; else srecNumber.Number = Number; strcpy(srecNumber.Name, Name); srecNumber.in = in; srecNumber.out = out; srecNumber.sum = sum; recNumber+; fclose(fp); /*将修改后的结构体数组记录写入文件*/ fp=fopen(DataFile,"wb+"); if (fp = NULL) printf("nSet up file %sfail !end with anyk

27、ey.n",DataFile); perror("Set up fail"); getch(); exit(1); for(i=0; i<recNumber; i+) if(fwrite(&si,sizeof(money),1,fp)!=1) printf("nWrite file %s fail!end with anykey.n",DataFile); perror("Write file fail!"); getch(); exit(1); fclose(fp); /*显示修改后的文件*/ fp=fopen(DataFile,"rb"); if (fp = NULL) printf("nOpen file%s

温馨提示

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

评论

0/150

提交评论