班级财务管理程序_第1页
班级财务管理程序_第2页
班级财务管理程序_第3页
班级财务管理程序_第4页
班级财务管理程序_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

word文档可自由复制编辑程序设计与算法综合实习=1\*ROMANI实验题目:班级财务管理程序学院《班级财务管理程序》1.系统分析1.1问题描述设计一个班级财务管理系统,该程序具有以下功能:(1)用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普 通成员具有不同的功能选择界面。(2)录入信息:各项财务信息(包括1用途、2收入、3支出、4收入(或支出) 时间、5总计、6使用人等。)。(3)修改班级成员信息。(4)删除班级成员信息。(5)查询班级财务状况。(6)统计班级财务情况:班级每月共收入、支出各多少,整个学期共收入、支出 多少。(7)分类统计:根据用途对支出进行统计排序输出。 (8)新功能:导出财务信息至Excel表格。1.2系统功能分析(1)登录功能:由于这是一个班级财务管理程序,所以使用人应该是全班同学。为了后期调试的便捷性,我将管理员帐号设置为自己的学号:201330330414,其余同学的学号为普通帐号。所有帐号密码设置为学号后6位。管理员帐号拥有所有权限,能进行所有操作。普通帐号可以进行查询班级财务状况、统计班级财务情况、分类统计、导出财务信息至Excel表格等操作。(2)录入信息:用途、收入、支出、使用时间、使用人,由于我将“总计”这一项信息理解为余额,所以余额交由程序自动计算。(3)修改班级成员信息:要修改信息的时候,先输入要修改信息条的使用人的名字,也就是说本功能是以“使用人”为关键字来进行的,可以修改的信息包括:用途、收入、支出、使用时间、使用人。(4)删除班级成员信息:与修改信息一样,要删除的时候以“使用人”为关键字,输入使用人名字以进行删除。(5)查询班级财务状况:包括历史总收入、历史总支出、现存余额。(6)统计班级财务情况:根据要查询的月份或学期,输入其对应日期,程序再做统计。(7)分类统计:根据用途,列出各种用途及其对应的支出信息。(8)导出财务信息至Excel表格:一个财务管理程序虽然可以对财务信息进行各种统计,但如果要了解细则,显然导出一个表格来看更加清晰明了,因此我就想到了添加这个新的功能。(9)保存文件:程序开始的时候会进行读取信息的操作,信息存在文件名为“money.in”里面。每次退出要进行保存操作,虽然手动保存显得不够便利,但是如果出现误操作,可以直接退出程序,这样原来的信息就不会被改变。2.系统设计1.1系统总体结构设计开始时,程序先要求输入帐号密码,若验证通过,判断帐号权限,赋予相应菜单界面。登录完成后,文件读取函数(函数名:Rfile)会自动读取名为“money.in”的文件,里面存有历史财务信息。若该文件不存在,程序将会自动创建该文件。读取的信息将会按顺序创建链表,所有的信息暂存在链表里。一级菜单:若为管理员则printf出所有功能选项提供用户选择,如果是普通用户,则printf无法改变信息文件的选项,选择操作以switch语句实现。(3)录入信息:一次输入使用人、收入、支出、用途、使用时间,余额交由程序自动计算。每次录入的信息插在链表末尾。(4)修改班级成员信息:先输入要修改信息条的使用人的名字,也就是说本功能是以“使用人”为关键字来进行的,可以修改的信息包括:用途、收入、支出、使用时间、使用人。如果修改的项目是收入或者支出,将会影响该条目及之后所有条目的余额,所以此时会调用余额修正函数(函数名:Sumrevise),以修正受影响的余额,保证正确性。(5)删除班级成员信息:与修改信息一样,要删除的时候以“使用人”为关键字,输入使用人名字后,程序会检索所有该使用人的财务记录并列出,之后可以选择相应序号以删除条目。同样地,删除操作将会影响余额的正确性,所以删除之后同样会调用余额修正函数进行修正。(6)查询班级财务状况:遍历链表,计算历史总收入、历史总支出、现存余额。(7)统计班级财务情况:根据要查询的月份或学期,先输入年份或者学年,再输入月份或者学期,程序将年、月作为关键字,在链表中检索符合日期的条目,计算收入和支出。(8)分类统计:根据用途,每遇到一个未统计过的用途,就将该用途作为关键字,检索后面相同用途的信息,以此类推,余下的用途用同样的方法计算,最后列出各种用途及其对应的支出信息。(9)导出财务信息至Excel表格:创建新的文件指针,将链表里的信息写入名为“report.xls”的Excel文件里,输出的时候包括跳格符、’\n’符号,保证输出格式的正确性。(10)保存文件(函数名:Save):程序开始的时候会进行读取信息的操作,信息存在文件名为“money.in”里面。每次退出要进行保存操作,虽然手动保存显得不够便利,但是如果出现误删除这类操作,可以直接退出程序,这样原来的信息就不会被改变。1.2系统各个功能模块详细设计及功能模块之间关系设计1.2.1系统各个功能模块详细设计登录模块(图1.1):首先输入帐号和密码,如果出错,程序会提示出错的是帐号还是密码,并要求重新输入,输入正确后,程序根据帐号类型赋予权限,进入一级菜单。登录登录管理员功能选择界面普通用户功能选择界面(1.1)登录模块财务信息添加使用人姓名财务信息添加使用人姓名收入金额支出金额资金用途使用时间(1.2)添加信息模块修改信息:输入姓名之后,程序会列出所有该姓名的财务信息,此时可以选择编号以修改。(图1.3)财务信息修改财务信息修改使用人姓名收入金额支出金额资金用途使用时间(1.3)修改信息模块删除信息:输入姓名之后,程序会列出所有该姓名的财务信息,此时可以选择编号以删除。(图1.4)删除财务信息删除财务信息输入姓名列出可删除项目(1.4)删除信息模块查询财务状况:(图1.5)查询财务状况查询财务状况计算各项数据输出各项数据(1.5)查询财务模块统计财务信息:第一步是选择统计月度信息还是学期信息,然后输入年份、月度或学期。(图1.6)统计财务状况统计财务状况统计月度财务信息统计学期财务信息(1.6)统计财务模块分类统计财务:(图1.7)分类统计财务分类统计财务计算各种用途总支出输出支出信息(1.7)分类统计模块导出Excel报告:(图1.8)导出Excel报告导出Excel报告输出财务信息项目名称输出对应信息(1.8)导出Excel模块功能模块之间关系设计:(图1.9)(1.9)总体关系设计1.3数据结构的设计帐户信息结构体:typedefstruct//用户信息结构体{charnumber[13],password[7];intpower;}account;number是学号,password是密码,power是权限,power=1是管理员,power=0是普通用户。财务信息结构体:structinfo{charname[10];//使用者名称charusage[50];//用途floatmoneyin;//收入floatmoneyout;//支出chartime[11];//发生时间floatsum;//余额structinfo*next;};分类统计时复制原始信息所用结构体:structgetout//分类统计功能所需要的新链表{charuse[10];//用途floatmonout;//支出structgetout*next;};1.4界面设计(1)登录界面(图2.1):(2.1)登陆界面(2)一级菜单(图2.2):(2.2)一级菜单(3)信息录入界面(图2.3):(2.3)信息录入界面(4)信息修改界面(图2.4):(2.4)信息修改界面信息删除界面(图2.5):(2.5)信息删除界面信息查询界面(图2.6):(2.6)信息查询界面信息统计界面(图2.7):(2.7)信息统计界面信息分类界面(图2.8):(2.8)信息分类界面Excel导出界面(图2.9):(2.9)Excel导出界面系统实现与模块详细设计(1)登录模块(图3.1),intLogin(account*loguser)//登录验证(3.1)登录模块录入模块(图3.2):voidAddinfo(structinfo*head1)//添加新财务信息(3.2)录入模块修改模块(图3.3):voidChangeinfo(structinfo*head30)//修改财务信息(3.3)修改模块删除模块(图3.4):structinfo*Deleteinfo(structinfo*head50)//删除财务信息(3.4)删除模块查询模块(图3.5):voidCheckinfo(structinfo*head60)//查询财务状况(3.5)查询模块(6)统计模块(图3.6):voidSumupinfo(structinfo*head70)//统计学期、月的财务状况(3.6)统计模块(7)分类模块(图3.7):voidClassinfo(structinfo*head80)//分类统计支出(3.7)分类模块(8)Excel模块(图3.8):voidExcel(structinfo*head100)//新功能,导出财务信息至excel表格(3.8)Excel模块4.系统测试一、模块与系统测试:初始财务信息为:朱颖超2000.001000.001000.00购书2013091016任芮0.00200.00800.00交团费2013092011林春贤1000.000.001800.00收班费2013092017黄婷婷1500.001200.002100.00秋游2013110118黄治民0.00200.001900.00体检2013120110<1>测试用例:帐号:201330330414,密码:123456,再次输入330414。添加财务信息:测试员0100测试2014051420修改财务信息:修改“测试员”为“哈哈哈”删除财务信息:删除使用人为“哈哈哈”的条目查询财务信息、统计2013学年第1学期信息、分类统计、导出至Excel文档。预期结果:提示密码错误,重新输入后进入管理员菜单。删除条目后余额应为原始 的1900.00元。<2>运行结果:运行结果:(1)输入帐号:201330330414,密码:123456(错误密码)(图4.1)(4.1)输入帐号密码(2)输入错误密码的结果(图4.2):(4.2)结果提示(3)重新输入正确密码(图4.3):(4.3)重新输入密码(4)成功进入管理员界面(图4.4):(4.4)成功进入管理员界面(5)添加财务信息:测试员0100测试2014051420(图4.5):(4.5)添加财务信息(6)修改财务信息:修改“测试员”为“哈哈哈”(图4.6)(4.6)修改财务信息(7)删除财务信息:删除使用人为“哈哈哈”的条目(图4.7):(4.7)删除财务信息(8)查询财务信息(图4.8):(4.8)查询财务信息统计2013学年第1学期信息(图4.9、图4.10、图4.11):(4.9)输入统计学年(4.10)输入统计学期(4.11)统计结果(10)分类统计(图4.12):(4.12)分类统计(11)导出至Excel文档(图4.13):(4.13)导出至Excel文档 二、结论:测试样例满足功能需求。总结刚开始设计时毫无头绪,代码也是写得一团糟,后来才意识到必须重头开始设计整个程序的结构。由于所以信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。由于关于链表的知识还没有非常熟悉,所以在写读取文件的函数时出现了一点错误,有时候其他细节也有一些疏忽导致出错,这里要多谢苏锐佳和林智两位同学的帮助。总体来说绝大部分功能都能够顺利完成,其中的Sumrevise函数是写到查询功能的时候才意识到其重要性,因为在修改或删除财务信息时,如果涉及到收入、支出的修改,将导致之后的信息余额不正确,所以才写了这个函数以修正余额信息。还有学期总支出这一项,由于学期涉及垮年度,所以还要考虑到下一年信息的整合。分类统计这个功能想了最久,因为用途在链表里面没有规律可循。当时想到的第一个方案是从头到尾检索链表,将寻到的第一个前面未寻到过的“用途”添加到新的链表,再用这个新的链表从头到尾,根据用途的关键字在原来的链表里面寻找对应的支出信息并累加。后来觉得这样操作很麻烦,又想到了并采用第二个方案:复制一个原来的链表,将头结点里面的用途与后续结点对比,若相同,则累加计算支出,并删除后面相同的结点,到达表尾后,删除头结点,并从新的头结点开始同样的操作。这样就可以保证所有不同用途都会被计算总支出并一一列出。这次课程设计让我有机会重新认识到自己的不足,也是一次对知识的重新梳理。虽然很不走运地被分配到了相对较难的题目,不过这也起了强迫自己加强对C语言掌握程度的作用,并且让我写出了自己目前为止最复杂的程序。参考文献C语言程序设计教材《百度百科》关于system()函数的词条。附录:代码清单#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>structinfo{charname[10];//使用者名称charusage[50];//用途floatmoneyin;//收入floatmoneyout;//支出chartime[11];//发生时间floatsum;//余额structinfo*next;};structgetout//分类统计功能所需要的新链表{charuse[50];//用途floatmonout;//支出structgetout*next;};typedefstruct//用户信息结构体{charnumber[13],password[7];intpower;}account;intLogin(account*loguser)//登录验证{intmark=1;FILE*fp;charcmp[13];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;}}returnmark;}structinfo*Rfile(structinfo*headrf)//读取文件储存到链表{FILE*fr,*fw;charch;structinfo*p2,*p1;charname[10];//使用者名称charusage[50];//用途floatmoneyin;//收入floatmoneyout;//支出chartime[11];//发生时间floatsum;//余额fr=fopen("money.in","r");if(fr==NULL){fw=fopen("money.in","w");fr=fopen("money.in","r");}while((ch=fgetc(fr))!=EOF){fseek(fr,-1,SEEK_CUR);p1=(structinfo*)malloc(sizeof(structinfo));fscanf(fr,"%s%f%f%f%s%s\n",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;elsep2->next=p1;p2=p1;}returnheadrf;}voidAddinfo(structinfo*head1)//添加新财务信息{system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("★★★您的身份是管理员★★★\n\n");printf("┅┅┅┅财务信息录入┅┅┅┅\n\n");structinfo*p,*p1,*p2;charname[10];//使用者名称charusage[50];//用途floatmoneyin;//收入floatmoneyout;//支出chartime[11];//发生时间floatsum;//余额p2=head1;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("┗━━━━━━━━━┛\n");Sleep(1000);p=(structinfo*)malloc(sizeof(structinfo));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;}voidSumrevise(structinfo*head40)//修正删除或修改后更新的信息条以及后面的所有余额信息{structinfo*ppp1=head40,*ppp2=ppp1->next;while(ppp1&&ppp2){ppp2->sum=(ppp1->sum)+(ppp2->moneyin)-(ppp2->moneyout);ppp1=ppp1->next;ppp2=ppp1->next;}}voidChangeinfo(structinfo*head30)//修改财务信息{system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("★★★您的身份是管理员★★★\n\n");printf("┅┅┅┅财务信息修改┅┅┅┅\n\n");inti=0,choice;structinfo*pp1=head30,*pp2=head30,*pp3,*pp4=head30;charname[10];printf("请输入要修改的财务信息使用人的名字:");scanf("%s",name);printf("\n使用人│收入金额│支出金额│余额│用途│使用时间\n\n");while(pp1){if(strcmp(pp1->name,name)==0){i++;printf("[%d]%s%.2f%.2f%.2f%s%s\n",i,pp1->name,pp1->moneyin,pp1->moneyout,pp1->sum,pp1->usage,pp1->time);}pp1=pp1->next;}if(i!=0){printf("\n请选择序号以修改账务信息:");scanf("%d",&i);while(i){if(strcmp(pp2->name,name)==0){i--;pp3=pp2;pp2=pp2->next;}else{pp3=pp2;pp2=pp2->next;}}system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("★★★您的身份是管理员★★★\n\n");printf("┅┅┅┅财务信息修改┅┅┅┅\n\n");printf("┌──────┬──────┐\n");printf("│[1]姓名│[2]收入金额│\n");printf("├──────┼──────┤\n");printf("│[3]支出金额│[4]用途│\n");printf("├──────┼──────┤\n");printf("│[5]时间│[0]取消│\n");printf("└──────┴──────┘\n\n请输入要修改的信息项目对应的序号:");scanf("%d",&choice);while(choice){switch(choice){case1:{printf("请输入正确的姓名:");scanf("%s",pp3->name);system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息修改成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);break;}case2:{printf("请输入正确的收入金额:");scanf("%f",&pp3->moneyin);system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息修改成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);break;}case3:{printf("请输入正确的支出金额:");scanf("%f",&pp3->moneyout);system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息修改成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);break;}case4:{printf("请输入正确的用途:");scanf("%s",pp3->usage);system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息修改成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);break;}case5:{printf("请输入正确的使用时间:");scanf("%s",pp3->time);system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息修改成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);break;}case0:break;default:system("CLS");system("color0C");printf("┏━━━━━━━━┓\n");printf("┃请输入正确编号!┃\n");printf("┗━━━━━━━━┛\n");Sleep(1000);system("color0b");break;}if(choice==2||choice==3){if(pp4==pp3){pp4->sum=pp3->moneyin-pp3->moneyout;}else{while(pp4->next!=pp3){pp4=pp4->next;}Sumrevise(pp4);}}system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("★★★您的身份是管理员★★★\n\n");printf("┅┅┅┅财务信息修改┅┅┅┅\n\n");printf("┌──────┬──────┐\n");printf("│[1]姓名│[2]收入金额│\n");printf("├──────┼──────┤\n");printf("│[3]支出金额│[4]用途│\n");printf("├──────┼──────┤\n");printf("│[5]时间│[0]取消│\n");printf("└──────┴──────┘\n\n请输入要修改的信息项目对应的序号:");scanf("%d",&choice);}}else{system("CLS");system("color0C");printf("┏━━━━━┓\n");printf("┃查无此人!┃\n");printf("┗━━━━━┛\n");Sleep(1000);system("color0b");}}structinfo*Deleteinfo(structinfo*head50)//删除财务信息{system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("★★★您的身份是管理员★★★\n\n");printf("┅┅┅┅财务信息删除┅┅┅┅\n\n");inti=0,choice,k=0;structinfo*p11=head50,*p12=head50,*p13,*p14=head50;charname[10];printf("请输入要删除的财务信息使用人的名字:");scanf("%s",name);printf("\n使用人│收入金额│支出金额│余额│用途│使用时间\n\n");while(p11){if(strcmp(p11->name,name)==0){i++;printf("[%d]%s%.2f%.2f%.2f%s%s\n",i,p11->name,p11->moneyin,p11->moneyout,p11->sum,p11->usage,p11->time);}p11=p11->next;}if(i!=0){printf("\n[0]取消\n");printf("\n请选择序号以删除账务信息:");scanf("%d",&choice);if(choice){system("CLS");system("color0C");printf("┏━━━━━━━━━┓\n");printf("┃确定要删除信息?┃\n");printf("┣━━━━┳━━━━┫\n");printf("┃[1]删除┃[0]取消┃\n");printf("┗━━━━┻━━━━┛\n");scanf("%d",&k);system("color0b");if(k==0)choice=k;}i=choice;if(choice)choice=1;switch(choice){case1:while(i){if(strcmp(p12->name,name)==0){i--;p13=p12;p12=p12->next;}else{p13=p12;//记录修正余额需要的最后一条信息p12=p12->next;}}if(head50==p13)//如果要删除的是第一个结点{if(p12==NULL)//如果整个链表只有一个结点{head50=NULL;free(p13);}elsehead50=p12;}else{while(p14->next!=p13){p14=p14->next;}p14->next=NULL;if(p12){p14->next=p12;}Sumrevise(p14);}system("CLS");printf("┏━━━━━━━━━┓\n");printf("┃财务信息删除成功!┃\n");printf("┗━━━━━━━━━┛\n");Sleep(1000);case0:break;default:system("CLS");system("color0C");printf("┏━━━━━━━━┓\n");printf("┃请输入正确编号!┃\n");printf("┗━━━━━━━━┛\n");Sleep(1000);system("color0b");break;}}else{system("CLS");system("color0C");printf("┏━━━━━┓\n");printf("┃查无此人!┃\n");printf("┗━━━━━┛\n");Sleep(1000);system("color0b");}returnhead50;}voidCheckinfo(structinfo*head60)//查询财务状况{system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息查询┅┅┅┅\n\n");floatinin=0,outout=0,sum=0;structinfo*p00=head60;while(p00){inin=inin+p00->moneyin;outout=outout+p00->moneyout;sum=sum-p00->moneyout+p00->moneyin;p00=p00->next;}printf("*==============================*\n");printf("历史总收入金额:%.2f\n",inin);printf("*==============================*\n");printf("历史总支出金额:%.2f\n",outout);printf("*==============================*\n");printf("现存余额:%.2f\n",sum);printf("*==============================*\n\n");system("pause");}voidSumupinfo(structinfo*head70)//统计学期、月的财务状况{structinfo*p41=head70,*p42=head70;intchoice=1,i=0,j=0,k=0;charyear[5],mmday[10],chcmp[10],tcmp[5],tcmp1[5],mcmp[3];charyue[3];intterm=1;floatsumin,sumout;while(choice){system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息统计┅┅┅┅\n\n");printf("┏━━━━┳━━━━┳━━━━┓\n");printf("┃[1]月度┃[2]学期┃[0]取消┃\n");printf("┗━━━━┻━━━━┻━━━━┛\n\n");printf("请输入要统计月度信息还是学期信息:");scanf("%d",&choice);switch(choice){case1:{while(1){system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息统计┅┅┅┅\n\n");printf("请输入年份(输入[0]返回上一级):");scanf("%s",year);if(year[0]=='0')break;while(1){sumin=0;sumout=0;system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息统计┅┅┅┅\n\n");printf("请输入月份(如:[01]一月份[00]返回上一级):");scanf("%s",yue);if(yue[0]=='0'&&yue[1]=='0')break;strcpy(mmday,year);strcat(mmday,yue);mmday[6]='\0';while(1){if(p41==NULL)break;strcpy(chcmp,p41->time);chcmp[6]='\0';for(k=6;k>0;k--)//strcmp在此出错,改变了mmday[0]的值导致比较结果出错{if(mmday[k]!=chcmp[k])break;}if(k==0){i++;sumin=sumin+p41->moneyin;sumout=sumout+p41->moneyout;}p41=p41->next;}if(i!=0){system("CLS");printf("\n*==============================================*\n\n");printf("%s年%s月总收入为:%.2f,总支出为:%.2f\n",year,yue,sumin,sumout);printf("\n*==============================================*\n\n");system("pause");}else{system("CLS");system("color0C");printf("┏━━━━━━━━━━━┓\n");printf("┃没有%s年%s月的信息!┃\n",year,yue);printf("┗━━━━━━━━━━━┛\n");Sleep(1500);system("color0b");}p41=head70;}}}break;case2:{while(1){system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息统计┅┅┅┅\n\n");printf("请输入学年(输入[0]返回上一级):");scanf("%s",year);if(year[0]=='0')break;while(1){sumin=0;sumout=0;system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息统计┅┅┅┅\n\n");printf("请输入学期([1]第一学期[2]第二学期[0]返回上一级):");scanf("%d",&term);if(!term)break;while(1){if(p42==NULL)break;strcpy(tcmp,p42->time);tcmp[4]='\0';strcpy(tcmp1,year);tcmp1[3]=year[3]+1;//第一学期为9月-下年2月份,所以要将输入的年份+1tcmp1[4]='\0';if(tcmp1[3]==':'){tcmp1[2]=tcmp1[2]+1;tcmp1[3]=tcmp1[3]-10;if(tcmp1[2]==':'){tcmp1[1]=tcmp1[1]+1;tcmp1[2]=tcmp1[2]-10;if(tcmp1[1]==':'){tcmp1[0]=tcmp1[0]+1;tcmp1[1]=tcmp1[1]-10;}}}mcmp[0]=p42->time[4];mcmp[1]=p42->time[5];mcmp[2]='\0';if(term==1){if(strcmp(tcmp,year)==0){if((strcmp(mcmp,"09")==0)||(strcmp(mcmp,"10")==0)||(strcmp(mcmp,"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){if(strcmp(tcmp1,tcmp)==0){if((strcmp(mcmp,"03")==0)||(strcmp(mcmp,"04")==0)||(strcmp(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*=================================================*\n\n");printf("%s学年第%d学期总收入为:%.2f,总支出为:%.2f\n",year,term,sumin,sumout);printf("\n*=================================================*\n\n");system("pause");}else{system("CLS");system("color0C");printf("┏━━━━━━━━━━━━━━┓\n");printf("┃没有%s学年第%d学期的信息!┃\n",year,term);printf("┗━━━━━━━━━━━━━━┛\n");Sleep(1500);system("color0b");}p42=head70;}}}break;case0:break;default:system("CLS");system("color0C");printf("┏━━━━━━━━┓\n");printf("┃请输入正确编号!┃\n");printf("┗━━━━━━━━┛\n");Sleep(1000);system("color0b");break;}}}voidClassinfo(structinfo*head80)//分类统计支出{system("CLS");printf("\n╔╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠欢迎使用班级财务管理系统!╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n\n");printf("┅┅┅┅财务信息分类┅┅┅┅\n\n");structinfo*p91=head80,*p92=NULL;structgetout*get1=NULL,*get2=NULL,*get3=NULL,*get4=NULL,*get5=NULL;;charuseuse[50];floatmmout=0.0;inti=1;if(head80==NULL){system("CLS");system("color0C");printf("┏━━━━━━━┓\n");printf("┃没有财务信息!┃\n");printf("┗━━━━━━━┛\n");Sleep(1000);system("color0b");}else{get1=(structgetout*)malloc(sizeof(structgetout));strcpy(get1->use,p91

温馨提示

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

最新文档

评论

0/150

提交评论