1、算法设计合理性用户界面设计报告书写认真程度容详实程度文字表达熟练程度回答问题准确度简短评语 教师签名: 年 月 日评分等级备注评分等级共五种:优秀、良好、中等、及格、不及格一、 课题容和要求1、 该系统要求对一个家庭某月的支出情况进行统计和分析。通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的应用。2、 功能要求:(1) 支出信息包括:支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。(2) 需要实现的功能:1) 用户根据口令进入系统2) 输入某一月份,完成该月份的支出管理3
2、) 输入并统计该月的支出情况4) 显示该月支出信息表,容应包括日期,金额等5) 按支出类型进行分类统计和排序6) 进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果7) 显示按支出类型排序后的支出信息8) 将排序后的容存为文件。(3) 界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。二、 需求分析家庭支出管理系统的功能框架图如图1所示。登陆界面主界面功能选择函数输入函数输出函数类别排序函数保存函数分析函数图1 功能框架图(1)功能选择函数:此函数是为了让用户根据主界面选择功能并根据提示来进行操作。(2)输入函数:为了实现将各个支出项目的类别,支出的金额以及
3、消费的时间,地点等存入需要的文件里,所以必须先要存在存储器里。(3)输出函数:即通过行列表来直观对应存储文件中的项目的类别,金额,消费时间及地点。(4)分析函数:读取本月的存储文档中的信息,对本月的消费进行分析,求出本月的消费总和,分析出每项支出所占总支出的百分比,通过他们各自的项目金额所占的百分比来直观显示那个指出比较重要。随后与本月收入进行比较,求出收支比。(5)类别排序函数:就是将输入的信息进行按类别排序。(6)保存函数:将本次添加的信息进行保存到相应月份的支出信息文档中。(7)登录界面:因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。因此只有在输入正确的口令后才
4、能进入该系统。同时添加了一个随机验证码的验证过程。(全文中的(1)、(2)、(3)等格式必须统一为中文括号或者英文括号。)(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)三、概要设计 1 主要结构体(二级标题格式:宋体,小四号,不加粗,两端对齐,不缩进,下同)typedef struct/ 定义结构体 char type20;/ 消费类型 float Getsum;/ 消费金额 char place20;/ 消费地点 int time;/ 消费时间family;family fam80;2 主要函数流程图(1)
5、 登录界面:包括密码函数,采用数组赋值并与预设值逐字比较的法进行密码验证。以及验证码函数,验证码采用srand(time(NULL)与p0=rand()%1000产生一个0-1000的随机数作为验证码。如图1所示图1(2)主函数:包括菜单显示函数以及功能选择函数,菜单显示函数在屏幕上输出选择界面,功能选择函数利用选择结构进入不同的功能函数模块,模块如下列所示。在十二个月份存储文件齐全的情况下,各功能可随意使用,无使用上的顺序要求。如图二所示;图2 图3(3)功能模块一信息添加函数:利用输入函数将支出信息赋值给fam,然后利用类别整理函数进行类别整理,最后利用选择结构选择某一月份,打开该月份的信
6、息存储文档,进行信息的写入,最后关闭文件。如图3,图4所示。 图4 图5(4)功能模块二信息显示函数:利用选择结构打开某一月份的信息存储文档,然后读取其中的信息并逐行显示在屏幕上然后关闭文件。如图5,图6所示。 图6(5)功能模块三信息分析函数:利用选择结构打开某一月份的存储文件,读取该月信息,求消费总和并求出各项支出占总支出比,随后可以输入本月的收入以求出本月的收支比。如图7所示。 图7(6)功能模块四退出函数:关闭程序。四、源程序代码 #include stdlib.hctype.hstring.hconio.hmalloc.hwindows.htime.htypedef struct/定
7、义结构体/消费类型/消费金额/消费地点/消费时间int menu_select() /显示该系统所具备的功能 int c; do system(cls);/清屏 printf(tt欢迎来到家庭支出管理系统(勤俭节约,避免破产,肃脸.jpg) ntt* * * * * *极端简朴的菜单系统* * * *ntt|1.输入消费信息|ntt|2.显示消费情况|ntt|3.消费情况分析|ntt|4.退出系统|ntt* * * * * * * * * * * *nttt请对应选择所需选项(1-4): scanf(%d,&c); while(c8); return c;void password() /密码
8、登录部分 char d6; char m6; m0=1,m1=2,m2=3,m3=4,m4=5,m5=6; /数组比较printf(请输入六位数密码: /输入密码 for (int n=0; 请输入密码:n for(int i=0;i=0|diazAZ putchar(* if(d0=m0&d1=m1&d2=m2&d3=m3&d4=m4&d5=m5) printf(nttt密码正确!请进行验证!break; if(d0!=m0|d1!=m1|d2!=m2|d3!=m3|d4!=m4|d5!=m5) /当密码错误时如下n密码错误!请重新输入: if (n3)系统即将关闭,88! system(p
9、ause exit (0); n+; void verification_code() /验证码部分 int p1=0; int q1=0; for(int k=0; srand(time(NULL);验证码为: p0=rand()%1000; /产生0-1000的随机数,p0);请输入验证码:q0);“ if(q0!=p0)验证码错误,请重新输入。 elsen欢迎使用! break; if(k k+;int Inputitems(family sum,int n)/输入消费信息 int i=0; char sign=y,x10; while(sign!nsign!N) printf(ttt种类: scanf(ttt%s,sumn+i.type);ttt支出(大于0):ttt%fsumn+i.Getsum);ttt地点:,sumn+i.place);ttt时间(0-31):ttt%dsumn+i.time); if(sumn+i.time31) return false; gets(x);ttt需要再次输入吗?(y/n)ttt%csign); i+; return(n+i); void Showitems(family sum,int n)/输出某月份的消费信息 int i=0,month; FILE *fp;请选择月份;month);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1