/***********************************************************
我的信息: *
姓名: 汪建林 生日:1985年2月26日 *
毕业学校: 2007年于成都理工大学 *
家乡地址: 四川渠县望溪乡包山村5组 *
联系QQ: 287307421 联系电话: 13558690869 *
联系Email: wangjianlin1985@126.com 287307421 *
双鱼林程序淘宝店: http://shop34864101.taobao.com *
双鱼林程序拍拍店: http://287307421.paipai.com *
网站: http://www.shuangyulin.com *
*
需要更多程序可以联系我,保证运行! *
***********************************************************/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define SIZE 12
#define FILENAME "information.txt"
struct IN
{
char name[10]; /*姓名*/
char sex[5]; /*性别*/
int age; /*年龄*/
char address[100]; /*住址*/
int telephone[15]; /*电话*/
float yue; /*余额*/
}infor;
struct MI
{
int month;
float into;
float outto;
char inaim[20];
char outaim[20];
}ioi[];/*日期,收入/支出 金额 收入来源/支出目的*/
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");
}
/*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:ioi[]
类型:MI
说明:用来存储从文件读到的收支信息
返回值:i
类型:int
说明:表示实际读取到的个数
*******************************************************/
int readFromFile1(MI ioi[])
{
FILE *fp=NULL;
int i=0;
fp=fopen(FILENAME,"rb"); /*打开文件*/
if(fp!=NULL)
{
while(!feof(fp)) /*从文件中读入月份*/
{
if(fread(ioi+i,sizeof(MI),1,fp))
i++;
}
printf("收支信息已读入\n");
fclose(fp);
}
return i;
}
void readFromFile2(struct IN *infor)
{
FILE *fp=NULL;
int i=0;
fp=fopen("personal.txt","rb");
if(fp==NULL)
{
printf("打开文件出错!\n");
exit(0);
}
if(!feof(fp))
{ fread(infor,sizeof(struct IN),1,fp);
}
printf("个人信息已读入\n");
fclose(fp);
}
void inputInfo1(struct IN *infor)
{
int endFlag=0;
printf("请输入个人信息:\n");
while(1)
{
printf("姓名:");
scanf("%s",infor->name);
if(infor->name==0)
{
endFlag=1;
break;
}
printf("\n");
break;
}
while(1)
{
printf("性别:");
scanf("%s",infor->sex);
printf("\n");
break;
}
while(1)
{
printf("年龄:");
scanf("%d",&infor->age);
printf("\n");
break;
}
while(1)
{
printf("住址:");
scanf("%s",infor->address);
printf("\n");
break;
}
while(1)
{
printf("电话:");
scanf("%d",&infor->telephone);
printf("\n");
break;
}
while(1)
{
printf("余额:");
scanf("%f",&infor->yue);
printf("\n");
break;
}
while(getchar()!='\n')
continue;
}
/*******************************************************
功能:判断月份是否唯一
参数:
参数1:ioi[]
类型:MI
说明:存储个人信息的数组
参数2:length
类型:int
说明:表示实际数组的长度
参数2: ioimonth
类型:int
说明:要判断的月份
返回值:1或0(flag)
类型:int
说明:1表示月份唯一;0表示月份不唯一
*******************************************************/
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
说明:表示实际数组的长度
返回值:无
*******************************************************/
void sortScore(MI ioi[],int length)
{
int i=0,j=0,k=0;
MI s;
for(i=0;i<length;i++)
{ /* 从未排好序的收支信息中找到月份最小的最小,记下标放入k */
k=i;
for(j=i+1;j<length;j++)
if(ioi[j].month<ioi[k].month)
k=j;
/* 交换 ioi[i] and ioi[k] */
s=ioi[k];
ioi[k]=ioi[i];
ioi[i]=s;
}
}
void outputInfo(MI ioi[],int length)
{
int i=0;
printf(" 月份 收入 支出 收入来源 支出目的\n\n");
for(;i<length;i++)
{
printf("%8d %14f %14f %14s %14s",ioi[i].month,ioi[i].into,ioi[i].outto,ioi[i].inaim,ioi[i].outaim);
printf("\n");
}
printf("\n\n");
}
/*******************************************************
功能:根据月份删除数组中收支信息
参数:
参数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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目说明: 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术、通信工程、软件工程、自动化、电子信息等相关专业,更为适合; 4、下载使用后,可先查看README.md文件、项目说明(如有),本项目仅用作交流学习参考,请切勿用于商业 在日常工作生活中 内容概要:个人收支管理系统 适用人群:学生、老师、企业员工,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 使用场景及目标: 能学到什么:c的开发技巧和经验 阅读建议:此资源,不仅代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程中要结合这些内容一起来实践,并调试对应的代码。
资源推荐
资源详情
资源评论
收起资源包目录
c++课程设计-个人收支管理系统 2.zip (14个子文件)
c++课程设计-个人收支管理系统
项目说明.zip 40KB
c++课程设计-个人收支管理系统
个人收支管理系统9.9成品.ncb 33KB
个人收支管理系统9.9成品.cpp 13KB
个人收支管理系统9.9成品.opt 48KB
个人收支管理系统9.9成品.dsw 554B
个人收支管理系统9.9成品.dsp 4KB
个人收支管理系统9.9成品.plg 1KB
Debug
个人收支管理系统9.9成品.pch 221KB
vc60.pdb 52KB
个人收支管理系统9.9成品.exe 212KB
个人收支管理系统9.9成品.obj 38KB
个人收支管理系统9.9成品.pdb 505KB
个人收支管理系统9.9成品.ilk 227KB
vc60.idb 33KB
共 14 条
- 1
资源评论
大太阳na
- 粉丝: 15w+
- 资源: 543
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言的系统服务框架.zip
- (源码)基于Spring MVC和MyBatis的选课管理系统.zip
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功