C语言财务管理系统(源代码)教案.doc
C语言程序的设计个人财务管理系统方案
程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1.需求分析 (1)2系统总框图和功能模块说明 (1)2.1系统总框图 (1)2.2功能模块说明 (1)3系统设计 (2)3.1主要结构体 (2)3.2主要功能函数 (2)4系统调试 (3)4.1、程序开始执行时系统的所显示的页面: (3)4.2、选择退出系统: (3)4.3、选择登陆,并且输入的和密码都正确: (3)4.4、用户输入的不正确: (4)4.5、用户输入的正确,密码不正确: (4)4.6、用户进行具体操作: (5)5总结 (6)6源程序清单 (6)1.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
2系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
C语言程序设计个人财务管理系统
程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制页脚内容1目录1.需求分析 (1)2系统总框图和功能模块说明 (2)2.1系统总框图 (2) (2)2.2功能模块说明 (2)3系统设计 (3)3.1主要结构体 (3)3.2主要功能函数 (3)4系统调试 (4)页脚内容24.1、程序开始执行时系统的所显示的页面: (4)4.2、选择退出系统: (4)4.3、选择登陆,并且输入的帐号和密码都正确: (5)4.4、用户输入的帐号不正确: (5)4.6、用户进行具体操作: (6)5总结 (7)6源程序清单 (7)页脚内容31.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
页脚内容12系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
c语言个人财务管理系统
个人财政支出管理付欣05计算机四班指导老师:梁新元一、问题描述及分析1ﻩ二、实验程序设计思想及功能描述1ﻩ3、主要函数模块得设计思想与具体实现......................................................................... 2三、实验程序测试 (4)1、程序开始执行时系统得所显示得页面:4ﻩ2、选择退出系统:5ﻩ3、选择登陆,并且输入得帐号与密码都正确:5ﻩ4、用户输入得帐号不正确:5ﻩ5、用户输入得帐号正确,密码不正确: (6)四、实验程序自我评价7ﻩ五、课程设计创新7ﻩ六、课程设计总结 (7)七、参考书目:7ﻩ八、实验程序源代码 (8)一、问题描述及分析编写一个个人财政支出管理系统,主要解决得问题就是作为一个系统而言,它所要面对不只就是某一个人而言,而就是要面对很多得用户、那么想要解决这一问题,就必须要求这个系统能够存储许多用户得基本信息与记录。
同时也要求系统能够对不同得用户得身份进行查找与验证。
在验证通过之后,在对其进行用户所要求得操作。
作为一个财政支出系统,那么就要求对于用户关于金钱得每一项操作都要有相应得记录,同时并允许用户对于每一条整体得记录进行操作,例如可以根据时间来查找某一确定日期就是否进行了收入或者支出得操作,也可以根据特定得需要来删除某一条整体得记录。
但不允许对每条记录得单项数据进行更改,因为不管就是收入还就是支出,所涉及得金额都就是固定得,时间也就是固定得,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大得空间来存储新得记录。
所以此程序就就是基于这个思想而编写出来得,基本满足了用户对于一个财政支出管理系统所要求得相关功能。
二、实验程序设计思想及功能描述根据前面对于编写一个个人财政支出管理系统得程序得问题描述与分析,确定了此程序得基本思想与相关功能。
1、基本思想首先定义一个结构体数组,这个数组得功能便就是用来所有用户得所有信息。
C语言程序设计个人财务管理系统
C语言程序设计个人财务管理系统个人财务管理系统是一款帮助个人进行财务管理和分析的软件,能够帮助用户记录、分类、统计和分析个人的收入和支出。
本文将介绍一个使用C语言编写的简单个人财务管理系统。
首先,我们需要定义几个结构体来表示财务记录和分类信息:```c//定义财务记录结构体struct financial_recordint id; // 编号int year; // 年份int month; // 月份int day; // 日期char type[20]; // 类型double amount; // 金额};//定义分类信息结构体struct categorychar name[20]; // 分类名称double total; // 总金额int count; // 记录数量};//定义财务管理系统结构体struct financial_management_systemstruct financial_record records[100]; // 财务记录数组struct category categories[10]; // 分类信息数组int record_count; // 记录数量};```接下来,我们可以实现几个基本的功能,如添加记录、删除记录、查询记录和分类汇总等:```c//添加财务记录void add_record(struct financial_management_system *system) printf("请输入年份:");scanf("%d", &(system->records[system->record_count].year));//省略其他输入信息的代码printf("请输入金额:");scanf("%lf", &(system->records[system->record_count].amount));system->record_count++;//删除财务记录void delete_record(struct financial_management_system*system, int id)for (int i = 0; i < system->record_count; i++)if (system->records[i].id == id)for (int j = i; j < system->record_count - 1; j++)system->records[j] = system->records[j + 1];}system->record_count--;break;}}//查询财务记录void query_record(struct financial_management_system system, int year, int month, int day)for (int i = 0; i < system.record_count; i++)if (system.records[i].year == year &&system.records[i].month == month &&system.records[i].day == day)printf("编号:%d\n", system.records[i].id);//输出其他信息的代码}}//分类汇总void summarize_category(struct financial_management_system system)for (int i = 0; i < system.record_count; i++)//查找分类信息是否存在int category_index = -1;for (int j = 0; j < 10; j++)if (strcmp(system.records[i].type, system.categories[j].name) == 0)category_index = j;break;}}//如果分类信息不存在,则添加分类信息if (category_index == -1)strcpy(system.categories[system.category_count].name, system.records[i].type);system.categories[system.category_count].count = 1;system.categories[system.category_count].total = system.records[i].amount;system.category_count++;} elsesystem.categories[category_index].count++;system.categories[category_index].total +=system.records[i].amount;}}for (int i = 0; i < system.category_count; i++)printf("分类:%s\t总金额:%lf\t记录数量:%d\n",system.categories[i].name,system.categories[i].total,system.categories[i].count);}```最后,我们可以编写主函数来完成用户和系统的交互:```cint maistruct financial_management_system system; system.record_count = 0;system.category_count = 0;while (1)printf("\n请选择操作:\n");printf("1. 添加记录\n");printf("2. 删除记录\n");printf("3. 查询记录\n");printf("4. 分类汇总\n");printf("0. 退出\n");int choice;scanf("%d", &choice);switch (choice)case 1:add_record(&system);break;case 2:printf("请输入要删除的记录编号:");int id;scanf("%d", &id);delete_record(&system, id);break;case 3:printf("请输入查询的日期(年月日):"); int year, month, day;scanf("%d %d %d", &year, &month, &day); query_record(system, year, month, day); break;case 4:summarize_category(system);break;case 0:return 0;default:printf("无效的操作!\n");break;}}```通过以上代码,我们实现了一个简单的个人财务管理系统。
C语言课程设计班级财务管理
C语言课程设计论文班级财务管理系统【设计目的】设计一个班级财务管理系统,该程序具有以下功能:(1)用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。
1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】{int number;double output;int month;int day;int year;int use;char name[50];struct output_info * next;}OutputLink,* Pointer2;int Select(void); //收入和支出管理选择函数void Insert1(Pointer1 * 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);gets(M);if(strcmp(m,M)==0){printf("登陆成功!!\n");printf("正为你转接,请稍候。
\n");Sleep(1000);if(sum==1310321109||sum==1310321108||sum==1310321107||sum==1310321127||sum==1310321132) {printf("★**************************************************************************★\n");printf("★*********************欢迎使用班级财务管理系统(管理员版)*******************★\n");printf(" ★**************************************************************************★\n\n\n");Sleep(1000);system("cls");do{printf_message1();scanf("%d",&j);switch(j){case 1: k=Select();elseprintf("错误选择!\n\n\n\n");break;case 4: k=Select();if(k==1)Delete1(&Head1);elseif(k==2)Delete2(&Head2);elseprintf("错误选择!\n\n\n\n");break;case 5: k=Select();if(k==1)Show1(Head1);elseif(k==2)Show2(Head2);elseprintf("错误选择!\n\n\n\n");break;★户★system("cls");do{menu();scanf("%d",&j);switch(j){case 1: k=Select();if(k==1)Insert1(&Head1);elseif(k==2)Insert2(&Head2);elseprintf("错误选择!\n\n\n\n");break;case 2: k=Select();if(k==1)Search1(Head1);elseif(k==2)default:printf("错误选择!\n\n\n\n");break;}}while(j!=0);}return 0;}else printf("密码错误!请查证后再来!!\n");}else printf("用户名不存在!请验证后再输!!\a\n");return 0;}void printf_message1(){ printf(" ★**************************************************************★\n"); printf(" *******************★欢迎使用财务管理系统★*******************\n");printf(" **************************************************************\n");printf(" \n");printf(" ☆1 . 添加财务信息 \n");printf(" ☆2 . 查询财务信息 \n");printf(" ☆3 . 修改财务信息 \n");printf(" ★**************************************************************★\n"); printf("◆请选择(0-6):\n");}int Select(void) //第二次选择的函数{int w;printf(" ★**************************************************************★\n");printf(" *******************★欢迎使用财务管理系统★******************* \n");printf(" ************************************************************** \n");printf(" \n");printf(" ☆1 . 收入 \n");printf(" ☆2 . 支出 \n");printf(" \n");printf(" ★**************************************************************★\n"); printf("◆◆◆请选择(1-2):\n");scanf("%d",&w);return(w);}void Insert1(Pointer1 *Head1) //添加收入if(q==NULL)*Head1=r;elseq->next=r;r->number=in_number;printf("请输入收入金额(单位:元):");scanf("%lf",&r->income);printf("请输入收入时间:\n");printf("年:");scanf("%d",&r->year);printf("月:");scanf("%d",&r->month);printf("日:");scanf("%d",&r->day);printf("请输入您的姓名:");scanf("%s",r->name);printf("\n\n\n\n");Sleep(300);}void Insert2(Pointer2 *Head2) //添加支出if(q==NULL)*Head2=r;elseq->next=r;r->number=in_number;printf("请输入支出金额(单位:元):");scanf("%lf",&r->output);printf("请输入支出时间:\n");printf("年:");scanf("%d",&r->year);printf("月:");scanf("%d",&r->month);printf("日:");scanf("%d",&r->day);printf("请输入用途:");printf("<1:吃喝(eat) 2:娱乐(amusement) 3:学习(studying) 4:其它(other)>\n"); printf("◆请选择(1-4):\n");scanf("%d",&r->use);printf("请输入使用人名称:");scanf("%s",r->name);Sleep(300);else p=p->next;}if(flag){printf("没有查到\n");printf("\n\n\n\n");getchar();}}void Search2(Pointer2 Head2) //查询支出{void 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);printf("支出金额:%lf元\n",p->output);printf("支出时间:\n");printf("年:%d,月:%d,日:%d\n",p->year,p->month,p->day);if(p->use==1)printf("用途:吃喝\n");elseif(p->use==2)printf("用途:娱乐\n");elseif(p->use==3)printf("用途:学习\n");elseprintf("用途:其它\n");printf("使用人姓名:%s",p->name);printf("\n按任意键继续!\n");getchar();flag=0;}else p=p->next;}if(flag)else if(p->use==3)printf("用途:学习\n");elseprintf("用途:其它\n");printf("使用人姓名:%s",p->name);printf("\n\n\n\n");getchar();flag=0;}else p=p->next;}if(flag)printf("没有查到\n");}void Update1(Pointer1 Head1) //修改收入{int flag=1;int number;Pointer1 p;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);printf("请输入新的支出时间:\n");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();}{*Head2=p->next;free(p);}else{q->next=p->next;free(p);}flag=0;printf("记录已删除!!");printf("\n记录已删除,按任意键继续!\n"); getchar();}else{q=p;p=p->next;}}if(flag)printf("没有找到可以删除的数据!\n");}void Show1(Pointer1 Head1) //显示收入{Pointer1 p;p=Head1;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");elseprintf("用途:其它\n");printf("使用人姓名:%s",p->name);printf("\n");p=p->next;}Sleep(1000);printf("\n按任意键继续!\n");getchar();}void Count1(Pointer1 Head1) //统计收入{int j;int b;printf("请输入您要统计的月份:"); scanf("%d",&j);switch(j){case 1:printf("该月份总计为:%lf\n",sum1);break;case 2:printf("该月份总计为:%lf\n",sum2);break;case 3:printf("该月份总计为:%lf\n",sum3);break;case 4:printf("该月份总计为:%lf\n",sum4);break;case 5:printf("该月份总计为:%lf\n",sum5);break;case 6:printf("该月份总计为:%lf\n",sum6);break;case 7:printf("该月份总计为:%lf\n",sum7);break;case 8:printf("该月份总计为:%lf\n",sum8);break;case 9:printf("该月份总计为:%lf\n",sum9);break;case 10:printf("该月份总计为:%lf\n",sum10);break;case 11:printf("该月份总计为:%lf\n",sum11);break;case 12:printf("该月份总计为:%lf\n",sum12);break;default:printf("错误选择!\n");break;}printf("请输入您要统计的学期:\n");printf("<1:上学期 2:下学期 3:退出>\n");printf("◆请选择(1-3):\n");scanf("%d",&b);default:printf("错误选择!\n");break;}Sleep(1000);printf("\n按任意键继续!\n");getchar();}void Counter_use(Pointer2 Head2) //按用途统计支出{int b;Pointer2 p;double sum1,sum2,sum3,sum4;sum1=sum2=sum3=sum4=0.0;p=Head2;while(p!=NULL){if(p->use==1)sum1=sum1+p->output;else if(p->use==2)sum2=sum2+p->output;else if(p->use==3)sum3=sum3+p->output;elsep=Head2;while(p!=NULL){switch(p->month){case 1:sum1=sum1+p->output;break; case 2:sum2=sum2+p->output;break; case 3:sum3=sum3+p->output;break; case 4:sum4=sum4+p->output;break; case 5:sum5=sum5+p->output;break; case 6:sum6=sum6+p->output;break; case 7:sum7=sum7+p->output;break;case 8:sum8=sum8+p->output;break;case 9:sum9=sum9+p->output;break;case 10:sum10=sum10+p->output;break; case 11:sum11=sum11+p->output;break; case 12:sum12=sum12+p->output;break; default:printf("错误选择!\n");break; }p=p->next;}printf("请输入您要统计的月份:");scanf("%d",&j);default: printf("错误选择!\n");break; }}【设计体会】通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
C语言程序设计个人财务管理系统
程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1.需求分析 (1)2系统总框图和功能模块说明 (1)2.1系统总框图 (1)2.2功能模块说明 (1)3系统设计 (3)3.1主要结构体 (3)3.2主要功能函数 (3)4系统调试 (3)4.1、程序开始执行时系统的所显示的页面: (3)4.2、选择退出系统: (3)4.3、选择登陆,并且输入的帐号和密码都正确: (4)4.4、用户输入的帐号不正确: (4)4.5、用户输入的帐号正确,密码不正确: (4)4.6、用户进行具体操作: (5)5总结 (6)6源程序清单 (6)1.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
2系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
c语言课程设计个人财务
c语言课程设计个人财务一、教学目标本节课的教学目标是使学生掌握C语言编程的基本方法,能够运用C语言编写简单的个人财务管理系统。
具体目标如下:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,为编写个人财务管理系统打下基础。
2.技能目标:培养学生运用C语言进行编程的能力,使其能够独立完成个人财务管理系统的开发。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,提高其主动学习和解决问题的能力,使其认识到计算机编程在实际生活中的应用价值。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型:介绍C语言的基本语法规则、数据类型及其运算。
2.控制结构:讲解条件语句和循环语句的用法,为编写个人财务管理系统提供逻辑支持。
3.函数:介绍函数的定义、声明和调用,使学生能够理解模块化编程的思想。
4.个人财务管理系统的设计与实现:引导学生运用所学知识,分析并设计个人财务管理系统,最后通过编程实现。
三、教学方法为了提高教学效果,本节课将采用以下几种教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构等知识。
2.案例分析法:通过分析实际案例,使学生了解个人财务管理系统的设计过程,提高其编程能力。
3.实验法:安排课堂实验,让学生动手编写代码,巩固所学知识。
4.讨论法:学生进行小组讨论,培养其合作精神和解决问题的能力。
四、教学资源为了支持教学内容的传授和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习材料。
2.参考书:提供一些经典的C语言编程实例,帮助学生更好地理解编程技巧。
3.多媒体资料:制作课件、演示文稿等,以便于生动、形象地展示教学内容。
4.实验设备:提供计算机、编程环境等,让学生能够进行实际操作。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用以下几种评估方式:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解其对C语言编程的掌握程度。
c语言账单管理系统课程设计
c语言账单管理系统课程设计一、教学目标本课程旨在通过学习C语言账单管理系统的设计与实现,让学生掌握C语言编程的基本技能,理解程序设计的基本流程,培养其问题解决能力。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用。
3.学习结构体和文件操作等相关知识。
4.能够运用C语言进行简单的程序设计。
5.学会使用结构体设计数据模型。
6.掌握文件读写操作,实现数据的持久化存储。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和好奇心。
2.培养学生独立思考、解决问题的能力。
3.培养学生团队协作的意识和精神。
二、教学内容本课程的教学内容依据C语言账单管理系统的设计与实现进行,详细的教学大纲如下:1.C语言基础知识:数据类型、运算符、控制语句。
2.函数:定义、声明、调用。
3.数据结构:数组、结构体。
4.文件操作:文件的打开、读写。
5.账单管理系统的设计与实现:需求分析、系统设计、编码实现、测试。
三、教学方法为了提高教学效果,我们将采用多种教学方法相结合的方式进行教学:1.讲授法:用于讲解C语言的基础知识和编程概念。
2.案例分析法:通过分析具体的账单管理案例,让学生理解并掌握系统的实现。
3.实验法:让学生通过动手编写代码,加深对知识点的理解和运用。
4.讨论法:分组讨论,培养学生的团队协作能力和问题解决能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》。
2.参考书:《C Primer Plus》、《C和指针》。
3.多媒体资料:教学PPT、视频教程。
4.实验设备:计算机、网络环境。
以上教学资源将有助于学生更好地学习和掌握C语言账单管理系统的设计与实现。
五、教学评估本课程的评估方式将分为以下几个部分,以全面、客观、公正地评估学生的学习成果:1.平时表现:包括课堂参与度、小组讨论、提问等,占总成绩的20%。
2.作业:包括编程练习和小论文等,占总成绩的30%。
c语言课程设计财务
c语言课程设计财务一、教学目标本章节的教学目标是使学生掌握C语言的基本语法和编程技巧,能够运用C语言进行简单的财务软件开发。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据类型。
–了解财务软件开发的基本流程。
2.技能目标:–能够使用C语言编写简单的财务计算程序。
–能够阅读和理解财务软件的代码。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情。
–培养学生具备良好的团队合作精神和创新意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型和财务软件开发流程。
具体内容如下:1.C语言的基本语法和数据类型。
2.财务软件开发的基本流程。
3.使用C语言编写简单的财务计算程序。
三、教学方法为了达到本章节的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法和数据类型,使学生掌握基础知识。
2.案例分析法:分析财务软件开发的实际案例,使学生了解财务软件开发的基本流程。
3.实验法:引导学生动手编写财务计算程序,培养学生的实际操作能力。
四、教学资源为了支持本章节的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言编程实例解析》。
3.多媒体资料:财务软件开发案例视频教程。
4.实验设备:计算机、编程环境。
五、教学评估为了全面、客观地评估学生在C语言财务课程中的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与度、提问回答和团队协作表现,评估其学习态度和积极性。
2.作业:布置与课程内容相关的编程作业,评估学生对C语言语法和编程技巧的掌握程度。
3.考试:安排期末考试,测试学生对课程知识的全面理解和运用能力。
六、教学安排本章节的教学安排如下:1.教学进度:按照教材《C语言程序设计》的章节顺序,合理安排每个章节的教学内容和教学时间。
2.教学时间:每周安排2课时,共计10周完成本章节的教学任务。
3.教学地点:计算机实验室,以便学生进行实验和实践操作。
C语言财务管理系统(源代码)之欧阳道创编
#include"stdio.h"#include"stdlib.h"#define MAX_NAME 11#define MAX_DETAIL 21 #define MENU_COUNT 9 #define DATA_FILE "fa.dat" typedef wnum_fi_type{income=1,payout=-1}fi_type;typedef struct_fi_info{int year;int month;fi_type type;char name[MAX_NAME]; float money;char detail[MAX_DETAIL]; }fi_info;typedef struct_fi_data{fi_info info;struct_fi_data *next;}fi_data;void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_payout();void count_total();void quit();void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void input_info(fi_info *info);void show_info(fi_data *p[],int count);fi_data *head;char menu[]="======================================== =======\n""| 家庭财务管理系统 |\n""+---------------------------------------------+\n""| 收入管理 |\n""| 1 添加收入 |\n""| 2 查询收入明细 |\n""| 3 删除收入 |\n""| 4 修改收入 |\n""| 支出管理 |\n""| 5 添加支出 |\n""| 6 查询支出明细 |\n""| 7 删除支出 |\n""| 8 修改支出 |\n""| 统计 |\n""| 9 统计总收入总支出 |\n""----------------------------------------------+\n""| 0 退出系统 |\n""======================================== ======+\n";void(*menu_fun[])()={quit,add_income,search_income,delete_income,update_income,add_payout,search_payout,delete_payout,update_payout,count_total};int main(){int selected=0;initialize();while(selected>=0 && selected<=MENU_COUNT){system("cls");printf(menu);printf(">请选择要进行的操作(%d - %d):",0,MENU_COUNT);if(scanf("%d",&selected)!=1||selected<0||selected>MENU _COUNT){printf(">输入错误!请选择[ %d - %d]之间的数字!按任意键重试...",0,MENU_COUNT);fflush(stdin);getchar();}else{menu_fun[selected]();}selected=0;}}void add_income(){fi_data *p=(fi_data *)malloc(sizeof(fi_data)); memset(p,0,sizeof(fi_data));p->next=NULL;input_info(&(p->info));p->info.type=income;if(head==NULL){head=p;}else{get_last(head)->next=p;}}void search_income(){search_data(income);}void delete_income(){delete_data(income);}void update_income(){update_data(income);}void add_payout(){fi_data *p=(fi_data*)malloc(sizeof(fi_data)); memset(p,0,sizeof(fi_data));input_info(&(p->info));p->info.type=payout;if(head==NULL){head=p;}else{get_last(head)->next=p;}}void search_payout(){search_data(payout);}void delete_payout(){delete_data(payout);}void update_payout(){update_data(payout);}void count_total(){float total_income=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL){if(p->info.type==income){total_income+=p->info.money;}else{total_payout+=p->info.money;}p=p->next;}printf("+---------+---------+---------+\n");printf("| 合计收入 | 合计支出 | 结余 |\n");printf("+---------+---------+---------+\n");printf("|%12.2f|%12.2f|%12.2f|\n", total_income, total_payout,total_income - total_payout);printf("+---------+---------+---------+\n");printf(">按任意键继续返回主菜单...");fflush(stdin);getchar();}void search_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;fi_data *result[9]={NULL};int count=0;char input=' ';while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){printf(">输入错误。
C语言课程设计家庭财务管理系统
HUNAN UNIVERSITY程序设计训练报告课程名称家庭财务管理系统学生姓名学生学号专业班级指导老师起止时间湖南大学课程训练设计报告家庭财务管理系统摘要本报告介绍了一个运用C语言知识和Microsoft Visual c++ 6.0创建的用于家庭各成员财务情况管理的家庭财务管理系统。
在该系统中创建了包含增加,删除,修改,查找,浏览的功能总列表,包含了输入家庭成员收入信息情况,增加信息,删除信息,修改信息,创建姓名查找和编号查询便于用户查找个人财务情况,创建合计排序浏览用户可从总体上浏览全家庭财务信息情况。
目录1 绪论 (1)2 问题定义 (2)3 可行性分析 (2)4 系统需求 (4)5 方案设计分析 (5)6 系统运行情况 (14)7 系统维护 (15)8 致谢 (15)1 绪论家庭财务管理对于每一个家庭来说有着重要的意义,随着科技的发达,财务的管理由原先的手写账本发展到现今的电脑系统输入并统计,不仅大大减少了时间与精力,也是财务管理更系统化,便捷化,清晰化,减少金钱上的缺失。
家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量本报告设计的家庭财务管理系统主要是负责给家庭成员提供了一个在Windows操作系统上运行的管理平台,家庭财务管理者可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改,查找等管理操作,还可以对全家庭财务合计排序浏览。
C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
对于我们大学生来说,学习这样一门“C程序设计教程”更是必要的。
本课程设计“家庭财务管理系统”就是通过学习《C程序设计》采用Visual C++作为编译环境,是程序编译和运行的。
本系统的总体思想基于结构化的程序设计。
应用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的增、删、改、查等典型的管理功能。
C语言程序设计个人财务管理系统
步调安排工程锻炼报告之阳早格格创做C谈话步调安排部分财务管造系统课程称呼 C谈话步调安排工程锻炼姓名院(系)疑息科教取技能教院博业班级教号指挥西席教务处造目录2系统总框图战功能模块证明13系统安排24系统调试34.1、步调启初真止时系统的所隐现的页里:34.2、采用退出系统:34.3、采用登陆,而且输进的帐号战暗号皆精确:3 4.4、用户输进的帐号没有精确:44.5、用户输进的帐号精确,暗号没有精确:44.6、用户举止简直支配:55归纳66源步调浑单6编写一个部分财务开销管造系统,主要办理的问题是动做一个系统而止,它所要里对付没有不过某一部分而止,而是要里对付很多的用户.那么念要办理那一问题,便必须央供那个系统不妨保存许多用户的基础疑息战记录.共时也央供系统不妨对付分歧的用户的身份举止查找战考证.正在考证通过之后,正在对付其举止用户所央供的支配.动做一个财务开销系统,那么便央供对付于用户闭于款项的每一项支配皆要有相映的记录,共时并允许用户对付于每一条完齐的记录举止支配,比方不妨根据时间去查找某一决定日期是可举止了支进大概者开销的支配,也不妨根据特定的需要去简略某一条完齐的记录.但是没有允许对付每条记录的单项数据举止变动,果为没有管是支进仍旧开销,所波及的金额皆是牢固的,时间也是牢固的,所以系统没有允许用户对付其举止支配.除此除中,还必须有脚够大的空间去保存新的记录.所以此步调便是鉴于那个思维而编写出去的,基础谦脚了用户对付于一个财务开销管造系统所央供的相闭功能.2系统总框图战功能模块证明功能模块证明(1)old_record( ):此函数由系统自止调用,效率是将所有用户疑息存进系统.(2)void save( ): 此函数的效率是将结构体数组中的疑息写进文献保存,由系统调用.(3)load( ):此函数的效率是将结构体数组中写进文献的疑息读出,由系统调用.(4)lookup_accounts():此函数的效率是将用户输进的帐号取系统中的所有帐号举止对付比,查看系统中是可有此帐号.(5)check_code( ):此函数是效率是正在系统查询到了帐号之后,对付用户输进的帐号战暗号举止考验,瞅是可相对付应.(6)print_message():此函数的功能是正在系统查看了用户输进的帐号战暗号之后,如果用户通过了系统的查看,正在此隐现用户可睹的基础疑息.(7)find_record():此函数的效率是根据用户输进的日期举止查找支配.(8)insert_record():此函数的功能是正在记录中减少一条新的记录,那个记录由用户输进.(9)del_record():此函数的功能是根据用户的输进的位子,将相映位子的记录简略.(10)sum_num():此函数的功能是估计所有支进战开销的总战,估计局部的支进的总合,估计局部输出的总合.(11)挨印输出记录的函数:正在本步调中一公有三个挨印输出记录的函数,分别为all_print()、acc_print()、pay_print()那三个函数.它们的功能依次是挨印输出局部记录,挨印输出输进记录,挨印输出开销记录.(12)mian( ):正在主函数中,不妨根据用户的采用去支配系统允许用户使用的功能,也不妨随时退出那个系统.3系统安排主要结构体部分疑息账户疑息主要功能函数old_record( ) //将所有用户疑息存进系统print_message() //隐现用户可睹的基础疑息sum_num() //估计所有支进战开销的总战all_print()、acc_print()、pay_print() //挨印输出局部记录,挨印输出输进记录,挨印输出开销记录4系统调试4.1、步调启初真止时系统的所隐现的页里:4.2、采用退出系统:4.3、采用登陆,而且输进的帐号战暗号皆精确:4.4、用户输进的帐号没有精确:4.5、用户输进的帐号精确,暗号没有精确:4.6、用户举止简直支配:5归纳本步调正在编写是,主要便是鉴于用户的角度去分解该怎么样安排此步调,战编写功能模块的.正在编写步调时,所有的数据皆是对付结构体举止的支配,正在此历程中,尔创造了自己正在对付指针支配的时间,更加是对付指背结构体数组的指针战指背结构体的指针的支配皆没有敷流利.但是正在编写完此步调之后,尔感觉自己对付语法的应用有了明隐的普及.6源步调浑单#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1struct record{char date[20];char operate[20];int num;};struct list_record{char account[20];char code[20];char name[20];int rec_len;struct record rec[max];}r[max];//系统本罕见据,用户没有成知int old_record( struct list_record r[]){int i;for(i=0;i<3;i++)r[i].rec_len=4;strcpy(r[0].account,"1001");strcpy(r[1].account,"1002");strcpy(r[2].account,"1003");strcpy(r[0].code,"111111");strcpy(r[1].code,"222222");strcpy(r[2].code,"333333");strcpy(r[0].name ,"wang");strcpy(r[1].name ,"li");strcpy(r[2].name ,"zhang");strcpy(r[0].rec[0].date,"07-01-01"); strcpy(r[0].rec[1].date,"07-02-01"); strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in");strcpy(r[0].rec[1].operate,"out");strcpy(r[0].rec[2].operate,"in");strcpy(r[0].rec[3].operate,"out");strcpy(r[1].rec[0].operate,"out");strcpy(r[1].rec[1].operate,"in");strcpy(r[1].rec[2].operate,"out");strcpy(r[1].rec[3].operate,"in");strcpy(r[2].rec[0].operate,"in");strcpy(r[2].rec[1].operate,"out");strcpy(r[2].rec[2].operate,"in");strcpy(r[2].rec[3].operate,"out");r[0].rec[0].num=3000;r[0].rec[1].num=-1500;r[0].rec[2].num=2500;r[0].rec[3].num=-1000;r[1].rec[0].num=-3000;r[1].rec[1].num=5000;r[1].rec[2].num=-1000;r[1].rec[2].num=2000;r[2].rec[0].num=1000;r[2].rec[1].num=-1500;r[2].rec[2].num=3000;r[2].rec[2].num=-500;return ok;}//将数据写进文献void save( ){FILE *fp;int i;if((fp=fopen("wenjian","wb"))==null){printf("can not open the file.\n");return;}for(i=0;i<max;i++)if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n");fclose(fp);}//文献读出void load( ){FILE *fp;int i;if((fp=fopen("wenjian","rb"))==null){printf("can not open infile.\n");return;}for(i=0;i<max;i++)if(fread(&r[i],sizeof(struct list_record),1,fp)!=1){if(feof(fp))(fclose(fp));return;}fclose(fp);}//将用户输进的帐号取系统中本有帐号比较,查找用户帐号int lookup_accounts( struct list_record r[],char acc[]){int i;for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0){return ok;}printf("帐号没有存留,请沉新输进!\n");return null;}//查看暗号函数struct list_record check_code(struct list_record r[],char acc[],char c[]){int i;struct list_record a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i++){strcpy(a.rec[i].date,"0");strcpy(a.rec[i].operate,"0");a.rec[i].num=0;}for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0)if(strcmp(r[i].code,c)==0)return r[i];printf("the code is wrong,please input again!\n"); return a;}//隐现用户基础疑息void print_message( struct list_record *p) {printf("姓名:%s\n",p->name);printf("帐号:%s\n",(*p).account);}//根据用户输进的日期,查找记录int find_record( struct list_record *p,char d[]) {int i;for(i=0;i<(*p).rec_len;i++){{printf("date operate money\n");printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d \n",(*p).rec[i].num);return ok;}}if(i==(*p).rec_len)printf("the date is not exit!\n");return null;}//拔出函数,根据用户输进的疑息,减少记录int insert_record( struct list_record *p,struct record *p1,int lop) {int i;if((lop<1)||(lop>((*p).rec_len+1))){printf("the position is wrong.\n");return 0;}else{for(i=(*p).rec_len;i>lop-1;i--){strcpy((*p).rec[i].date,(*p).rec[i-1].date);strcpy((*p).rec[i].operate,(*p).rec[i-1].operate);(*p).rec[i].num=(*p).rec[i-1].num;}strcpy((*p).rec[i].operate,(*p1).operate);(*p).rec[i].num=(*p1).num;(*p).rec_len++;return ok;}}// 简略记录函数int del_record( struct list_record *p,int lop2){int i;if((lop2<1)||(lop2>(*p).rec_len)){printf("the position is wrong.\n");return null;}else{for(i=lop2-1;i<(*p).rec_len-1;i++){strcpy((*p).rec[i].date,(*p).rec[i+1].date);strcpy((*p).rec[i].operate,(*p).rec[i+1].operate); (*p).rec[i].num=(*p).rec[i+1].num;}(*p).rec_len--;return ok;}}//输出局部记录函数void all_print( struct list_record *p){ int i;printf("date operate num\n"); for(i=0;i<(*p).rec_len;i++){ printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num); printf("\n");}}//估计总的钱数int sum_num( struct list_record *p) {int i;int sum=0;int sum_in=0;int sum_out=0;for(i=0;i<(*p).rec_len;i++){sum+=(*p).rec[i].num;if((*p).rec[i].num>0)sum_in+=(*p).rec[i].num;if((*p).rec[i].num<0)sum_out+=(*p).rec[i].num;}printf("总金额为: %d\n",sum);printf("总支进为: %d\n",sum_in); printf("总开销为: %d\n",sum_out); return ok;}//输出支进记录int acc_print( struct list_record *p){int i;int sum_acc=0;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++)if((*p).rec[i].num>0){sum_acc+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总支进金额为: %d\n",sum_acc); return ok;if(sum_acc==0)printf("there is no account.\n");return null;}//输出开销记录int pay_print( struct list_record *p){int i;int sum_pay=0;printf("date operate num\n");for(i=0;i<p->rec_len;i++)if((*p).rec[i].num<0){sum_pay+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d ",(*p).rec[i].num);printf("\n");}printf("总的开销为: %d\n",sum_pay);return ok;if(sum_pay==0)printf("there is no payout.\n");return null;}void main( ){int j=0,n=0;int x,k,lop1,lop2;char data1[20];char accou[20],cod[20];struct record *p0;struct record a;struct list_record b;struct list_record *p;b.rec_len=0;p0=&a;old_record(r);save( );load( );printf(" 欢迎使用部分财务开销管造系统!\n");printf("------------------------------------------------------------\n");printf("| |\n");printf("| 1、登陆系统 |\n");printf("| 2、退出系统 |\n");printf("| |\n");printf("------------------------------------------------------------\n");scanf("%d",&x);if(x==0)printf(" 感动您使用本系统,再睹!\n");else{do{printf("请输进帐号:"); //while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou)){ printf("请输进暗号:"); //while(j<3);scanf("%s",cod);b=check_code(r,accou,cod);if(b.rec_len==0){do{b=check_code(r,accou,cod); //while(n>3)scanf("%s",cod);n++;}while(n<3);if(n=3)printf("您的暗号没有精确,请退出系统,开开使用,再睹!\n"); break;}else{printf("---------------请采用您要举止的支配-------------------\n"); printf("| |\n"); //while(j<3);printf("| 2、查找记录 |\n");printf("| 3、减少记录 |\n");printf("| 4、简略记录 |\n");printf("| 5、输出所有记录 |\n");printf("| 6、输出所有支进记录 |\n");printf("| 7、输出所有开销记录 |\n");printf("| |\n");printf("-----------------------------------------------------|\n");p=&b;print_message(p);do{scanf("%d",&k); //while(k>0)if(k==10)printf("感动您使用本系统,再睹!\n");if(k==2){printf("请输进您要查询的日期:");scanf("%s",data1);find_record(p,data1);}if(k==3){printf("请输进您要拔出的位子:\n");scanf("%d",&lop1);printf("请输进您要增加的记录:\n");printf("日期:");scanf("%s",p0->date);printf("支配:");scanf("%s",p0->operate);printf("金额:");scanf("%d",&(p0->num));insert_record(p,p0,lop1);}if(k==4){printf("请输进您要简略的记录的位子:\n"); scanf("%d",&lop2);del_record(p,lop2);}if(k==5){all_print(p);sum_num(p);}if(k==6)acc_print(p);if(k==7)pay_print(p);}while(k>0);break;}}j++;}while(j<3);printf("感动您使用本系统,再睹!\n");}}(2)量化评分表请教死将底下结果评比表复造到报告的末尾一页(单独一页).。
C语言课程设计——家庭财务管理系统
FILE *fp;
int i;
if((fp=fopen("peoplelist4。txt”,"r"))!=NULL)
{
fscanf(fp,”%d\n",&n);
for(i=0;i〈n;i++)
fscanf(fp,"%s%s%s\n",peo[i]。username,peo[i].code,peo[i]。flag);
{
fprintf(fp,”%d\n",n);
for(i=0;i<n;i++)
fprintf(fp,"%s %s %s\n”,peo[i]。username,peo[i].code,peo[i].flag);
}
fclose(fp);
fp=fopen("thinglist4。txt”,"w");
{
fprintf(fp,”%d\n”,m);
for(i=0;i〈m;i++)
fprintf(fp,"%s %d %d %d %d\n",thi[i]。name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
}
fclose(fp);
return 0;
}
int carry() //将数据从文件中读出
fprintf(fp,”%s %d %d %d %d\n”,thi[i]。name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
fclose(fp);
printf(”\n······\n删除成功。\n”);
c语言个人财务管理系统[1]
小我财务支出治理付欣 05盘算机四班指点先生:梁新元一.问题描写及剖析1二.试验程序设计思惟及功效描写13.重要函数模块的设计思惟和具体实现2三.试验程序测试41.程序开端履行时体系的所显示的页面:42.选择退出体系:53.选择登陆,并且输入的帐号和暗码都准确:54.用户输入的帐号不准确:55.用户输入的帐号准确,暗码不准确:6四.试验程序自我评价7五.课程设计创新7六.课程设计总结7七.参考书目:7八.试验程序源代码8一.问题描写及剖析编写一个小我财务支出治理体系,重要解决的问题是作为一个体系而言,它所要面临不只是某一小我而言,而是要面临很多的用户.那么想要解决这一问题,就必须请求这个体系可以或许存储很多用户的根本信息和记载.同时也请求体系可以或许对不合的用户的身份进行查找和验证.在验证经由过程之后,在对其进行用户所请求的操纵.作为一个财务支出体系,那么就请求对于用户关于金钱的每一项操纵都要有响应的记载,同时并许可用户对于每一条整体的记载进行操纵,例如可以依据时光来查找某一肯定日期是否进行了收入或者支出的操纵,也可以依据特定的须要来删除某一条整体的记载.但不许可对每笔记载的单项数据进行更改,因为不管是收入照样支出,所涉及的金额都是固定的,时光也是固定的,所以体系不许可用户对其进行操纵.除此之外,还必须有足够大的空间来存储新的记载.所以此程序就是基于这个思惟而编写出来的,根本知足了用户对于一个财务支出治理体系所请求的相干功效.二.试验程序设计思惟及功效描写依据前面临于编写一个小我财务支出治理体系的程序的问题描写和剖析,肯定了此程序的根本思惟和相干功效.1、根本思惟起首界说一个构造体数组,这个数组的功效等于用来所有效户的所有信息.它的成员为每个用户的帐号(account).暗码(code).姓名(name).记载(record rec[max]),以及记载的条数(rec_len).个中记载(record rec[max])这个成员本身也是一个构造体数组.它包含了用户所有的记载(record),并且依据用户的操纵,记载这个成员变量也会有所跟改,例如假如拥戴增长了一笔记载,那么这一笔记载就会存储在此成员变量中.除了这个成员变量是动态变更之外,记载的条数(rec_len)也会依据用户的操纵进行变更,例如假如用户增长了一笔记载,则rec_len就会自加1,假如用户删除了一笔记载,则rec_len就会自减1.记载(record rec[max])这个成员变量是今后函数中操纵的重要内容.除了这两个成员变量之外,其它的成员变量则不会被转变,体系只许可用户对其进行拜访,但不许可进行操纵,因为这几个成员变量的感化主如果用来验证用户的身份用的,所以不成以更改.个中的暗码(code)甚至只能别体系挪用,而不克不及对用户进行显示的,也就是说暗码(code)对于用户是不成预知的,如许做的目标是为了体系自身的安然性,以免用户的信息被其他人看到.这就是这个构造体数组的功效和根本成员变量及各个成员变量的功效.界说了构造体数组之后,起首要做的就是要把所有的记载都存入这个构造体数组中,以便利用户的操纵.所以在main函数中有体系自行挪用了old_record这个函数来存入信息.在此之落后行的操纵等于让用户选择所要进行的是登陆体系的操纵照样退出体系的操纵.假如选择登陆,则要输入帐号和暗码.之后由体系来检讨帐号的消失性和暗码的准确性.假如这两项都经由过程了体系的检讨,那么用户即可以进行具体记载的操纵了.这等于这个程序的根本设计思惟.2.各个函数模块的功效(1)old_record( ):此函数由体系自行挪用,感化是将所有效户信息存入体系.(2)void save( ): 此函数的感化是将构造体数组中的信息写入文件存储,由体系挪用.(3)load( ):此函数的感化是将构造体数组中写入文件的信息读出,由体系挪用.(4)lookup_accounts():此函数的感化是将用户输入的帐号与体系中的所有帐号进行比较,检讨体系中是否有此帐号.(5) check_code( ):此函数是感化是在体系查询到了帐号之后,对用户输入的帐号和暗码进行磨练,看是否相对应.(6)print_message():此函数的功效是在体系检讨了用户输入的帐号和暗码之后,假如用户经由过程了体系的检讨,在此显示用户可见的根本信息.(7)find_record():此函数的感化是依据用户输入的日期进行查找操纵.(8)insert_record():此函数的功效是在记载中增长一条新的记载,这个记载由用户输入.(9)del_record():此函数的功效是依据用户的输入的地位,将响应地位的记载删除.(10)sum_num():此函数的功效是盘算所有收入和支出的总和,盘算全体的收入的总合,盘算全体输出的总合.(11)打印输出记载的函数:在本程序中一共有三个打印输出记载的函数,分离为all_print().acc_print ().pay_print()这三个函数.它们的功效依次是打印输出全体记载,打印输出输入记载,打印输出支出记载.(12)mian( ):在主函数中,可以依据用户的选择来操纵体系许可用户运用的功效,也可以随时退出这个体系.3.重要函数模块的设计思惟和具体实现(1)void save( )函数和load( )函数.这两个函数的功效是在体系挪用了old_record( )这个函数之后,构造体内就有了所有效户的所有信息.Save( )函数的感化是将所有的信息都存入文件中,便于数据的保管和读取.Load ( )函数的感化则是把存入的文件中的信息读出来.这两个函数所涉及的常识点为文件的读入和写出.主如果freadhe和fwrite两个函数的运用.它们的一般挪用情势为:fread(buffer,size,count,fp);fwrite(buffer,size ,count,fp);个中:Buffer:是一个指针,对fread来说,它是读入数据的存放地址.对fwrite来说,是要输出数据的地址.Size:要读写的字节数.Count:要进行读写若干个size字节的数据项.Fp;文件型指针.挪用这两个函数之后,假如挪用成功,则函数返回值为count 的值,即输入或输出数据项的完全个数.(2)lookup_accounts()函数和 check_code( )函数:这两个函数的功效主如果用来查对用户的身份.体系先磨练的是axxounts这个函数.依据用户输入的帐号与体系中所有的帐号进行比较,查找看是否有雷同的.假如找到了,则进行对暗码进行磨练,看暗码与帐号是否对应.在磨练帐号的时刻,假如用户输入的帐号在体系中不消失,体系则会给出提醒请求用户从新输入.但假如用户输入了三次体统都找不到帐号的时刻,体系则会强迫请求用户退出体系,此时则显示停止语的迎接词.而假如帐号找到了,但用户输入的暗码与原有暗码不一致,体系也会给出提醒信息请求用户再次输入.同样的,假如用户输入三次体统都磨练到不是准确的暗码的时刻,体系则会强迫请求用户退出体系,此时则显示停止语的迎接词.在这两个函数中重要用到的常识点就是对字符串的相干操纵.假如帐号和暗码都经由过程磨练之后,此函数则将返回struct list_record类型的数据.字符串处理的函数重要有以下几个:puts函数:其一般情势为puts(字符数组).其感化是将一个字符串输出到终端.Gets函数:其一般情势为gets (字符数组).其感化是从终端输入一个字符串到字符数组,并且得到一个函数值.该函数值是字符数组的肇端地址.Stract函数:其一般情势为strcat(字符数组1,字符数组2).Strcat是字符串衔接的缩写.其感化是衔接两个字符数组中的字符串,把字符串2接到字符串1的后面,成果放在字符数组1 中,函数挪用后得到一个函数值——字符数组1的地址.Strcpy函数:其一般情势为strcpy(字符数组1,字符数组2).Strcpy是字符串复制的简写.它的感化是将字符串2复制到字符数组1中去.在本程序中.用到的最多的等于此函数.strcmp 函数:其一般情势为strcmp(字符串1,字符串2).Strcmp是字符串比较的缩写.它的感化是比较字符串1和字符串2,比较的成果有函数值带回.假如字符串1=字符串2,则函数值为0;假如字符串1大于字符串2,则函数值为一个正整数,不然则为负整数.(3)find_record()函数:此函数的功效是依据用户输入的时光查找当天的记载.这个函数的参数为一个指向构造体的指针和一个字符串.字符串是用语输入的日期,指向构造体的指针指向的则是用户输入的帐号的这个构造体.假如找到了用户输入的日期,则输出当天的所以记载.假如找不到,则显示无此日的记载.(4)insert_record()函数和del_record()函数:这两个函数的功效是增长新的记载和删除用户指定的记载.在insert_record( )函数中,此函数的参数是一个指向struct list_record的指针和一个指向struct record的指针还有一个选择拔出地位的整形变量.在主函数中,先界说一个struct record的构造体.这个构造体的内容是由用户输入的,也就是用户所要向struct list_record这个构造体中输入的新的记载的内容.然后再在主函数中界说一个指向struct record构造体的指针,并指向已经输入记载的构造体,最后将此指针作为实参传入函数.因为向函数中传如是指针,所以在函数中记载更改之后,返回主函数的是更改后的记载.在del_record()函数中,有效户在主函数中输入要删除的记载的地位,然后挪用此函数,那么就会履行删除该记载的操纵.与insert_record函数一样,参数传递的也是指针,所以在函数中更改的记载,返回主函数后依旧是更改后的记载.(5)sum_num()函数:此函数的功效是用来盘算用户所有记载中的钱数的总和,以便利用户对于体系的操纵,同时也可以运用户对本身的帐户有更深刻的懂得.除此之外,该函数还能会对用户所有的收入和所有的支出进行乞降,运用户可以或许知道本身的所有的收入的总和和所有支出的总和,如许也便利了用户进行下一步的操纵.(6)打印输出函数:在此程序中,打印输出函数共有三个,分离是输出全体记载,输出收入记载和输出支出记载.在这里界说三个输出函数是为了便利用户可以或许更轻易的进行操纵.假设只有一个输出全体记载的函数,那么假如用户只想检讨收入的记载或者支出的记载,此时用户只能本身一条一条的去检讨,如许就会让用户觉得不便利.一个优越的治理体系的目标就是能尽可能的知足用户的所有须要,分工越是准确越好,所认为了知足此项请求,在此界说了三个输出函数.(7)main( )函数:在一个程序中,main( )函数是最为重要的一个函数,因为它是所有程序履行的进口.同时函数也是以main( )函数的停止作为停止的,由此可见main()函数的重要性.在本程序中,所以的功效模块函数都是在main()函数中挪用的,如许做的目标是为了是全部程序的构造简略紧凑,同时也是为了程序的调试便利.但如许也就相对的增长了main()函数的庞杂性.在本程序中,main ()函数中涉及的语法常识包含轮回的嵌套运用,分之构造的嵌套运用,指针的运用,指向构造体指针的运用等很多语法构造.因为main()函数在本程序中有着至关重要的感化,所以在此具体解释.在程序开端履行之后,起首由用户来选择是要登陆体系照样要推出体系.假如是退出体系,那么程序便会停止.假如选择登陆,那么体系便会请求用户输入帐号和暗码.体系先会对帐号进行检讨,假如检讨经由过程了,则要对暗码进行检讨,假如经由过程了,则会显示用户信息,同时也许可用户对记载进行操纵,而所有的操纵都是由用户自行随便选择的,直到用户选择退出体系之后,程序便会停止.这是在用户输入的帐号和暗码都经由过程检讨的情形.假如帐号没有经由过程检讨,体系便会请求用户从新输入,然后体系再对其进行检讨,经由过程了就持续,通不过则还要从新输入,但用户输入帐号的次数最多只有三次.三次之后,体系变会自行推出.假如帐号经由过程了检讨,而暗码没有经由过程,那么体系也会请求用户从新输入,同样输入的次数不会超出三次,不然体系便会自行退出.这等于main()函数的具体设计思惟和具体的功效的描写.三.试验程序测试1.程序开端履行时体系的所显示的页面:2.选择退出体系:3.选择登陆,并且输入的帐号和暗码都准确:4.用户输入的帐号不准确:5.用户输入的帐号准确,暗码不准确:6.用户进行具体操纵:四.试验程序自我评价在这个程序中,我认为我已经完成了所请求的根本操纵,同时也增长了响应的功效模块来让用户操纵.设计的基起源基本则就是尽可能的知足用户的所有请求,同时也能尽可能便利的运用户对体系进行操纵.固然这个程序可能还出缺少之处,但我对于这个程序照样比较知足的.五.课程设计创新本程序重要模拟是是银行的ATM机的相干功效,除此之外,还增长了许可用户对于记载的一些操纵.而不是只许可用户进行检讨,如许就增长了体系的灵巧性.六.课程设计总结本程序在编写是,重要就是基于用户的角度去剖析该若何设计此程序,和编写功效模块的.在编写程序时,所有的数据都是对构造体进行的操纵,在此进程中,我发明了本身在对指针操纵的时刻,尤其是对指向构造体数组的指针和指向构造体的指针的操纵都不敷闇练.但在编写完此程序之后,我感到本身对语法的运用有了显著的进步.七.参考书目:1.C程序设计(第三版)谭浩强清华大学出版社2.数据构造(C说话版)谭浩强清华大学出版社3.程序设计基本(C说话版)龙昭华王玉柱重庆大学出版社八.试验程序源代码#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1struct record{char date[20];char operate[20];int num;};struct list_record{char account[20];char code[20];char name[20];int rec_len;struct record rec[max];}r[max];//体系原稀有据,用户不成知int old_record( struct list_record r[]){int i;for(i=0;i<3;i++)r[i].rec_len=4;strcpy(r[0].account,"1001");//账号strcpy(r[1].account,"1002");strcpy(r[2].account,"1003");strcpy(r[0].code,"111111");//暗码strcpy(r[1].code,"222222");strcpy(r[2].code,"333333");strcpy(r[0].name ,"wang");//姓名strcpy(r[1].name ,"li");strcpy(r[2].name ,"zhang");strcpy(r[0].rec[0].date,"07-01-01");//日期strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in");strcpy(r[0].rec[1].operate,"out");strcpy(r[0].rec[2].operate,"in");strcpy(r[0].rec[3].operate,"out");strcpy(r[1].rec[0].operate,"out");strcpy(r[1].rec[1].operate,"in");strcpy(r[1].rec[2].operate,"out");strcpy(r[1].rec[3].operate,"in");strcpy(r[2].rec[0].operate,"in");strcpy(r[2].rec[1].operate,"out");strcpy(r[2].rec[2].operate,"in");r[0].rec[0].num=3000;r[0].rec[1].num=-1500;r[0].rec[2].num=2500;r[0].rec[3].num=-1000;r[1].rec[0].num=-3000;r[1].rec[1].num=5000;r[1].rec[2].num=-1000;r[1].rec[2].num=2000;r[2].rec[0].num=1000;r[2].rec[1].num=-1500;r[2].rec[2].num=3000;r[2].rec[2].num=-500;return ok;}//将数据写入文件void save( ){FILE *fp;int i;if((fp=fopen("wenjian","wb"))==null)//只许可写数据 {printf("can not open the file.\n");return;}for(i=0;i<max;i++)if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n");fclose(fp);}//文件读出void load( ){FILE *fp;int i;if((fp=fopen("wenjian","rb"))==null){printf("can not open infile.\n");return;}for(i=0;i<max;i++)if(fread(&r[i],sizeof(struct list_record),1,fp)!=1) {if(feof(fp))//文件停止为1;不然为0(fclose(fp));Return;//为什么在这加return}fclose(fp);}//将用户输入的帐号与体系华夏有帐号比较,查找用户帐号int lookup_accounts( struct list_record r[],char acc[]){int i;for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0){return ok;}printf("帐号不消失,请从新输入!\n");return null;}//检讨暗码函数struct list_record check_code(struct list_record r[],char acc[],char c[]){int i;struct list_record a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i++){strcpy(a.rec[i].date,"0");strcpy(a.rec[i].operate,"0");a.rec[i].num=0;}for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0)if(strcmp(r[i].code,c)==0)return r[i];printf("the code is wrong,please input again!\n"); return a;}//显示用户根本信息void print_message( struct list_record *p){printf("姓名:%s\n",p->name);printf("帐号:%s\n",(*p).account);}//依据用户输入的日期,查找记载int find_record( struct list_record *p,char d[]){int i;for(i=0;i<(*p).rec_len;i++){if(strcmp((*p).rec[i].date,d)==0){printf("date operate money\n");printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d \n",(*p).rec[i].num);return ok;}}if(i==(*p).rec_len)printf("the date is not exit!\n");return null;}//拔出函数,依据用户输入的信息,增长记载int insert_record( struct list_record *p,struct record *p1,int lop){int i;if((lop<1)||(lop>((*p).rec_len+1))){printf("the position is wrong.\n");return 0;}else{for(i=(*p).rec_len;i>lop-1;i--){strcpy((*p).rec[i].date,(*p).rec[i-1].date);strcpy((*p).rec[i].operate,(*p).rec[i-1].operate);(*p).rec[i].num=(*p).rec[i-1].num;}strcpy(p->rec[i].date,p1->date);strcpy((*p).rec[i].operate,(*p1).operate);(*p).rec[i].num=(*p1).num;(*p).rec_len++;return ok;}}// 删除记载函数int del_record( struct list_record *p,int lop2) {int i;if((lop2<1)||(lop2>(*p).rec_len)){printf("the position is wrong.\n");return null;}else{for(i=lop2-1;i<(*p).rec_len-1;i++){strcpy((*p).rec[i].date,(*p).rec[i+1].date);strcpy((*p).rec[i].operate,(*p).rec[i+1].operate);(*p).rec[i].num=(*p).rec[i+1].num;}(*p).rec_len--;return ok;}}//输出全体记载函数void all_print( struct list_record *p){ int i;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++){ printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}}//盘算总的钱数int sum_num( struct list_record *p){int i;int sum=0;int sum_in=0;int sum_out=0;for(i=0;i<(*p).rec_len;i++){sum+=(*p).rec[i].num;if((*p).rec[i].num>0)sum_in+=(*p).rec[i].num;if((*p).rec[i].num<0)sum_out+=(*p).rec[i].num;}printf("总金额为: %d\n",sum);printf("总收入为: %d\n",sum_in);printf("总支出为: %d\n",sum_out);return ok;}//输出收入记载int acc_print( struct list_record *p){int i;int sum_acc=0;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++)if((*p).rec[i].num>0){sum_acc+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总收入金额为: %d\n",sum_acc);return ok;if(sum_acc==0)printf("there is no account.\n");return null;}//输出支出记载int pay_print( struct list_record *p) {int i;int sum_pay=0;printf("date operate num\n"); for(i=0;i<p->rec_len;i++)if((*p).rec[i].num<0){sum_pay+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总的支出为: %d\n",sum_pay); return ok;if(sum_pay==0)printf("there is no payout.\n");return null;}void main( ){int j=0,n=0;//n记载暗码输入次数int x,k,lop1,lop2;//k为敕令数字选项char data1[20];char accou[20],cod[20];//accou账号cod暗码struct record *p0;//内容是由用户输入的struct record a;struct list_record b;struct list_record *p;b.rec_len=0;p0=&a;old_record(r);save( );load( );//显示printf(" 迎接运用小我财务支出治理体系!\n");printf("------------------------------------------------------------\n");printf("| |\n");printf("| 1.登陆体系|\n");printf("| 随便率性键.退出体系|\n");printf("| |\n");printf("------------------------------------------------------------\n");scanf("%d",&x);if(x!=1)printf(" 感激您运用本体系,再会!\n");else{do{printf("请输入帐号:"); //while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou))//将用户输入的帐号accou与体系中的所有帐号r进行比较,检讨体系中是否有此帐号.{ printf("请输入暗码:"); //while(j<3);scanf("%s",cod);b=check_code(r,accou,cod);//在体系查询到了帐号之后,对用户输入的帐号和暗码进行磨练,看是否相对应.if(b.rec_len==0)//rec_len记载的条数{do{b=check_code(r,accou,cod); //scanf("%s",cod);n++;}while(n<3);if(n=3)printf("您的暗码不准确,请退出体系,感谢运用,再会!\n");break;}else{printf("---------------请选择您要进行的操纵-------------------\n");printf("| |\n"); //while(j<3);printf("| 2.查找记载|\n");printf("| 3.增长记载|\n");printf("| 4.删除记载|\n");printf("| 5.输出所有记载|\n");printf("| 6.输出所有收入记载|\n");printf("| 7.输出所有支出记载|\n");printf("| |\n");printf("-----------------------------------------------------|\n");p=&b;print_message(p);//在体系检讨了用户输入的帐号和暗码之后,假如用户经由过程了体系的检讨,在此显示用户可见的根本信息.do{scanf("%d",&k); //while(k>0)if(k==10)printf("感激您运用本体系,再会!\n");if(k==2){printf("请输入您要查询的日期:");scanf("%s",data1);find_record(p,data1);}if(k==3){printf("请输入你要拔出的地位:\n");scanf("%d",&lop1);printf("请输入您要添加的记载:\n");printf("日期:");scanf("%s",p0->date);printf("操纵:");scanf("%s",p0->operate);printf("金额:");scanf("%d",&(p0->num));insert_record(p,p0,lop1);//增长新的记载 }if(k==4)printf("请输入您要删除的记载的地位:\n");scanf("%d",&lop2);del_record(p,lop2);}if(k==5){all_print(p);sum_num(p);}if(k==6)acc_print(p);//输出所有收入记载if(k==7)pay_print(p);//输出所有支出记载}while(k>0);break;}}j++;}while(j<3);printf("感激您运用本体系,再会!\n");}。
C语言课程设计-班级财务管理
C语言课程设计-班级财务管理(总6页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchC语言课程设计论文学生姓名:金灿学生学号: 09所在班级:软件一班任课教师:熊英班级财务管理系统【设计目的】设计一个班级财务管理系统,该程序具有以下功能:(1)用户登录:输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。
(2)录入信息:各项财务信息(包括用途、收入、支出、收入(或支出)时间、总计、使用人等。
)。
(3)修改班级成员信息。
(4)删除班级成员信息。
(5)查询班级财务状况。
(6)统计班级财务情况:班级每月共收入、支出各多少,整个学期共收入、支出多少。
(7)分类统计:根据用途对支出进行统计排序输出【设计思路】根据要求,班级财务数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】图1 系统功能模块图【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】图2. 主函数流程图附录:源代码#include<>#include<>#include<>#include<>typedef struct income_info{int number;double income;int month;int day;int year;char name[50];struct income_info * next;}IncomeLink,* Pointer1;typedef struct output_info{int number;double output;int month;int day;int year;int use;char name[50];struct output_info * next;}OutputLink,* Pointer2;int Select(void); 添加财务信息 \n");printf(" ☆2 . 查询财务信息 \n");printf(" ☆3 . 修改财务信息 \n");printf(" ☆4 . 删除财务信息 \n");printf(" ☆5 . 显示财务信息 \n");printf(" ☆6 . 统计财务信息 \n");printf(" ☆7 . 读取数据库 \n");printf(" ☆0 . 退出系统 \n");printf(" \n");printf(" ★**************************************************************★\n"); printf("◆请选择(0-7):\n");}void menu(){ printf(" ★**************************************************************★\n"); printf(" *******************★欢迎使用财务管理系统★*******************\n");printf(" **************************************************************\n");printf(" \n");printf(" ☆1 . 添加财务信息 \n");printf(" ☆2 . 查询财务信息 \n");printf(" ☆3 . 显示财务信息 \n");printf(" ☆4 . 统计财务信息 \n");printf(" ☆5 . 保存一个新数据库 \n");printf(" ☆6 . 读取数据库 \n");printf(" ☆0 . 退出系统 \n");printf(" \n");printf(" ★**************************************************************★\n"); printf("◆请选择(0-6):\n");}int Select(void) 收入 \n");printf(" ☆2 . 支出 \n");printf(" \n");printf(" ★**************************************************************★\n");printf("◆◆◆请选择(1-2):\n");scanf("%d",&w);return(w);}void Insert1(Pointer1 *Head1) 名 2.编号\n");scanf("%d",&i);switch(i){case 1:Search_name(Head2);break;case 2:Search_number(Head2);break;}Sleep(1000);printf("\n\n\n\n");getchar();}void Search_name(Pointer2 Head2) 用途 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) 据结构[M]. 北京: 电子工业出版社, :41-65晋良颍.数据结构[M]. 北京:人民邮电出版社, : 21-45刘大有.数据结构[M]. 北京: 高等教育出版社, : 30-58赵文静. 数据结构与算法[M]. 北京: 科学出版社, : 41-64徐孝凯.数据结构简明教程.[M]. 北京: 清华大学出版社, : 102-115严蔚敏,吴伟民.数据结构(C语言版)[M]. 北京:清华大学出版社, : 39-43傅清祥,王晓东. 数据结构与算法设计[M]. 北京: 电子工业出版社, : 31-46王敬华,林萍,.陈静. C语言程序设计[M]. 北京: 清华大学出版社, : 22-39李云清,杨庆红,揭安全.数据结构(C语言版)[M]. 北京:人民邮电出版社,: 44-67 [10]李春葆. 数据结构(C语言版)习题与解析[M].北京:清华大学出版社, : 47-55。
c语言课程设计财务管理
c语言课程设计财务管理一、教学目标本节课的教学目标是让学生掌握C语言在财务管理领域的应用,包括数据结构、算法和程序设计等方面的知识。
在知识目标方面,学生需要了解C语言的基本语法、数据类型、运算符、控制结构等;掌握数组、字符串、结构体等数据结构的使用;熟悉函数、指针的概念和应用。
在技能目标方面,学生需要能够运用C语言编写简单的财务管理程序,解决实际问题;具备良好的编程习惯和调试能力。
在情感态度价值观目标方面,学生需要培养对计算机科学的兴趣和热情,提高自主学习和解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据结构、算法和程序设计等方面的知识。
首先,介绍C语言的基本语法,包括数据类型、运算符、控制结构等;其次,讲解数组、字符串、结构体等数据结构的使用方法;然后,介绍函数和指针的概念及应用;最后,通过实例分析,让学生掌握C语言在财务管理领域的实际应用。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。
首先,采用讲授法,为学生讲解C语言的基本语法、数据结构、算法等知识;其次,运用讨论法,让学生在小组内交流学习心得,解决问题;然后,采用案例分析法,分析C语言在财务管理领域的实际应用;最后,运用实验法,让学生动手编写财务管理程序,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材《C语言程序设计》、参考书《C语言编程实践》、多媒体资料(包括PPT、视频教程等)、实验设备(计算机、编程环境等)。
这些教学资源将帮助学生更好地掌握C语言在财务管理领域的应用,提高他们的编程能力和解决问题的能力。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估主要包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与度、提问回答、小组讨论等表现,评估他们的学习态度和积极性。
2.作业:布置与课程内容相关的编程作业,评估学生对C语言语法、数据结构、算法等知识的掌握程度。
C语言程序设计---家庭财务管理系统
C语言程序设计—家庭财务管理系统摘要本报告介绍了一个运用C语言知识和Microsoft Visual c++ 6.0创建的用于家庭各成员财务情况管理的家庭财务管理系统.在该系统中创建了包含编辑,增加,删除,修改,查找,浏览的功能总列表,创建序号链接各功能列表,输入家庭成员收入信息情况,增加信息,删除信息,修改信息,创建姓名查找便于用户查找个人财务情况,创建合计排序浏览用户可从总体上浏览全家庭财务信息情况.关键词:C语言,Visual c++ 6.0, 家庭财务管理系统小组情况本系统是通过小组全体成员的共同努力,经过分工合作完成的,具体分工如下:1。
合作的工作需求分析、概念结构设计、逻辑结构设计和报告的草稿通过小组讨论完成。
2。
分工在家庭财务管理系统的总体方案确定之后,小组成员开始分工,独立完成不同的模块及工作。
其中●:负责家庭财务管理系统主函数、总程序的编译连接、报告的撰写排版工作。
●:负责家庭财务管理系统各主要函数及总程序的编译连接。
●:负责家庭财务管理系统增加函数的编译、报告的撰写工作.●:负责家庭财务管理系统删除函数的编译、报告的撰写工作.●:负责家庭财务管理系统创建函数的编译工作.目录1 绪论 (1)2方案设计分析 (2)2.2.函数设计 (2)2。
3。
各函数代码设计及N-S图 (2)3系统运行情况 (5)3.1出现的问题 (5)3。
2相关的解决方法 (5)3。
3目前的运行情况 (5)3。
4系统操作说明 (5)总结 (7)致谢 (8)参考文献 (9)1 绪论家庭财务管理对于每一个家庭来说有着重要的意义,随着科技的发达,财务的管理由原先的手写账本发展到现今的电脑系统输入并统计,不仅大大减少了时间与精力,也是财务管理更系统化,便捷化,清晰化,减少金钱上的缺失。
家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量本报告设计的家庭财务管理系统主要是负责给家庭成员提供了一个在Windows操作系统上运行的管理平台,家庭财务管理者可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改,查找等管理操作,还可以对全家庭财务合计排序浏览.C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void save_to_file();
void clear_data();
fi_data *get_last();
fi_data *get_previous(fi_data *p);
void input_info(fi_info *info);
void show_info(fi_data *p[],int count);
fflush(stdin);
getchar();
}
else
{
menu_fun[selected]();
}
selected=0;
}
}
void add_income()
{
fi_data *p=(fi_data *)malloc(sizeof(fi_data));
memset(p,0,sizeof(fi_data));
void delete_payout();
void update_payout();
void count_total();
void quit();
void search_data(fi_type type);
void delete_data(fi_type type);
void update_data(fi_type type);
input_info(&(p->info));
p->info.type=payout;
if(head==NULL)
{
head=p;
}
else
{
get_last(head)->next=p;
}
}
void search_payout()
{
search_data(payout);
}
void delete_payout()
payout=-1
}fi_type;
typedef struct_fi_info
{
int year;
int month;
fi_type type;
char name[MAX_NAME];
float money;
char detail[MAX_DETAIL];
}fi_info;
typedef struct_fi_data
#include"stdio.h"
#include"stdlib.h"
#define MAX_NAME 11
#define MAX_DETAIL 21
#define MENU_COUNT 9
#define DATA_FILE "fa.dat"
typedef wnum_fi_type
{
income=1,
"| 1添加收入|\n"
"| 2查询收入明细|\n"
"| 3删除收入|\n"
"| 4修改收入|\n"
"|支出管理|\n"
"| 5添加支出|\n"
"| 6查询支出明细|\n"
"| 7删除支出|\n"
"| 8修改支出|\n"
"|统计|\n"
"| 9统计总收入总支出|\n"
"----------------------------------------------+\n"
search_payout,
delete_payout,
update_payout,
count_total
};
int main()
{
int selected=0;
initialize();
while(selected>=0 && selected<=MENU_COUNT)
{
system("cls");
p->next=NULL;
input_info(&(p->info));
p->info.type=income;
if(head==NULL)
{
head=p;
}
else
{
get_last(head)->next=p;
}
}
void search_income()
{
search_data(income);
fi_data *head;
char menu[]=
"===============================================\n"
"|家庭财务管理系统|\n"
"+---------------------------------------------+\n"
"|收入管理|\n"
{
fi_info info;
struct_fi_data *next;
}fi_data;
void add_income();
void search_income();
void delete_income();
void update_income();
void add_payout();
void search_payout();
}
void delete_income()
{
delete_data(income);
}
void update_income()
{
update_data(income);
}
void add_payout()
{ቤተ መጻሕፍቲ ባይዱ
fi_data *p=(fi_data*)malloc(sizeof(fi_data));
memset(p,0,sizeof(fi_data));
{
if(p->info.type==income)
{
total_income+=p->info.money;
}
else
{
printf(menu);
printf(">请选择要进行的操作(%d - %d):",0,MENU_COUNT);
if(scanf("%d",&selected)!=1||selected<0||selected>MENU_COUNT)
{
printf(">输入错误!请选择[ %d - %d]之间的数字!按任意键重试...",0,MENU_COUNT);
{
delete_data(payout);
}
void update_payout()
{
update_data(payout);
}
void count_total()
{
float total_income=0.0;
float total_payout=0.0;
fi_data *p=head;
while(p!=NULL)
"| 0退出系统|\n"
"==============================================+\n";
void(*menu_fun[])()=
{
quit,
add_income,
search_income,
delete_income,
update_income,
add_payout,