参考:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct off_type
{
char num[15];
char name[10];
int stock;
char supplier[20];
char phone[20];
};
extern int off_num;
extern struct off_type off[];
void add();
int display(char str[]);
void find();
void modify();
void del();
void save_txt();
void load_txt();
void main()
{
int choice;
while(1)
{
printf("\n欢迎使用办公用品管理系统\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("---------------------------------------------------\n");
printf("请选择功能模块,输入数字1-8:");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case 1:
add();
break;
case 2:display("");break;
case 3:find();break;
case 4:modify();break;
case 5:del();break;
case 6:save_txt();break;
case 7:load_txt();break;
case 8:exit(0);break;
}
}
}
struct off_type off[100];
int off_num=0;
void add()
{
int i=off_num;
char end[] = {"0"};
printf("说明:依次输入办公用品信息,当输入的编号为0时表示输入结束\n");
while(1)
{
printf("请输入第%d个办公用品的信息\n",i+1);
printf("请输入编号:");
fflush(stdin);
scanf("%s",&off[i].num);
if(strcmp(off[i].num,"0")==0)
{
return;
}
printf("请输入名称:");
scanf("%s",off[i].name);
printf("请输入库存:");
scanf("%d",&off[i].stock);
printf("请输入供货商:");
scanf("%s",&off[i].supplier);
printf("请输入联系方式:");
scanf("%s",&off[i].phone);
i++;
}
off_num=i;
printf("总共已输入%s个办公用品的信息\n",off_num);
}
int display(char str[])
{
int i,k=-1;
if(strlen(str)==0)
{
if(off_num>0)
{
printf("办公用品编号\t名称\t库存\t供货商\t联系方式\n");
for(i=0;i<off_num;i++)
printf("%s\t%s\t%s\t%s\t%s\t%s\n",off[i].num,off[i].name,off[i].stock,off[i].supplier,off[i].phone);
}
else
printf("办公用品信息为空!");
}
else
{
for(i=0;i<off_num;i++)
if(strcmp(str,off[i].num)==0)
{
printf("办公用品编号\t名称\t库存\t供货商\t联系方式\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\n",off[i].num,off[i].name,off[i].stock,off[i].supplier,off[i].phone);
k=i;
}
if(k==-1)
printf("没有找到符合条件的办公用品\n");
}
return k;
}
void find()
{
char str[15];
printf("请输入要查找的办公用品:");
scanf("%s",str);
display(str);
}
void modify()
{
char str[15],m;
int i;
printf("请输入要修改的办公用品编号:");
scanf("%s",str);
i=display(str);
if(i!=-1)
{
printf("确认修改该办公用品的信息吗?(y/n):");
m=getche();
if(m=='y'||m=='Y')
{
printf("\n请输入该办公用品的信息\n");
printf("\n请输入编号:");
scanf("%s",off[i].num);
printf("\n请输入名称:");
scanf("%s",off[i].name);
printf("请输入库存:");
scanf("%s",&off[i].stock);
printf("请输入供货商:");
scanf("%s",&off[i].supplier);
printf("请输入联系方式:");
scanf("%s",&off[i].phone);
}
}
}
void del()
{
char str[15],m;
int i,j;
printf("请输入要删除的办公用品编号:");
scanf("%s",str);
i=display(str);
if(i!=-1)
{
printf("确认删除该办公用品的信息吗?(y/n):");
m=getche();
if(m=='y'||m=='Y')
{
off_num--;
for(j=i;j<off_num;j++)
off[j]=off[j+1];
printf("\n记录删除成功!\n");
}
}
}
void save_txt()
{
FILE *fp;
char fname[20];
int i;
printf("请输入文件名(如:off.txt):");
scanf("%s",fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("不能打开文件,文件保存失败\n");
return;
}
for(i=0;i<off_num;i++)
fprintf(fp,"%s %s %s %s %s %s\n",off[i].num,off[i].name,off[i].stock,off[i].supplier,off[i].phone);
printf("文件保存成功!\n");
fclose(fp);
}
void load_txt()
{
FILE *fp;
char fname[20];
int i=0,flag;
printf("请输入文件名(如:off.txt):");
scanf("%s",fname);
if((fp=fopen(fname,"r"))==NULL)
{
printf("不能打开文件,文件读取失败!\n");
return;
}
while(1)
{
flag=fscanf(fp,"%s %s %s %s %s",off[i].num,off[i].name,off[i].stock,off[i].supplier,off[i].phone);
if(flag==EOF)
break;
i++;
}
off_num=i;
printf("从文件中成功读取%d条记录!\n",i);
fclose(fp);
}