项目信息录入与输出(将项目的主要信息存储到指定目录的文件中)

//ProjectManagement.h
#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);      //函数声明 
//ProjectManagement.c
#include"ProjectManagement.h"       //包含头文件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打开成功");
} 
//ProjectSavePrint.c
#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);
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【执珪】瑕瑜·夕环玦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值