前言

基于c&c++课程设计-个人收支管理系统(附源码+可执行程序)

非常完整的一个项目,可以作为课程设计去学习。

本系统的完整源码在文章结尾处,大家自行获取即可。

项目简介

个人收支管理系统有13个子菜单。

  1. 个人信息输入
  2. 添加新的收支信息
  3. 按月份排序打印出收支清单
  4. 删除已有信息
  5. 修改已有信息
  6. 统计总收入
  7. 统计总支出
  8. 查询当前个人信息及余额
  9. 把收支信息输入到文件
  10. 从文件中读入收支信息
  11. 把个人信息输入到文件
  12. 从文件中读入个人信息
  13. 结束程序

涉及知识点

文件读写、内存管理、结构体定义、基本数据结构、高级格式化输入输出。

源码获取方法:

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~

系统登陆界面

在这里插入图片描述

代码如下:


void displayMenu()
 {

        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("+                 7. 统计总支出                         +\n");
		printf("+                 8. 查询当前个人信息及余额             +\n");
	    printf("+                 9.把收支信息输入到文件                +\n");
		printf("+                 10.从文件中读入收支信息               +\n");
		printf("+                 11.把个人信息输入到文件               +\n");
		printf("+                 12.从文件中读入个人信息               +\n");
		printf("+                 13.结束程序                           +\n");
		printf("+                                                       +\n");
        printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
 
}

判断月份是否唯一

809908cb0a53d145.png)

代码如下():

int unique(MI ioi[],int length,int ioimonth)
{
	int flag=1,i;
	for(i=0;i<length;i++)
	{
		if(ioi[i].month==ioimonth)
		{ 
			flag=0;
			break;
		}
	}
return flag;
}


 int inputInfo2(struct MI ioi[],int length)
{
	int i=length;
	int endFlag=0;

	printf("是否确认结束(以0为结束):\n");
	while(i<SIZE)
	{
		while(1)
		{
			int flag;
			printf("月份:");
			scanf("%d",&ioi[i].month);
			if(ioi[i].month>12||ioi[i].month<0)
				printf("月份有误,请重新输入!\n");
			else if(ioi[i].month==0)
			{
				endFlag=1;
				break;
			}
			if(ioi[i].month<=12&&ioi[i].month>0)
			{
				flag=unique(ioi,i,ioi[i].month);
			    if(flag) break;
			    printf("该月份已经存在,请重新输入!\n");
			}
		}

		if(endFlag==1)
			break;
		while(1)
		{
		printf("收入:");
		scanf("%f",&ioi[i].into);
		printf("\n");
		break;
		}
		while(1)
		{
		printf("支出:");
		scanf("%f",&ioi[i].outto);
		printf("\n");
		break;
		}
		while(1)
		{
		printf("收入来源:");
		scanf("%s",ioi[i].inaim);
		printf("\n");
		break;
		}
		while(1)
		{
		printf("支出目的:");
		scanf("%s",ioi[i].outaim);
		printf("\n");
		break;
		}
		while(getchar()!='\n')
		continue;
		i++;

	}

	return i;/*新增完成后,有多少个收支信息*/
}


根据月份删除数组中收支信息

功能:根据月份删除数组中收支信息
参数:
参数1:ioi
类型:IM
说明:用来存储收支信息的数组
参数2:length
类型:int
说明:表示实际数组的长度
参数3:stuNum
类型:int
说明:表示要删除的月份
返回值:length
删除后月份的个数

int deleteInfoByNumber(MI ioi[],int length,int stuNum)
{
	int i,j;
	char choice;
	for(i=0;i<length;i++)
	{
		if(stuNum==ioi[i].month)
       {
			printf("找到啦!它的下标是:%d\n", i);

			printf("%d %f %f %s %s","月份",      "收入",     "支出",      "收入来源",      "支出目的\n");
			printf("%d %5f %5f %5s %5s\n",ioi[i].month,ioi[i].into,ioi[i].outto,ioi[i].inaim,ioi[i].outaim);		
			break; 
		}
    }
    if(i<length)
	{
 		printf("你确实要删除这个月的收支信息吗?(Y/N)");
		getchar();
		scanf("%c",&choice);
		if(choice=='Y'||choice=='y')
		{
			for(j=i;j<length;j++)
				ioi[j]=ioi[j+1];
			length--;
 	 	    printf("删除成功!\n");
		}                
	}
    else
        printf("\n指定的月份收支信息不存在!\n");
	return length;
}

结构体数组中的收支信息输出到文件

功能:结构体数组中的收支信息输出到文件
参数:
参数1:ioi[]
类型:MI
说明:用来存储从文件读到的学生信息
参数2:length
类型:int
说明:表示实际数组的长度
返回值:无
在这里插入图片描述

void writeToFile1(MI ioi[],int length)
{
	FILE *fp=NULL;
	int i=0;

	fp=fopen(FILENAME,"wb");

	if(fp==NULL)
	{
		printf("打开文件出错!\n");
		exit(0);
	}

	for(i=0;i<length;i++)
		fwrite(ioi+i,sizeof(MI),1,fp);
	printf("信息已保存到文件information.txt中\n");
	fclose(fp);

}

源码获取方法:

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~

个人收支管理系统源码分享
还有自己的工作要做,所以很多粉丝的私信来不及回,见谅。如果有问题,请添加下列名片信息,有源码的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐