/***********************************************************
*
需要更多程序可以联系我,保证运行! *
***********************************************************/
#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("删除成功!\n");
}
}
else
printf("\n指定的月份收支信息不存在!\n");
return length;
}
/*******************************************************
功能:根据月份修改数组中信息
参数:
参数1:ioi
类型:MI
说明:用来存储收支信息的数组
参数2:length
类型:int
说明:表示实际数组的长度
参数3:stuNum
类型:int
说明:表示要修改的信息的月份
返回值:无
*******************************************************/
void editInfoByNumber(MI ioi[],int length,int stuNum)
{
int i=0
没有合适的资源?快使用搜索试试~ 我知道了~
c++课程设计-个人收支管理系统.rar
共13个文件
pdb:2个
plg:1个
exe:1个
0 下载量 156 浏览量
2024-02-20
17:24:48
上传
评论
收藏 218KB RAR 举报
温馨提示
# 计算机专业-C语言--毕业设计源码欢迎使用 该源码是为计算机专业学生设计的C语言毕业设计项目,旨在帮助学生更好地理解和应用C语言。本源码包含完整的程序代码和相关文档,欢迎使用和学习。 ## 源码介绍 程序使用了C语言中的循环、条件语句等基本语法,旨在帮助学生巩固C语言的基础知识。 ## 程序使用方法 1. 下载源码文件并解压缩。 2. 用任何C语言编译器打开源码文件。 3. 编译并运行程序即可使用。
资源推荐
资源详情
资源评论
收起资源包目录
c++课程设计-个人收支管理系统.rar (13个子文件)
c++课程设计-个人收支管理系统
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
共 13 条
- 1
资源评论
嘻嘻爱编码
- 粉丝: 932
- 资源: 160
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功