编辑代码

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#define NN 100
#define MM 100
#define RR 100 
#define CD 20
#define NAM 20
#define LB 20
#define FZ 20
#define DW 20
#define ST 20
#define ET 20
#define SM 20
#define EM 20


int nn,mm,rr;
char lunwen[20]={0};
char zhuanli[20]={0};

typedef struct xiangmu
{
	char code[CD];
	char name[NAM];
	char leibie[LB];
	char fzr[FZ];
	char danwei[DW];
	char stime[ST];
	char etime[ET];
	char smoney[SM];
	char emoney[EM];
	int lunwen;
	int zhuanli;
}XM;
XM a[NN];

typedef struct lunwen
{
	char timu[20];
	char code[CD];
	char zuozhe[20];
	char qikan[20];
	char chuban[20]; 
}LW;
LW b[MM];

typedef struct zhuanli
{
	char name[20];
	char id[20];
	char code[CD];
	char syr[20];
	char time[20];
	char lim[20];
}ZL;
ZL c[RR];

void Read_file();
int load_xiangmu();
int load_lunwen();
int load_zhuanli();
void Append();
void Add1();
void Add2();
void Add3();
void menu();
void Find();
void find_fzr();
void find_leibie();
void find_name();
void Stcs();




main()
{  
    Read_file(); 
    menu();
}

void Read_file()
{
	nn=load_xiangmu;
	mm=load_lunwen;
	rr=load_zhuanli;
}

int load_xiangmu()
{
	FILE *fp1;
	int i;
	if ((fp1=fopen("xiangmu.txt","r"))==NULL)  
	{
		printf("\n 无法打开科研项目数据文件    \n");
		exit(0);
	}
	for(i=0;!feof(fp1);i++)
	{
		fscanf(fp1,"%s%s%s%s%s",a[i].code,a[i].name,a[i].leibie,a[i].fzr,a[i].danwei);
		fscanf(fp1,"%s%s%s%s%s%s",a[i].stime,a[i].etime,a[i].smoney,a[i].emoney,a[i].lunwen,a[nn].zhuanli);
    }
    fclose(fp1);
    return i;
}

int load_lunwen()
{
	FILE *fp2;
	int i;
	if ((fp2=fopen("lunwen.txt","r"))==NULL)  
	{
		printf("\n 无法打开论文登记数据文件    \n");
		exit(0);
	}
	for(i=0;!feof(fp2);i++)
    	fscanf(fp2,"%s%s%s%s%s",b[i].chuban,b[i].code,b[i].qikan,b[i].timu,b[i].zuozhe);
	fclose(fp2);
	return i;
}

int load_zhuanli()
{
	FILE *fp3;
	int i;
	if ((fp3=fopen("zhuanli.txt","r"))==NULL)  
	{
		printf("\n 无法打开科专利登记数据文件    \n");
		exit(0);
	}
	for(i=0;!feof(fp3);i++)
        fscanf(fp3,"%s%s%s%s%s%s",c[i].code,c[i].id,c[i].lim,c[i].name,c[i].syr,c[i].time);
    fclose(fp3);
    return i;
}

//添加数据:
void Append()
{
	int w,x; 
	int Menu_v=1;
	while(Menu_v)
	{
		do
		{
			puts("\n\n\t\t***************数据添加******************\n\n");
			puts("\t\t\t\t 1.添加项目\n\n");
			puts("\t\t\t\t 2.添加论文\n\n");
			puts("\t\t\t\t 3.添加专利\n\n");
			puts("\t\t\t\t 4.返回主菜单\n\n");
			puts("\t\t******************************************\n\n");
			printf("你的选择是(1-4):[ ]\b\b");
			scanf("%c",&x);
			fflush(stdin);
		}while (w);
		switch (x)
		{
			case '1':Add1(); break;
			case '2':Add2(); break;
			case '3':Add3();break;
			case '4':Menu_v=0; return;
		}
	}
}
 
void Add1()
{
	FILE *fp1;
	int i;
	printf("\n\n添加项目:");
	printf("\n\n请输入项目编号:");
	scanf("%s",a[nn].code);
	printf("\n请输入项目名称:");
	scanf("%s",a[nn].name);
	printf("\n请输入项目类别:");
	scanf("%s",a[nn].leibie);
	printf("\n请输入项目负责人:");
	scanf("%s",a[nn].fzr);
	printf("\n请输入负责人所在单位:");
	scanf("%s",a[nn].danwei);
	printf("\n请输入通过立项时间:");
	scanf("%s",a[nn].stime);
	printf("\n请输入结项时间:");
	scanf("%s",a[nn].etime);
	printf("\n请输入经费总额:");
	scanf("%s",a[nn].smoney);
	printf("\n请输入年均经费金额:");
	scanf("%s",a[nn].emoney);
	printf("\n请输入论文题目/专著名称:");
	fflush(stdin);
	nn++;
	i=nn;
	if((fp1=fopen("xiangmu.txt","w"))==NULL) 
	{
		printf("找不到该文件\n");
		exit(0);
	}
	fprintf(fp1,"%6s%6s%6s%6s%6s",a[i].code,a[i].name,a[i].leibie,a[i].fzr,a[nn].danwei);
	fprintf(fp1,"%6s%6s%6s%6s",a[i].stime,a[i].etime,a[i].smoney,a[i].emoney);
    fclose(fp1);
}

void Add2()
{
	FILE *fp2;
	int i,j,k,q;
    printf("\n\n添加论文:");
    printf("\n请输入论文名称/专著名称:");
    scanf("%s",b[mm].timu);
    printf("\n请输入项目编号:");
    scanf("%s",b[mm].code);
    printf("\n请输入第一作者:");
    scanf("%s",b[mm].zuozhe);
    printf("\n请输入期刊名称卷号/专著出版社:");
    scanf("%s",b[mm].qikan);
    printf("\n请输入出版时间:");
    scanf("%s",b[mm].chuban);
    fflush(stdin);
    
    mm++;
    i=mm;
    if((fp2=fopen("lunwen.txt","w"))==NULL) 
	{
		printf("找不到该文件\n");
		exit(0);
	}
	fprintf(fp2,"%6s%6s%6s%6s%6s",b[i].timu,b[i].code,b[i].zuozhe,b[i].qikan,b[i].chuban);
    fclose(fp2);
    for(j=0;j<mm;j++)
    {
    	for(k=0;k<nn;k++)
    	{
		    if(strcmp(b[i].code,a[k].code)==0)
		        a[k].lunwen++;
		        break;
		}
	}
} 

void Add3()
{
	FILE *fp3;
	int i,j,k;
	printf("\n\n添加专利:");
	printf("\n请输入专利名称:");
	scanf("%s",c[rr].name);
	printf("\n请输入专利号:");
	scanf("%s",c[rr].id);
	printf("\n请输入项目编号:");
	scanf("%s",c[rr].code);
	printf("\n请输入专利所有权人:");
	scanf("%s",c[rr].syr);
	printf("\n请输入专利获得时间:");
	scanf("%s",c[rr].time);
	printf("\n请输入专利有效期限:");
	scanf("%s",c[rr].lim);
	fflush(stdin);
	if((fp3=fopen("zhuanli.txt","w"))==NULL) 
	{
		printf("找不到该文件\n");
		exit(0);
	}
	fprintf(fp3,"%6s%6s%6s%6s%6s%6s",c[rr].code,c[rr].id,c[rr].lim,c[rr].name,c[rr].syr,c[rr].time);
    fclose(fp3);
	for	(j=0;j<mm;j++)
    {
    	for(k=0;k<nn;k++)
    	{
		    if(strcmp(c[i].code,a[k].code)==0)
		        a[k].lunwen+=1;
		        break;
	    }
	}
}

//查找模块 
void Find()
{
	int w,x; 
	int Menu_v=1;
	while(Menu_v)
	{
		do
		{
			puts("\t\t***************项目查询菜单******************\n\n");
			puts("\t\t\t\t 1.由项目负责人姓名查询对应项目\n\n");
			puts("\t\t\t\t 2.查询某类项目\n\n");
			puts("\t\t\t\t 3.由项目编号和名称查询对应项目\n\n");
			puts("\t\t\t\t 4.返回主菜单\n\n");
			puts("\t\t******************************************\n\n");
			printf("你的选择是(1-4):[ ]\b\b");
			scanf("%c",&x);
			fflush(stdin);
		}while (w);
		switch (x)
		{
			case '1':find_fzr(); break;
			case '2':find_leibie(); break;
			case '3':find_name();break;
			case '4':Menu_v=0; return;
		}
	}
}
 
void find_fzr()
{
	int i,flag=0;
	char d[NAM];
	printf("请输入项目负责人姓名\n");
	scanf("%s",d);
	for(i=0;i<nn;i++)
	{
	    if(strcmp(d,a[i].fzr)==0)
		{
			flag=1;
			printf("\n项目编号  项目名称  项目类别  项目负责人  项目负责人所在单位");
			printf("%6s%6s%6s%6s%6s",a[i].code,a[i].name,a[i].leibie,a[i].fzr,a[i].danwei);
			printf("\n通过立项时间   结项时间   经费总额   年均经费金额");
			printf("%6s%6s%6s%6s",a[i].stime,a[i].etime,a[i].smoney,a[i].emoney);
		}
	}
	printf("\n 请按任意键返回主菜单  \n");
	getch();
	fflush(stdin);
	system("cls");
	return;
	if(!flag)
		printf("\n 没找到您要查找项目。");
	printf("\n 请按任意键回项目查询菜单");
	getch();
	fflush(stdin);
}

void find_leibie()
{
	int i,flag=0;
	char e[LB];
	printf("请输入项目类别和:\n");
	scanf("%s",e);
	for(i=0;i<nn;i++)
	{
	    if(strcmp(e,a[i].leibie)==0)
		{
			flag=1;
			printf("\n项目编号  项目名称  项目类别  项目负责人  项目负责人所在单位");
			printf("%6s%6s%6s%6s%6s",a[i].code,a[i].name,a[i].leibie,a[i].fzr,a[i].danwei);
			printf("\n通过立项时间   结项时间   经费总额   年均经费金额");
			printf("%6s%6s%6s%6s",a[i].stime,a[i].etime,a[i].smoney,a[i].emoney);
			
		}
	}
	printf("\n 请按任意键返回主菜单  \n");
	getch();
	fflush(stdin);
	system("cls");
    return;
	if(!flag)
		printf("\n 没找到您要查找项目。");
	printf("\n 请按任意键回项目查询菜单");
	getch();
	fflush(stdin);
} 

void find_name()
{
	int i,flag=0;
	char g[CD],h[NAM];
	printf("请输入项目编号和名称:\n");
	scanf("%s %s",g,h);
	for(i=0;i<nn;i++)
	{
	    if(strcmp(g,a[i].code)==0&&strcmp(h,a[i].name)==0)
		{
			flag=1;
			printf("\n项目编号  项目名称  项目类别  项目负责人  项目负责人所在单位");
			printf("%6s%6s%6s%6s%6s",a[i].code,a[i].name,a[i].leibie,a[i].fzr,a[i].danwei);
			printf("\n通过立项时间   结项时间   经费总额   年均经费金额");
			printf("%6s%6s%6s%6s",a[i].stime,a[i].etime,a[i].smoney,a[i].emoney);
			printf("\n 请按任意键返回主菜单  \n");
	        getch();
	        fflush(stdin);
	        system("cls");
            return;
		}
	}
	if(!flag)
		printf("\n 没找到您要查找项目。");
	printf("\n 请按任意键回项目查询菜单");
	getch();
	fflush(stdin);
}

//统计模块:
void Stcs()
{
	int i,n=0,p=0,q=0,r=0;
	char m[10],t1[10],t2[10],z[10],t3[10];
	printf("\n\n\n请输入年均经费金额的指定值:\n");
	scanf("%s",m);
	printf("请输入结项时间:\n");
	scanf("%s",t1);
	printf("请输入立项时间:\n");
	scanf("%s",t2);
	printf("请输入某单位名称及其立项时间:\n");
	scanf("%s %s",z,t3);
	
	for(i=0;i<nn;i++)
	{
	    if(strcmp(a[i].emoney,m)==0)
		    n++;
		if(strcmp(a[i].etime,t1)==0)
			p++;
		if(strcmp(a[i].stime,t2)==0)
		    q++;
		if(strcmp(a[i].danwei,c)==0&&a[i].stime==t3)
		    r++;
	}
    printf("\n\n\n\n年均经费金额达到指定值的项目数量为:%d个\n",n);
	printf("\n结项时间为上述的项目数为:%d个\n",p);
    printf("\n立项时间为上述的项目数为:%d个\n",q); 
    printf("\n此单位在上述时间通过立项的项目数为:%d个\n",r); 
}

//浏览模块: 
void Brow()
{
    int j;
	for(j=0;j<nn;j++)
	{
		if(j%10==0)
		{
			printf("项目编号 项目名称 项目类别 项目负责人 项目负责人所在单位 通过立项时间 结项时间 经费总额 年均经费金额 论文数量 专利数量\n");
		}
		printf("\n%-8s%-8s%8.0f%8.0f%8.0f",a[j].code,a[j].name,a[j].leibie,a[j].fzr,a[j].danwei);
		printf("%8.0f%8.0f%8.0f%8.0f%8.0f%8.0f\n",a[j].stime,a[j].etime,a[j].smoney,a[j].emoney,a[j].lunwen,a[j].zhuanli);
	}
	printf("\n请按任意键返回菜单");
	getch();
	fflush(stdin);
	system("cls");
	menu();
}
 
void menu()
{
	int sele=1;
	while(sele)
	{
		system("cls");
		printf("\n\n");
		printf("   ************************************\n");
		printf("   *         科研项目管理系统         *\n");
		printf("   ************************************\n");
		printf("   *                                  *\n");
		printf("   *       1.添加        2.查询       *\n");
		printf("   *                                  *\n");
		printf("   *       3.统计        4.浏览       *\n");
		printf("   *                                  *\n");
		printf("   ************************************\n");
		printf(" \n\n请选择功能序号:\n");
		scanf("%d",&sele);
		switch(sele)
		{
			case 1:Append(); break;
			case 2:Find(); break;
			case 3:Stcs(); break;
			case 4:Brow(); break;
		}
		printf("\n\n按任意键继续\n");
		getch();
	}
}