版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、word 文档下载后可任意复制编辑程序设计与算法综合实习I实验题目:班级财务管理程序word 文档下载后可任意复制编辑学院班级财务管理程序系统分析1.1 问题描述设计一个班级财务管理系统,该程序具有以下功能:1)用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。2)录入信息:各项财务信息(包括1 用途、 2 收入、 3 支出、 4 收入(或支出)时间、 5 总计、 6 使用人等。)。3)修改班级成员信息。4)删除班级成员信息。5)查询班级财务状况。6)统计班级财务情况:班级每月共收入、支出各多少,整个学期共收入、支出多少。7)分类统计:根据用途对支
2、出进行统计排序输出。8)新功能:导出财务信息至Excel 表格。1.2 系统功能分析1)登录功能:由于这是一个班级财务管理程序,所以使用人应该是全班同学。为了后期调试的便捷性, 我将管理员帐号设置为自己的学号: 201330330414,其余同学的学号为普通帐号。 所有帐号密码设置为学号后 6 位。管理员帐号拥有所有权限, 能进行所有操作。普通帐号可以进行查询班级财务状况、统计班级财务情况、分类统计、导出财务信息至 Excel 表格等操作。2)录入信息:用途、收入、支出、使用时间、使用人,由于我将“总计”这一项信息理解为余额,所以余额交由程序自动计算。3)修改班级成员信息:要修改信息的时候,先
3、输入要修改信息条的使用人的名字,也就是说本功能是以“使用人”为关键字来进行的,可以修改的信息包括:用途、收入、支出、使用时间、使用人。4)删除班级成员信息:与修改信息一样,要删除的时候以“使用人”为关键字,输入使用人名字以进行删除。5)查询班级财务状况:包括历史总收入、历史总支出、现存余额。6)统计班级财务情况:根据要查询的月份或学期,输入其对应日期,程序再做统计。7)分类统计:根据用途,列出各种用途及其对应的支出信息。8)导出财务信息至 Excel 表格:一个财务管理程序虽然可以对财务信息进行各种统计,但如果要了解细则,显然导出一个表格来看更加清晰明了,因此我就想到了添加这个新的功能。9 )
4、保存文件:程序开始的时候会进行读取信息的操作,信息存在文件名为word 文档下载后可任意复制编辑“ money.in ”里面。 每次退出要进行保存操作,虽然手动保存显得不够便利,但是如果出现误操作,可以直接退出程序,这样原来的信息就不会被改变。系统设计1.1 系统总体结构设计(1)开始时,程序先要求输入帐号密码,若验证通过,判断帐号权限,赋予相应菜单界面。登录完成后,文件读取函数(函数名:Rfile )会自动读取名为“money.in ”的文件,里面存有历史财务信息。若该文件不存在,程序将会自动创建该文件。读取的信息将会按顺序创建链表,所有的信息暂存在链表里。(2)一级菜单:若为管理员则pri
5、ntf 出所有功能选项提供用户选择,如果是普通用户,则 printf 无法改变信息文件的选项,选择操作以switch 语句实现。3)录入信息:一次输入使用人、收入、支出、用途、使用时间,余额交由程序自动计算。每次录入的信息插在链表末尾。4)修改班级成员信息:先输入要修改信息条的使用人的名字,也就是说本功能是以“使用人”为关键字来进行的,可以修改的信息包括:用途、收入、支出、使用时间、使用人。如果修改的项目是收入或者支出, 将会影响该条目及之后所有条目的余额,所以此时会调用余额修正函数(函数名: Sumrevise ),以修正受影响的余额, 保证正确性。5)删除班级成员信息:与修改信息一样,要删
6、除的时候以“使用人”为关键字,输入使用人名字后, 程序会检索所有该使用人的财务记录并列出,之后可以选择相应序号以删除条目。 同样地, 删除操作将会影响余额的正确性, 所以删除之后同样会调用余额修正函数进行修正。6)查询班级财务状况:遍历链表,计算历史总收入、历史总支出、现存余额。7)统计班级财务情况:根据要查询的月份或学期,先输入年份或者学年,再输入月份或者学期,程序将年、月作为关键字, 在链表中检索符合日期的条目,计算收入和支出。8)分类统计: 根据用途,每遇到一个未统计过的用途, 就将该用途作为关键字,检索后面相同用途的信息, 以此类推, 余下的用途用同样的方法计算, 最后列出各种用途及其
7、对应的支出信息。9)导出财务信息至 Excel 表格:创建新的文件指针,将链表里的信息写入名为“ report.xls ”的 Excel 文件里,输出的时候包括跳格符、 n 符号,保证输出格式的正确性。10)保存文件(函数名: Save):程序开始的时候会进行读取信息的操作,信息存在文件名为“ money.in ”里面。每次退出要进行保存操作, 虽然手动保存显得不够便利,但是如果出现误删除这类操作, 可以直接退出程序, 这样原来的信息就不会被改变。1.2 系统各个功能模块详细设计及功能模块之间关系设计系统各个功能模块详细设计(1)登录模块(图 1.1):首先输入帐号和密码,如果出错,程序会提示
8、出错的是帐号还是密码, 并要求重新输入,输入正确后,程序根据帐号类型赋予权限,进入一级菜单。word 文档下载后可任意复制编辑管理员功能选择界面登录普通用户功能选择界面( 1.1)登录模块(2)添加信息:(图 1.2)使用人姓名收入金额财务信息添加支出金额资金用途使用时间1.2)添加信息模块3)修改信息:输入姓名之后,程序会列出所有该姓名的财务信息,此时可以选择编号以修改。 (图 1.3)使用人姓名收入金额财务信息修改支出金额资金用途使用时间1.3)修改信息模块4)删除信息:输入姓名之后,程序会列出所有该姓名的财务信息,此时可以选择编号以删除。 (图 1.4)输入姓名删除财务信息列出可删除项目
9、( 1.4)删除信息模块word 文档下载后可任意复制编辑(5)查询财务状况: (图 1.5)计算各项数据查询财务状况输出各项数据1.5)查询财务模块6)统计财务信息:第一步是选择统计月度信息还是学期信息,然后输入年份、月度或学期。(图 1.6)统计月度财务信息统计财务状况统计学期财务信息1.6)统计财务模块7)分类统计财务: (图 1.7)计算各种用途总支出分类统计财务输出支出信息1.7)分类统计模块8)导出 Excel 报告:(图 1.8)输出财务信息项目名称导出 Excel 报告输出对应信息1.8)导出 Excel 模块功能模块之间关系设计: (图 1.9)word 文档下载后可任意复制
10、编辑( 1.9)总体关系设计1.3 数据结构的设计帐户信息结构体:typedef struct / 用户信息结构体char number13,password7;int power;account;number 是学号, password 是密码, power 是权限, power=1 是管理员, power=0 是普通用户。财务信息结构体:struct infochar name10; / 使用者名称char usage50; / 用途float moneyin; / 收入float moneyout; / 支出char time11; / 发生时间word 文档下载后可任意复制编辑floa
11、t sum; / 余额struct info *next;分类统计时复制原始信息所用结构体:struct getout /分类统计功能所需要的新链表char use10; / 用途float monout; / 支出struct getout *next;1.4 界面设计( 1)登录界面(图2.1):2.1)登陆界面2)一级菜单(图 2.2):( 2.2)一级菜单word 文档下载后可任意复制编辑( 3)信息录入界面(图2.3):2.3)信息录入界面4)信息修改界面(图 2.4):2.4)信息修改界面5)信息删除界面(图 2.5):word 文档下载后可任意复制编辑2.5)信息删除界面6)信息
12、查询界面(图 2.6):2.6)信息查询界面7)信息统计界面(图 2.7):word 文档下载后可任意复制编辑2.7)信息统计界面8)信息分类界面(图 2.8):2.8)信息分类界面9)Excel 导出界面(图 2.9):word 文档下载后可任意复制编辑2.9) Excel 导出界面系统实现与模块详细设计(1)登录模块(图3.1), int Login(account *loguser)/登录验证(3.1)登录模块(2)录入模块(图3.2): void Addinfo(struct info *head1) /添加新财务信息(3.2)录入模块(3)修改模块(图3.3): void Chang
13、einfo(struct info *head30) /修改财务信息(3.3)修改模块word 文档下载后可任意复制编辑(4)删除模块(图3.4): struct info *Deleteinfo(struct info *head50)/删除财务信息( 3.4)删除模块(5)查询模块(图3.5): void Checkinfo(struct info *head60) /查询财务状况( 3.5)查询模块(6)统计模块(图3.6): void Sumupinfo(struct info *head70)/统计学期、月的财务状况( 3.6)统计模块(7)分类模块(图3.7): void Clas
14、sinfo(struct info *head80) /分类统计支出( 3.7)分类模块(8) Excel 模块(图 3.8): void Excel(struct info *head100) / 新功能,导出财务信息至 excel 表格3.8)Excel 模块word 文档下载后可任意复制编辑系统测试一、模块与系统测试:初始财务信息为:朱颖超2000.00 1000.00 1000.00 购书2013091016任芮0.00 200.00 800.00 交团费2013092011林春贤1000.00 0.00 1800.00 收班费2013092017黄婷婷1500.00 1200.00
15、2100.00 秋游2013110118黄治民0.00 200.00 1900.00 体检2013120110测试用例:帐号: 201330330414,密码: 123456,再次输入330414。添加财务信息:测试员0 100 测试2014051420修改财务信息:修改“测试员”为“哈哈哈”删除财务信息:删除使用人为“哈哈哈”的条目查询财务信息、统计2013 学年第 1 学期信息、分类统计、导出至Excel 文档。预期结果: 提示密码错误, 重新输入后进入管理员菜单。删除条目后余额应为原始的 1900.00 元。运行结果:运行结果:1)输入帐号: 201330330414,密码: 12345
16、6(错误密码)(图 4.1)4.1)输入帐号密码2)输入错误密码的结果(图4.2):( 4.2)结果提示(3)重新输入正确密码(图4.3):word 文档下载后可任意复制编辑4.3)重新输入密码4)成功进入管理员界面(图4.4):4.4)成功进入管理员界面5)添加财务信息:测试员0 100 测试 2014051420 (图 4.5):( 4.5)添加财务信息word 文档下载后可任意复制编辑(6)修改财务信息:修改“测试员”为“哈哈哈”(图 4.6)( 4.6)修改财务信息(7)删除财务信息:删除使用人为“哈哈哈”的条目(图4.7):4.7)删除财务信息8)查询财务信息(图 4.8):word
17、 文档下载后可任意复制编辑4.8)查询财务信息9)统计 2013 学年第 1 学期信息(图 4.9、图 4.10、图 4.11):( 4.9)输入统计学年( 4.10)输入统计学期word 文档下载后可任意复制编辑4.11)统计结果10)分类统计(图 4.12 ):4.12)分类统计11)导出至 Excel 文档(图 4.13):( 4.13)导出至Excel 文档二、结论:测试样例满足功能需求。word 文档下载后可任意复制编辑总结刚开始设计时毫无头绪,代码也是写得一团糟,后来才意识到必须重头开始设计整个程序的结构。 由于所以信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为
18、开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。由于关于链表的知识还没有非常熟悉,所以在写读取文件的函数时出现了一点错误,有时候其他细节也有一些疏忽导致出错,这里要多谢苏锐佳和林智两位同学的帮助。总体来说绝大部分功能都能够顺利完成,其中的 Sumrevise 函数是写到查询功能的时候才意识到其重要性, 因为在修改或删除财务信息时,如果涉及到收入、支出的修改, 将导致之后的信息余额不正确,所以才写了这个函数以修正余额信息。还有学期总支出这一项,由于学期涉及垮年度,所以还要考虑到下一年信息的整合。分类统计这个功能想了最久,因为用途在链表里面没有规律可循。当时想到的第一个方案是从头
19、到尾检索链表,将寻到的第一个前面未寻到过的“用途”添加到新的链表,再用这个新的链表从头到尾, 根据用途的关键字在原来的链表里面寻找对应的支出信息并累加。后来觉得这样操作很麻烦,又想到了并采用第二个方案:复制一个原来的链表,将头结点里面的用途与后续结点对比,若相同,则累加计算支出,并删除后面相同的结点,到达表尾后,删除头结点,并从新的头结点开始同样的操作。这样就可以保证所有不同用途都会被计算总支出并一一列出。这次课程设计让我有机会重新认识到自己的不足,也是一次对知识的重新梳理。虽然很不走运地被分配到了相对较难的题目,不过这也起了强迫自己加强对C 语言掌握程度的作用,并且让我写出了自己目前为止最复
20、杂的程序。7.参考文献语言程序设计教材百度百科关于system()函数的词条。附录:代码清单#include#include#include#includestruct infochar name10; / 使用者名称char usage50; / 用途float moneyin; / 收入float moneyout; / 支出char time11; / 发生时间float sum; / 余额struct info *next;word 文档下载后可任意复制编辑struct getout / 分类统计功能所需要的新链表char use50; / 用途float monout; / 支出st
21、ruct getout *next;typedef struct / 用户信息结构体char number13,password7;int power;account;int Login(account *loguser)/ 登录验证int mark=1;FILE *fp;char cmp13;if(fp=fopen(user.in,r)=NULL)printf( 文件打开错误!n);exit(0);while(!feof(fp)fgets(cmp,13,fp);if(strcmp(cmp,loguser-number)=0)mark=0;break;return mark;struct in
22、fo *Rfile(struct info *headrf)/读取文件储存到链表FILE *fr,*fw;char ch;struct info *p2,*p1;char name10; / 使用者名称char usage50; / 用途float moneyin; / 收入word 文档下载后可任意复制编辑float moneyout; / 支出char time11; / 发生时间float sum;/ 余额fr=fopen(money.in,r);if(fr=NULL)fw=fopen(money.in,w);fr=fopen(money.in,r);while(ch=fgetc(fr)
23、!=EOF)fseek(fr,-1,SEEK_CUR);p1=(struct info*)malloc(sizeof(struct info); fscanf(fr,%s%f%f%f%s%sn,name,&moneyin,&moneyout,&sum,usage,time); p1-moneyin=moneyin;p1-moneyout=moneyout;strcpy(p1-name,name);p1-sum=sum;strcpy(p1-time,time);strcpy(p1-usage,usage);p1-next=NULL;if(headrf=NULL) headrf=p1;else p
24、2-next=p1;p2=p1;return headrf;void Addinfo(struct info *head1) / 添加新财务信息system(CLS);printf(nprintf(欢迎使用班级财务管理系统!printf(printf(您的身份是管理员printf(财务信息录入n);n);nn);nn);nn);struct info *p,*p1,*p2;char name10; / 使用者名称char usage50; / 用途float moneyin; / 收入float moneyout; / 支出char time11; / 发生时间float sum;/ 余额p2
25、=head1;word 文档下载后可任意复制编辑while(p2)sum=p2-sum;p1=p2;p2=p2-next;printf(请输入使用人的姓名:);scanf(%s,name);printf(请输入收入金额:);scanf(%f,&moneyin);printf(请输入支出金额:);scanf(%f,&moneyout);printf(请输入资金用途:);scanf(%s,usage);printf(年 月日时 n);printf(请输入使用时间:);scanf(%s,time);system(CLS);printf( n);printf( 财务信息添加成功!n);printf(
26、n);Sleep(1000);p=(struct info*)malloc(sizeof(struct info);strcpy(p-name,name);p-moneyin=moneyin;p-moneyout=moneyout;strcpy(p-usage,usage);strcpy(p-time,time);p-sum=sum+moneyin-moneyout;p1-next=p;p-next=NULL;void Sumrevise(struct info *head40)/ 修正删除或修改后更新的信息条以及后面的所有余额信息struct info *ppp1=head40,*ppp2=
27、ppp1-next;while(ppp1&ppp2)ppp2-sum=(ppp1-sum)+(ppp2-moneyin)-(ppp2-moneyout);ppp1=ppp1-next;ppp2=ppp1-next;word 文档下载后可任意复制编辑void Changeinfo(struct info *head30) /修改财务信息system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(您的身份是管理员nn);printf(财务信息修改nn);int i=0,choice;struct info *pp1=head30,
28、*pp2=head30,*pp3,*pp4=head30;char name10;printf( 请输入要修改的财务信息使用人的名字:);scanf(%s,name);printf(n使用人收入金额支出金额余额用途使用时间 nn);while(pp1)if(strcmp(pp1-name,name)=0)i+;printf(%d%s %.2f %.2f %.2f %s %sn,i,pp1-name,pp1-moneyin,pp1-mone yout,pp1-sum,pp1-usage,pp1-time);pp1=pp1-next;if(i!=0)printf(n 请选择序号以修改账务信息:);
29、scanf(%d,&i);while(i)if(strcmp(pp2-name,name)=0)i-;pp3=pp2;pp2=pp2-next;elsepp3=pp2;pp2=pp2-next;word 文档下载后可任意复制编辑system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(您的身份是管理员nn);printf(财务信息修改nn);printf( n);printf( 1 姓名 2 收入金额 n);printf( n);printf( 3 支出金额 4 用途 n);printf( n);printf( 5 时间 0
30、 取消 n);printf( nn 请输入要修改的信息项目对应的序号: );scanf(%d,&choice);while(choice)switch(choice)case 1:printf( 请输入正确的姓名:);scanf(%s,pp3-name);system(CLS);printf( printf( 财务信息修改成功!printf( Sleep(1000);break;n);n);n);case 2:printf( 请输入正确的收入金额:scanf(%f,&pp3-moneyin);system(CLS);printf( printf( 财务信息修改成功!printf( Sleep(
31、1000);break;);n);n);n);case 3:printf(请输入正确的支出金额:);word 文档下载后可任意复制编辑scanf(%f,&pp3-moneyout);system(CLS);printf( n);printf( 财务信息修改成功!n);printf( n);Sleep(1000);break;case 4:printf( 请输入正确的用途:);scanf(%s,pp3-usage);system(CLS);printf( n);printf( 财务信息修改成功!n);printf( n);Sleep(1000);break;case 5:printf( 请输入正
32、确的使用时间:);scanf(%s,pp3-time);system(CLS);printf( n);printf( 财务信息修改成功!n);printf( n);Sleep(1000);break;case 0:break;default:system(CLS);system(color 0C);printf( n);printf( 请输入正确编号!n);printf( n);Sleep(1000);system(color 0b);break;if(choice=2|choice=3)if(pp4=pp3)word 文档下载后可任意复制编辑pp4-sum=pp3-moneyin-pp3-m
33、oneyout;elsewhile(pp4-next!=pp3)pp4=pp4-next;Sumrevise(pp4);system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(您的身份是管理员nn);printf(财务信息修改nn);printf( n);printf( 1 姓名 2 收入金额 n);printf( n);printf( 3 支出金额 4 用途 n);printf( n);printf( 5 时间 0 取消 n);printf( nn 请输入要修改的信息项目对应的序号: );scanf(%d,&choice
34、);elsesystem(CLS);system(color 0C);printf( n);printf( 查无此人!n);printf( n);Sleep(1000);system(color 0b);struct info *Deleteinfo(struct info *head50)/删除财务信息system(CLS);word 文档下载后可任意复制编辑printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(您的身份是管理员nn);printf(财务信息删除nn);int i=0,choice,k=0;struct info *p11=h
35、ead50,*p12=head50,*p13,*p14=head50;char name10;printf( 请输入要删除的财务信息使用人的名字:);scanf(%s,name);printf(n使用人收入金额支出金额余额用途使用时间 nn);while(p11)if(strcmp(p11-name,name)=0)i+;printf(%d%s %.2f %.2f %.2f %s %sn,i,p11-name,p11-moneyin,p11-mone yout,p11-sum,p11-usage,p11-time);p11=p11-next;if(i!=0)printf(n0 取消 n);pr
36、intf(n 请选择序号以删除账务信息:);scanf(%d,&choice);if(choice)system(CLS);system(color 0C);printf( n);printf( 确定要删除信息? n);printf( n);printf( 1 删除 0 取消 n);printf( n);scanf(%d,&k);system(color 0b);if(k=0)choice=k;i=choice;if(choice)choice=1;word 文档下载后可任意复制编辑switch(choice)case 1:while(i)if(strcmp(p12-name,name)=0)
37、i-;p13=p12;p12=p12-next;elsep13=p12;/ 记录修正余额需要的最后一条信息p12=p12-next;if(head50=p13)/ 如果要删除的是第一个结点if(p12=NULL)/如果整个链表只有一个结点head50=NULL;free(p13);else head50=p12;elsewhile(p14-next!=p13)p14=p14-next;p14-next=NULL;if(p12)p14-next=p12;Sumrevise(p14);system(CLS);printf( n);printf( 财务信息删除成功!n);printf( n);Sle
38、ep(1000);word 文档下载后可任意复制编辑case 0:break;default:system(CLS);system(color 0C);printf( n);printf( 请输入正确编号!n);printf( n);Sleep(1000);system(color 0b);break;elsesystem(CLS);system(color 0C);printf( n);printf( 查无此人!n);printf( n);Sleep(1000);system(color 0b);return head50;void Checkinfo(struct info *head60
39、) / 查询财务状况system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息查询nn);float inin=0,outout=0,sum=0;struct info *p00=head60;while(p00)inin=inin+p00-moneyin;outout=outout+p00-moneyout;sum=sum-p00-moneyout+p00-moneyin;p00=p00-next;printf(*=*n);printf(历史总收入金额:%.2fn,inin);printf(*=*n);word 文
40、档下载后可任意复制编辑printf(历史总支出金额:%.2fn,outout);printf(*=*n);printf(现存余额: %.2fn,sum);printf(*=*nn);system(pause);void Sumupinfo(struct info *head70)/统计学期、月的财务状况struct info *p41=head70,*p42=head70;int choice=1,i=0,j=0,k=0;char year5,mmday10,chcmp10,tcmp5,tcmp15,mcmp3; char yue3;int term=1;float sumin,sumout;
41、while(choice)system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息统计nn);printf(n);printf( 1 月度2 学期 0 取消 n);printf(nn);printf( 请输入要统计月度信息还是学期信息:);scanf(%d,&choice);switch(choice)case 1:while(1)system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息统计nn);printf( 请输入年份(输入0 返
42、回上一级):);scanf(%s,year);if (year0=0) break;while(1)sumin=0;word 文档下载后可任意复制编辑sumout=0;system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息统计nn);printf( 请输入月份(如:01 一月份 00 返回上一级)scanf(%s,yue);if(yue0=0&yue1=0) break;strcpy(mmday,year);strcat(mmday,yue);mmday6=0;while(1):);if(p41=NULL) br
43、eak;strcpy(chcmp,p41-time);chcmp6=0;for(k=6;k0;k-)/strcmp在此出错,改变了mmday0 的值导致比较结果出错if(mmdayk!=chcmpk)break;if(k=0)i+;sumin=sumin+p41-moneyin;sumout=sumout+p41-moneyout;p41=p41-next;if(i!=0)system(CLS);printf(n*=*nn);printf(%s年 %s月 总 收 入 为 : %.2f , 总 支 出为:%.2fn,year,yue,sumin,sumout);printf(n*=*nn);sy
44、stem(pause);elseword 文档下载后可任意复制编辑system(CLS);system(color 0C);printf( n);printf( 没有 %s 年 %s 月的信息!n,year,yue);printf( n);Sleep(1500);system(color 0b);p41=head70;break;case 2:while(1)system(CLS);printf(nprintf(printf(printf(欢迎使用班级财务管理系统!财务信息统计n);n);nn);nn);printf( 请输入学年(输入0 返回上一级):);scanf(%s,year);if
45、(year0=0) break;while(1)sumin=0;sumout=0;system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息统计nn);printf( 请输入学期( 1 第一学期 2 第二学期 0 返回上一级) :);scanf(%d,&term);if(!term) break;while(1)if(p42=NULL) break;strcpy(tcmp,p42-time);tcmp4=0;strcpy(tcmp1,year);tcmp13=year3+1;/ 第一学期为9 月 -下年 2 月份,所
46、以要将输入的年份 +1word 文档下载后可任意复制编辑tcmp14=0;if(tcmp13=:)tcmp12=tcmp12+1;tcmp13=tcmp13-10;if(tcmp12=:)tcmp11=tcmp11+1;tcmp12=tcmp12-10;if(tcmp11=:)tcmp10=tcmp10+1;tcmp11=tcmp11-10;mcmp0=p42-time4;mcmp1=p42-time5;mcmp2=0;if(term=1)if(strcmp(tcmp,year)=0)if(strcmp(mcmp,09)=0)|(strcmp(mcmp,10)=0)|(strcmp(mcmp,
47、11)=0)|(strcmp(mcmp,12)=0)j+;sumin=sumin+p42-moneyin;sumout=sumout+p42-moneyout;if(strcmp(tcmp1,tcmp)=0)if(strcmp(mcmp,01)=0)|(strcmp(mcmp,02)=0)j+;sumin=sumin+p42-moneyin;sumout=sumout+p42-moneyout;if(term=2)word 文档下载后可任意复制编辑if(strcmp(tcmp1,tcmp)=0)if(strcmp(mcmp,03)=0)|(strcmp(mcmp,04)=0)|(strcmp(
48、mcmp,05)=0)|(strcmp(mcmp,06)=0)|(strcmp(mcmp,07)=0)|(strcmp(mcmp,08)=0)j+;sumin=sumin+p42-moneyin;sumout=sumout+p42-moneyout;p42=p42-next;if(j!=0)j=0;system(CLS);printf(n*=*nn);printf(%s 学 年 第 %d 学 期 总 收 入 为 : %.2f , 总 支 出为:%.2fn,year,term,sumin,sumout);printf(n*=*nn);system(pause);elsesystem(CLS);s
49、ystem(color 0C);printf(n);printf(没有 %s 学年第%d 学期的信息! n,year,term);printf(n);Sleep(1500);system(color 0b);p42=head70;break;case 0:break;default:system(CLS);word 文档下载后可任意复制编辑system(color 0C);printf( n);printf( 请输入正确编号!n);printf( n);Sleep(1000);system(color 0b);break;void Classinfo(struct info *head80)
50、/ 分类统计支出system(CLS);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(财务信息分类nn);struct info *p91=head80,*p92=NULL;struct getout *get1=NULL,*get2=NULL,*get3=NULL,*get4=NULL,*get5=NULL;char useuse50;float mmout=0.0;int i=1;if(head80=NULL)system(CLS);system(color 0C);printf( n);printf( 没有财务信息!n);prin
51、tf( n);Sleep(1000);system(color 0b);elseget1=(struct getout*)malloc(sizeof(struct getout);strcpy(get1-use,p91-usage);get1-monout=p91-moneyout;get1-next=NULL;get3=get1;/get1 是新链表的头结点if(p91-next!=NULL)p91=p91-next;while(p91)/ 复制信息到新链表word 文档下载后可任意复制编辑get2=(struct getout*)malloc(sizeof(struct getout);s
52、trcpy(get2-use,p91-usage);get2-monout=p91-moneyout;get2-next=NULL;get3-next=get2;get3=get2;p91=p91-next;while(1)get4=get1-next;strcpy(useuse,get1-use);mmout=get1-monout;while(get4!=NULL)if(strcmp(get4-use,useuse)=0)mmout=mmout+get4-monout;get1-next=get4-next;get4=get4-next;出%.2fprintf(n*=*n元,useuse,
53、mmout);get5=get1-next;get1-next=NULL;get1=get5;if(get1=NULL)/break;%s一 共 支printf(n*=*nn);system(pause);void Excel(struct info *head100) /新功能,导出财务信息至excel 表格struct info *xp1=head100;FILE *fpex;int i=0;fpex=fopen(report.xls,w);if(fpex=NULL)printf(Excelfprintf(fpex,文档建立失败!使用人收入);支出余额用途时间 n);word 文档下载后可
54、任意复制编辑while(xp1)fprintf(fpex,%s%.2f %.2f %.2f %s%sn,xp1-name,xp1-moneyin,xp1-moneyout,xp1-sum,xp1-usage,xp1-time);xp1=xp1-next;i+;if(i)system(CLS);printf(nn);printf( 成功导出至文件“report.xls ”! n);printf( Sleep(1500);n);void Save(struct info *head90) / 保存信息至文件struct info *sp1=head90;FILE *fps;fps=fopen(mo
55、ney.in,w);if(fps=NULL)printf( 财务信息保存失败!);while(sp1)fprintf(fps,%s %.2f %.2f %.2f %s %sn,sp1-name,sp1-moneyin,sp1-moneyout,sp1-sum,sp 1-usage,sp1-time);sp1=sp1-next;system(CLS);printf(n printf( 财务信息保存成功!printf( Sleep(1000);n);n);n);struct info *First(struct info *fhead) /当初始文件为空,添加第一条信息调用本函数system(CL
56、S);printf(nn);printf(欢迎使用班级财务管理系统!n);printf(nn);printf(您的身份是管理员nn);printf(财务信息录入nn);word 文档下载后可任意复制编辑struct info *p;char name10; / 使用者名称char usage50; / 用途float moneyin; / 收入float moneyout; / 支出char time11; / 发生时间float sum;/ 余额printf( 请输入使用人的姓名:scanf(%s,name););printf(请输入收入金额:);scanf(%f,&moneyin);pri
57、ntf(请输入支出金额:);scanf(%f,&moneyout);printf(请输入资金用途:);scanf(%s,usage);printf(printf(请输入使用时间:年 月 日 时 n););scanf(%s,time);system(CLS);printf( n);printf( 财务信息添加成功!n);printf( n);Sleep(1000);p=(struct info*)malloc(sizeof(struct info);strcpy(p-name,name);p-moneyin=moneyin;p-moneyout=moneyout;strcpy(p-usage,u
58、sage);strcpy(p-time,time);p-sum=sum+moneyin-moneyout;p-next=NULL;fhead=p;return fhead;void Guest(struct info *headad) / 普通用户函数system(color 0b);printf( 欢迎使用班级财务管理系统!n);int choice;while(1)system(CLS);printf(nn);word 文档下载后可任意复制编辑printf(欢迎使用班级财务管理系统!printf(printf( printf( 1 查询财务状况 2 统计财务情况printf( n);nn)
59、;n); n);n);printf( 3 分类统计财务 4 导出 Excel 报告 n);printf( printf( 0 退出管理程序printf( printf( 请输入操作编号:);scanf(%d,&choice);switch(choice)n); n);nn);case 1:Checkinfo(headad);break;case 2:Sumupinfo(headad);break;case 3:Classinfo(headad);break;case 4:Excel(headad);break;case 0:system(CLS);printf(nn);printf(按任意键退出!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2163-2024漆膜划格器校准规范
- 2024年度隔墙板市场推广与销售合同
- 2024年企业合规管理与风险评估服务合同
- 2024人工智能在金融服务中的应用合同
- 2024年度品牌授权合同:知名品牌授权使用合同
- 句子改写课件教学课件
- 2024年度云计算服务带宽扩展及维护合同
- 2024年度吊车保险合同:保险责任与赔偿限额
- 2024中小企业贷款及还款细节合同
- 2024年应急响应:消防设施建设与维护合同
- 新课标下小学生运算能力的培养研究的开题报告
- 餐饮行业初期投资预算分析
- 辽宁省重点高中沈阳市郊联体2023-2024学年高三上学期期中生物试题(解析版)
- 退费申请表模板(直接打印)
- 剪映:手机短视频制作-配套课件
- 西气东输二线25标段山岭隧道内管道安装技术
- 防校园欺凌-课件(共28张PPT)
- 第6章 智能网联汽车测评技术
- 单向板结构设计
- 普通高等学校学生转学申请表
- 房租、水、电费(专用)收据Excel模板
评论
0/150
提交评论