#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();
}
}