#include<stdio.h>
#include<stdlib.h>
#define projnum 2
#define _,
#define INFO(a) printf("info:");printf(a);
#define INFOLINEF(a) printf("info:");printf(a);printf("\n");
#define _,
#define ERROR(a) printf("info:");printf(a);
#define ERRORLINEF(a) printf("error:");printf(a);printf("\n");
struct date
{
unsigned int year;
unsigned int month;
unsigned int day;
};
struct project
{
char proname[32];
char promanager[32];
float proincome;
struct date prostart;
struct date proend;
float prooutcome;
};
void projectsave(struct project *proaddr,FILE *fp_in);
void projectprint(FILE *fp_out);
#include"ProjectManagement.h"
void main()
{
int i;
struct Project *pProj=NULL,*pProjcopy=NULL;
FILE *fp;
fp=fopen("D:\\C_language\\ProjectManagement.txt","wb++");
if(fp==NULL)
{
ERRORLINEF("文件NewWorld.txt打开失败");
return;
}
else
{
INFOLINEF("成功,文件NewWorld.txt打开成功");
pProj=(struct Project*)malloc(projnum*sizeof(struct Project));
}
pProjcopy=pProj;
INFOLINEF("------------------------------");
for(int i=0;i<projnum;i++,pProj++)
{
INFOLINEF("输入项目名称:");
scanf("%s",pProj->proname);
INFOLINEF("输入项目管理员名称:");
scanf("%s",pProj->promanager);
INFOLINEF("输入项目收益:");
scanf("%s",pProj->proincome);
INFOLINEF("输入项目开始日期:");
scanf("%u%u%u",&pProj->prostart.year,&pProj->prostart.month,&pProj->prostart.day);
INFOLINEF("输入项目结束日期:");
scanf("%u%u%u",&pProj->proend.year,&pProj->proend.month,&pProj->proend.day);
INFOLINEF("输入项目开销:");
scanf("%f",&pProj->prooutcome);
}
projectsave(pProjcopy,fp);
INFOLINEF("------------------------------");
rewind(fp);
i=fclose(fp);
if(i==0)
{
INFOLINEF("文件NewWorld.txt关闭成功");
}
else
{
ERRORLINEF("文件NewWorld.txt关闭失败");
}
free(pProjcopy);
INFOLINEF("成功,文件NewWorld.txt打开成功");
}
#include"ProjectManagement.h"
void projectsave(struct project *proaddr,FILE *fp_in)
{
int i=0;
i=fwrite(proaddr,projnum*sizeof(struct Project),1,fp_in);
if(i==0)
{
ERRORLINEF("文件写入失败");
}
else
{
INFOINEF("文件写入成功");
}
rewind(fp_in);
}
void projectprint(FILE *fp_out);
{
int i=0;
struct Project Outproject[2];
fread(OutProject,projnum*sizeof(struct Project),1,fp_out);
for(int i=0;i<projnum;i++)
{
INFOLINEF("项目名称:%s"_OutProject[i].proname);
INFOLINEF("项目负责人:%s"_OutProject[i].promanager);
INFOLINEF("项目收入:%s"_OutProject[i].proincome);
INFOLINEF("项目开始日期:%d年%d月%d日"_OutProject[i].prostart.year_prostart.month_prostart.day);
INFOLINEF("项目结束日期:%d年%d月%d日"_OutProject[i].proend.year_proend.month_proend.day);
INFOLINEF("项目支出:%s"_OutProject[i].prooutcome);
}
}