版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计论文学生姓名: 金灿 学生学号: 1310321109 所在班级: 软件一班 任课教师: 熊英 班级财务管理系统【设计目的】设计一个班级财务管理系统,该程序具有以下功能:(1)用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。(2)录入信息:各项财务信息(包括用途、收入、支出、收入(或支出)时间、总计、使用人等。)。(3)修改班级成员信息。(4)删除班级成员信息。(5)查询班级财务状况。(6)统计班级财务情况:班级每月共收入、支出各多少,整个学期共收入、支出多少。(7)分类统计:根据用途对支出进行统计排序输出【设计思路】根据要求,班级
2、财务数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。 【总体设计】班费管理系统数据输入数据修改删除数据添加查找浏览图1 系统功能模块图 【详细设计】1. 主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】 显示一系列功能选项输入n,判断n是否是07 ?根据n的值调用各功能模块函数结束开始n 图2. 主函数流程图附录:源代码 #include#include#include#includetypedef struct income_infoint number; double incom
3、e; int month; int day; int year; char name50; struct income_info * next;IncomeLink,* Pointer1;typedef struct output_infoint number; double output; int month; int day; int year; int use; char name50; struct output_info * next;OutputLink,* Pointer2;int Select(void); /收入和支出管理选择函数void Insert1(Pointer1 *
4、 Head1);void Insert2(Pointer2 * Head2);void Search1(Pointer1 Head1);void Search2(Pointer2 Head2);void Update1(Pointer1 Head1);void Update2(Pointer2 Head2);void Delete1(Pointer1 *Head1);void Delete2(Pointer2 *Head2); void Show1(Pointer1 Head1);void Show2(Pointer2 Head2); void Count1(Pointer1 Head1);v
5、oid Count2(Pointer2 Head2);int n,k;int main() void printf_message1(); void menu(); char m7;char M7;char num15; int i,j; long sum; Pointer1 Head1=NULL; Pointer2 Head2=NULL; printf(*欢迎使用班级财务管理系统*n); printf( 请输入你的帐号(即你的学号):); gets(num); for(i=4;i10;i+) mi-4=numi; m6=0; for(i=0;i=1310321101&sumnumber=in
6、_number) printf(已经有相同的编号:); printf(n按任意键继续!n); getchar();return; elseq=p;p=p-next; r=(Pointer1)malloc(sizeof(IncomeLink); r-next=NULL; if(r=NULL) printf(分配空间失败n); return; if(q=NULL) *Head1=r; else q-next=r; r-number=in_number; printf(请输入收入金额(单位:元):); scanf(%lf,&r-income); printf(请输入收入时间:n); printf(年
7、:); scanf(%d,&r-year); printf(月:); scanf(%d,&r-month); printf(日:); scanf(%d,&r-day); printf(请输入您的姓名:); scanf(%s,r-name); printf(nnnn); Sleep(300);void Insert2(Pointer2 *Head2) /添加支出 int in_number; Pointer2 p,q,r; printf(请输入编号: ); scanf(%d,&in_number); p=q=*Head2; while(p!=NULL) if(p-number=in_number
8、) printf(已经有相同的编号:); printf(n按任意键继续!n); getchar(); return; elseq=p;p=p-next; r=(Pointer2)malloc(sizeof(IncomeLink); r-next=NULL; if(r=NULL) printf(分配空间失败n); return; if(q=NULL) *Head2=r; else q-next=r; r-number=in_number; printf(请输入支出金额(单位:元):); scanf(%lf,&r-output); printf(请输入支出时间:n); printf(年:); sc
9、anf(%d,&r-year); printf(月:); scanf(%d,&r-month); printf(日:); scanf(%d,&r-day); printf(请输入用途:); printf(n); printf(请选择(1-4):n); scanf(%d,&r-use); printf(请输入使用人名称:); scanf(%s,r-name); Sleep(300);void Search1(Pointer1 Head1) /查询收入 int flag=1; int number1; Pointer1 p; printf(请输入查询的编号:); scanf(%d,&number1
10、); p=Head1; while(p!=NULL&flag) if(p-number=number1) printf(收入金额:%lf元n,p-income); printf(收入时间:n); printf(年:%d,月:%d,日:%dn,p-year,p-month,p-day); printf(姓名:%s,p-name); printf(nnnn); getchar(); flag=0; else p=p-next; if(flag) printf(没有查到n); printf(nnnn); getchar();void Search2(Pointer2 Head2) /查询支出 voi
11、d Search_name(Pointer2 Head2); void Search_number(Pointer2 Head2); int i; printf(请选择查询的方式:n); printf(1.姓名 2.编号n); scanf(%d,&i); switch(i) case 1: Search_name(Head2); break; case 2: Search_number(Head2); break; Sleep(1000); printf(nnnn); getchar();void Search_name(Pointer2 Head2) /支出查询函数(姓名) int flag
12、=1; char name50; Pointer2 p; printf(请输入查询的姓名:); scanf(%s,name); p=Head2; while(p!=NULL&flag) if(strcmp(p-name,name)=0) printf(支出金额:%lf元n,p-output); printf(支出时间:n); printf(年:%d,月:%d,日:%dn,p-year,p-month,p-day); if(p-use=1) printf(用途:吃喝n); else if(p-use=2) printf(用途:娱乐n); else if(p-use=3) printf(用途:学习
13、n); else printf(用途:其它n); printf(使用人姓名:%s,p-name); printf(n按任意键继续!n); getchar(); flag=0; else p=p-next; if(flag) printf(没有查到n);void Search_number(Pointer2 Head2) /支出查询函数(编号) int flag=1; long number; Pointer2 p; printf(请输入查询的编号:); scanf(%ld,&number); p=Head2; while(p!=NULL&flag) if(p-number=number) pr
14、intf(支出金额:%lf元n,p-output); printf(支出时间:n); printf(年:%d,月:%d,日:%dn,p-year,p-month,p-day); if(p-use=1) printf(用途:吃喝n); else if(p-use=2) printf(用途:娱乐n); else if(p-use=3) printf(用途:学习n); else printf(用途:其它n); printf(使用人姓名:%s,p-name); printf(nnnn); getchar(); flag=0; else p=p-next; if(flag) printf(没有查到n);
15、void Update1(Pointer1 Head1) /修改收入int flag=1;int number;Pointer1 p;printf(请输入要修改的编号:);scanf(%d,&number);p=Head1;while(p!=NULL&flag)if(p-number=number) printf(请输入新的收入:);scanf(%d,&p-income);printf(请输入新的收入时间:n); printf(年:); scanf(%d,&p-year); printf(月:); scanf(%d,&p-month); printf(日:); scanf(%d,&p-day)
16、;printf(请输入新的姓名:); scanf(%s,p-name);flag=0;printf(记录已修改n);elsep=p-next;if(flag)printf(没有找到要修改的记录!n);Sleep(300);void Update2(Pointer2 Head2) /修改支出int flag=1,b;int number;Pointer2 p;printf(请输入要修改的编号:);scanf(%d,&number);p=Head2;while(p!=NULL&flag)if(p-number=number) printf(请输入新的支出:);scanf(%d,&p-output)
17、;printf(请输入新的支出时间:n); printf(年:); scanf(%d,&p-year); printf(月:); scanf(%d,&p-month); printf(日:); scanf(%d,&p-day); printf(请选择新的用途:); printf(n); printf(请选择(1-4):n); scanf(%d,&b); p-use=b; printf(请输入新的使用人名称:); scanf(%s,p-name);flag=0; printf(记录已修改n);elsep=p-next;if(flag)printf(没有找到要修改的记录!n);Sleep(300)
18、;void Delete1(Pointer1 *Head1) /删除收入int flag=1;int number;Pointer1 p,q;printf(请输入要删除数据的编号:);scanf(%d,&number);p=q=*Head1;while(p!=NULL&flag) if(p-number=number)if(p=*Head1)*Head1=p-next;free(p); else q-next=p-next;free(p); flag=0; printf(记录已删除!); printf(n按任意键继续!n); getchar();elseq=p;p=p-next;if(flag
19、)printf(没有找到可以删除的数据); printf(n按任意键继续!n); getchar(); void Delete2(Pointer2 *Head2) /删除支出int flag=1;int number;Pointer2 p,q;printf(请输入要删除数据的编号:);scanf(%d,&number);p=q=*Head2;while(p!=NULL&flag) if(p-number=number)if(p=*Head2)*Head2=p-next;free(p); else q-next=p-next;free(p); flag=0; printf(记录已删除!); pr
20、intf(n记录已删除,按任意键继续!n); getchar();elseq=p;p=p-next;if(flag)printf(没有找到可以删除的数据!n); void Show1(Pointer1 Head1) /显示收入 Pointer1 p; p=Head1;while(p!=NULL)printf(编号:%dn,p-number);printf(收入金额:%lf元n,p-income);printf(收入时间: %d年%d月%d日n,p-year,p-month,p-day);printf(姓名:%s,p-name);printf(n);p=p-next;Sleep(1000);pr
21、intf(n按任意键继续!n); getchar();void Show2(Pointer2 Head2) /显示支出 Pointer2 p; p=Head2;while(p!=NULL)printf(编号:%dn,p-number);printf(支出金额:%lfn,p-output);printf(支出时间: %d年%d月%d日n,p-year,p-month,p-day);if(p-use=1) printf(用途:吃喝n); else if(p-use=2) printf(用途:娱乐n); else if(p-use=3) printf(用途:学习n); else printf(用途:
22、其它n);printf(使用人姓名:%s,p-name);printf(n);p=p-next;Sleep(1000);printf(n按任意键继续!n); getchar();void Count1(Pointer1 Head1) /统计收入int j; int b; double sum1; double sum2,sum3,sum4,sum5,sum6,sum7,sum8,sum9,sum10,sum11,sum12; Pointer1 p; p=Head1; sum1=sum2=sum3=sum4=sum5=sum6=sum7=sum8=sum9=sum10=sum11=sum12=0
23、.0; while(p!=NULL) switch(p-month) case 1:sum1=sum1+p-income;break; case 2:sum2=sum2+p-income;break; case 3:sum3=sum3+p-income;break; case 4:sum4=sum4+p-income;break; case 5:sum5=sum5+p-income;break; case 6:sum6=sum6+p-income;break; case 7:sum7=sum7+p-income;break; case 8:sum8=sum8+p-income;break; c
24、ase 9:sum9=sum9+p-income;break; case 10:sum10=sum10+p-income;break; case 11:sum11=sum11+p-income;break; case 12:sum12=sum12+p-income;break; default:printf(错误选择!n);break; p=p-next; printf(请输入您要统计的月份:); scanf(%d,&j); switch(j) case 1:printf(该月份总计为:%lfn,sum1);break; case 2:printf(该月份总计为:%lfn,sum2);brea
25、k; case 3:printf(该月份总计为:%lfn,sum3);break; case 4:printf(该月份总计为:%lfn,sum4);break; case 5:printf(该月份总计为:%lfn,sum5);break; case 6:printf(该月份总计为:%lfn,sum6);break; case 7:printf(该月份总计为:%lfn,sum7);break; case 8:printf(该月份总计为:%lfn,sum8);break; case 9:printf(该月份总计为:%lfn,sum9);break; case 10:printf(该月份总计为:%l
26、fn,sum10);break; case 11:printf(该月份总计为:%lfn,sum11);break; case 12:printf(该月份总计为:%lfn,sum12);break; default:printf(错误选择!n);break; printf(请输入您要统计的学期:n); printf(n); printf(请选择(1-3):n); scanf(%d,&b); switch(b) case 1: printf(上学期的总计为:%lfn,sum2+sum3+sum4+sum5+sum6+sum7);break; case 2: printf(上学期的总计为:%lfn,
27、sum1+sum8+sum9+sum10+sum11+sum12);break; case 3: break; default: printf(错误选择!n);break; void Count2(Pointer2 Head2) /统计支出void Counter_use(Pointer2 Head2); void Counter_time(Pointer2 Head2); int i; printf(请选择统计的方式:n); printf(1.按用途 2.按时间n); scanf(%d,&i); switch(i) case 1: Counter_use(Head2); break; case 2: Counter_time(Head2); break; default:printf(错误选择!n);break; Sleep(1000); printf(n按任意键继续!n); getchar();void Counter_use(Pointer2 Head2) /按用途统计支出int b; Poi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院感染现患率调查方案
- 教学课件:第8章建筑物的耐火等级y课件
- 2021-2022学年-有答案-江苏省徐州市铜山区七年级(上)期中道德与法治试卷
- 发挥好矿长在煤矿安全生产中的重要作用考核试卷
- 电力设备的电磁兼容与抗干扰考核试卷
- 建筑物拆除工程施工现场消防考核试卷
- 电商平台广告投放与优化考核试卷
- 农业科学在农村旅游中的应用考核试卷
- 煤炭制品质量检验标准考核试卷
- 焙烤食品的新品推广与市场营销考核试卷
- 《实名认证》课件
- 语文教学之学理
- 餐饮创业湘菜计划书
- 销售意识培训课件
- 幼儿园公开课:大班美术创意《橙子变变变 》课件
- 高效数据标注流程
- 2024年物流配送行业无人机配送方案
- 中小学音乐教育的跨学科融合
- Part3-4 Unit4 Volunteer Work课件-【中职专用】高一英语精研课堂(高教版2021·基础模块2)
- 人美版全国小学美术优质课一等奖《摆花样》课件
- JCT2460-2018 预制钢筋混凝土化粪池
评论
0/150
提交评论