#include"stdio.h"
#include
#include
#include
void load();
void save();
void input();
void search();
void menu();
void search_name();
void search_writer();
void search_press();
void search_year();
int search_isbn();
void xiugai();
void add();
void shuchu();
void revise(int k);
void deletel(int k);
unsigned long suiji();
int M=0;
struct employee
{
char name[20];
char writer[20];
unsigned long isbn;
char press[20];
int year;
double price;
char place[20];
};
struct employee emp[1000];
void menu()
{
int a;
while(1)
{
printf("==================图书信息管理系统==================\n");
printf(" \t1.录入图书信息 2.图书信息浏览\n");
printf(" \t3.图书查询 4.修改和删除图书信息\n");
printf(" \t5.添加图书信息 6.退出系统\n");
printf("====================================================\n");
printf(" 请选择,输入1-键: ");
scanf("%d",&a);
switch(a)
{
case 1:input();break;
case 2:shuchu();break;
case 3:search();break;
case 4:xiugai();break;
case 5:add();break;
case 6:exit(0);break;
default:printf("\n非法操作!\n");
}
system("pause");
system("cls");
}
}
void input()
{
int i,j;
printf("\n 欢迎进入录入图书信息\n");
printf("===========================================\n");
printf("\n输入要添加的图书的本数:");
for(i=0;i<10;i++)
{
scanf("%d",&j);
if(j<1000)
{
break;
}
printf("该系统只能存放1000本以内的信息,请重新输入\n");
}
if(i==10)
{
printf("输入的本数超过范围\n");
exit(0);
}
for(i=0;iprintf("请输入第%d本图书的书名:",i+1);
scanf("%s",emp[i].name);
printf("请输入第%d本图书的作者:",i+1);
scanf("%s",emp[i].writer);
printf("请输入第%d本图书的出版单位:",i+1);
scanf("%s",emp[i].press);
printf("请输入第%d本图书的出版年份:",i+1);
scanf("%d",&emp[i].year);
printf("请输入第%d本图书的价格:",i+1);
scanf("%f",&emp[i].price);
printf("请输入第%d本图书的位置:",i+1);
scanf("%s",emp[i].place);
emp[i].isbn=suiji();
printf("该图书的isbn号被系统定义为:%1u\n",emp[i].isbn);
}
M=j;
save();
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("employee.txt","wb"))==NULL)
{
printf("Can not open the file!\n");
exit(0);
}
for(i=0;ifwrite(&emp[i],sizeof(struct employee),1,fp);
fclose(fp);
printf("文件写入操作成功!\n");
}
void load()
{
FILE *fp;
int i;
if((fp=fopen("enployee.txt","rb"))==NULL)
{
printf("Can not open the file!\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&emp[i],sizeof(struct employee),1,fp);
fclose(fp);
M=i-1;
}
unsigned long suiji()
{
unsigned long h;
srand(time (NULL));
h=rand()%1000+2018000;
return h;
}
void search()
{
int b;
printf("\t\t欢迎图书查询模块\n");
printf("----------------------------------------------------------\n");
printf(" 1.按书名查询 2.按作者查询 3.按出版社查询 4.按年份查询 5.按isbn号查询\n");
printf("输入您需要的查询方式:");
scanf("%d",&b);
switch(b)
{
case 1:search_name();break;
case 2:search_writer();break;
case 3:search_press();break;
case 4:search_year();break;
case 5:search_isbn();break;
default:printf("\n非法操作!\n");
}
}
void search_name()
{
int i,j=0;
char c1[10];
load;
printf("请输入你需要查找的书名:");
getchar();
gets(c1);
for(i=0;iif(strcmp(c1,emp[i].name)==0)
{
if(j==0)
{
printf("=======================图书相关信息=====================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d",j+i);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
j++;
}
if(j==0)
printf("没有查找到此图书!!!\n");
}
void search_writer()
{
int i,j=0;
char c1[10];
load();
printf("请输入您需要查找的作者:");
getchar();
gets(c1);
for(i=0;iif(strcmp(c1,emp[i].writer)==0)
{
if(j==0)
{
printf("=======================图书相关信息=====================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d",j+1);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
j++;
}
if(j==0)
printf("没有查找到此图书!!!\n");
}
void search_press()
{
int i,j=0;
char c1[10];
load();
printf("请输入您需要查找的出版社:");
getchar();
gets(c1);
for(i=0;iif(strcmp(c1,emp[i].press)==0)
{
if(j==0)
{
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d",j+1);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
j++;
}
if(j==0)
printf("没有查找到此图书!!!\n");
}
void search_year()
{
int i,j=0,k;
load();
int s;
printf("请输入查找的年份:");
scanf("%d",&s);
for(i=0;iif(s==emp[i].year)
{
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
k=i;
printf("%2d",j+1);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
j++;
break;
}
if(j==0)
printf("没有查找到此图书!!!\n");
}
int search_isbn()
{
load();
int i,j=0,k;
unsigned long n;
printf("输入您需要查找的isbn号:");
scanf("%1u",&n);
for(i=0;iif(n==emp[i].isbn)
{
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
k=i;
printf("%2d",j+1);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
j++;
break;
}
if(j==0)
{
printf("该isbn号不存在\n");
k=-1;
}
return k;
}
void xiugai()
{
int choice;
printf("============欢迎进入信息修改模块=========\n");
load();
int k=search_isbn();
if(k!=-1)
{
printf("1.删除信息 2.修改信息\n");
printf("请输入您的选着\n");
scanf("%d",&choice);
switch(choice)
{
case 1:deletel(k);break;
case 2:revise(k);break;
default:printf("\n非法操作!\n");break;
}
}
else
{
printf("没有查找到您需要修改的的图书信息\n");
}
}
void deletel(int k)
{
char c1;
int i;
printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
getchar();
scanf("%c",&c1);
if(c1=='Y'||c1=='y')
{
for(i=k;i-1;i++)
emp[i]=emp[i+1];
M=M-1;
save();
printf("删除成功\n");
}
else
exit(0);
}
void revise(int z)
{
char c2;
int i=z;
printf("请输入该图书的书名:\n");
scanf("%s",emp[i].name);
printf("请输入该图书的作者:\n");
scanf("%s",emp[i].writer);
printf("请输入该图书的出版单位:\n");
scanf("%s",emp[i].press);
printf("请输入该图书的出版年份:\n");
scanf("%d",&emp[i].year);
printf("请输入该图书的价格:\n");
scanf("%f",&emp[i].price);
printf("请输入该图书的位置:\n");
scanf("%s",emp[i].place);
printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
getchar();
scanf("%c",&c2);
if(c2=='y'||c2=='Y')
save();
else
exit(0);
}
void add()
{
load();
int m,i,j;
printf("===========进入添加信息模块===========\n");
for(i=0;i<10;i++)
{
printf("请输入您需要添加的本书\n");
scanf("%d",&j);
if(j<1000-M)
{
m=j;
break;
}
printf("该系统只能存放1000本以内的信息,剩余的%d本的空间,请重新输入\n",1000-M);
}
if(i==10)
{
printf("输入的本书超过范围\n");
exit(0);
}
M=M+m;
for(i=0;iprintf("请输入第%d本图书的书名:",i+1);
scanf("%s",emp[i].name);
printf("请输入第%d本图书的作者:",i+1);
scanf("%s",emp[i].writer);
printf("请输入第%d本图书的出版单位:",i+1);
scanf("%s",emp[i].press);
printf("请输入第%d本图书的出版年份:",i+1);
scanf("%d",&emp[i].year);
printf("请输入第%d本图书的价格:",i+1);
scanf("%f",&emp[i].price);
printf("请输入第%d本图书的位置:",i+1);
scanf("%s",emp[i].place);
}
save();
}
void shuchu()
{
load();
int i;
printf("---------------------------------------------------------\n");
printf(" 图书相关信息 \n");
printf("---------------------------------------------------------\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
for(i=0;iprintf("%2d",i+i);
printf("%10s",emp[i].name);
printf("%10s",emp[i].writer);
printf("51u",emp[i].isbn);
printf("%10s",emp[i].press);
printf("%6d",emp[i].year);
printf("%f",emp[i].price);
printf("%10s",emp[i].place);
printf("\n");
}
}
首先要学会调试
如果程序必须执行一次,就选择do…while
如果不确定系统要执行的次数可以使用for语句
修改完善如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MaxN 1000
void load();
void save();
void input();
void search();
void search_name();
void search_writer();
void search_press();
void search_year();
int search_isbn();
void xiugai();
void add();
void shuchu();
void revise(int k);
void deletel(int k);
unsigned long suiji();
int M = 0;
struct employee
{
char name[20];
char writer[20];
unsigned long isbn;
char press[20];
int year;
double price;
char place[20];
};
struct employee emp[MaxN];
void main() //menu()
{
int a;
load();
while (1)
{
printf("==================图书信息管理系统==================\n");
printf(" \t1.录入图书信息 2.图书信息浏览\n");
printf(" \t3.图书查询 4.修改和删除图书信息\n");
printf(" \t5.添加图书信息 6.退出系统\n");
printf("====================================================\n");
printf(" 请选择,输入1-键: ");
scanf("%d", &a);
switch (a)
{
case 1:input(); break;
case 2:shuchu(); break;
case 3:search(); break;
case 4:xiugai(); break;
case 5:add(); break;
case 6:save(); exit(0); break;
default:printf("\n非法操作!\n");
}
system("pause");
system("cls");
}
}
void input()
{
int i, j;
if (M >= MaxN) {
printf("数据库已满,不能再添加数据.\n");
return;
}
printf("\n 欢迎进入录入图书信息\n");
printf("===========================================\n");
printf("\n输入要添加的图书的本数:");
do {
scanf("%d", &j);
if (j + M > MaxN)
printf("该系统只能存放%d本以内的信息,请重新输入.\n", MaxN - M);
} while (j + M > MaxN);
for (i = M; i < j + M; i++)
{
printf("请输入第%d本图书的书名:", i + 1);
scanf("%s", emp[i].name);
printf("请输入第%d本图书的作者:", i + 1);
scanf("%s", emp[i].writer);
printf("请输入第%d本图书的出版单位:", i + 1);
scanf("%s", emp[i].press);
printf("请输入第%d本图书的出版年份:", i + 1);
scanf("%d", &emp[i].year);
printf("请输入第%d本图书的价格:", i + 1);
scanf("%lf", &emp[i].price);
printf("请输入第%d本图书的位置:", i + 1);
scanf("%s", emp[i].place);
emp[i].isbn = suiji();
printf("该图书的isbn号被系统定义为:%1u\n", emp[i].isbn);
}
M += j;
}
void save()
{
FILE* fp;
int i;
if ((fp = fopen("employee.txt", "wb")) == NULL)
{
printf("Can not open the file!\n");
exit(0);
}
for (i = 0; i < M; i++)
fwrite(&emp[i], sizeof(struct employee), 1, fp);
fclose(fp);
printf("文件保存操作成功!\n");
}
void load()
{
FILE* fp;
int i;
if ((fp = fopen("employee.txt", "rb")) == NULL) //"enployee.txt"
{
printf("Can not open the file!\n");
return;
}
for (i = 0; ; i++)
if (fread(&emp[i], sizeof(struct employee), 1, fp) != 1) break;
fclose(fp);
M = i;
}
unsigned long suiji()
{
unsigned long h;
srand((unsigned int)time(NULL));
h = rand() % 1000 + 2018000;
return h;
}
void search()
{
int b;
printf("\t\t欢迎图书查询模块\n");
printf("----------------------------------------------------------\n");
printf(" 1.按书名查询 2.按作者查询 3.按出版社查询 4.按年份查询 5.按isbn号查询\n");
printf("输入您需要的查询方式:");
scanf("%d", &b);
switch (b)
{
case 1:search_name(); break;
case 2:search_writer(); break;
case 3:search_press(); break;
case 4:search_year(); break;
case 5:search_isbn(); break;
default:printf("\n非法操作!\n"); break;
}
}
void search_name()
{
int i, j = 0;
char c1[10];
printf("请输入你需要查找的书名:");
getchar();
gets(c1);
for (i = 0; i < M; i++)
if (strcmp(c1, emp[i].name) == 0)
{
if (j == 0)
{
printf("=======================图书相关信息=====================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%1u", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
j++;
}
if (j == 0)
printf("没有查找到此图书!!!\n");
}
void search_writer()
{
int i, j = 0;
char c1[10];
printf("请输入您需要查找的作者:");
getchar();
gets(c1);
for (i = 0; i < M; i++)
if (strcmp(c1, emp[i].writer) == 0)
{
if (j == 0)
{
printf("=======================图书相关信息=====================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%1u", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
j++;
}
if (j == 0)
printf("没有查找到此图书!!!\n");
}
void search_press()
{
int i, j = 0;
char c1[10];
printf("请输入您需要查找的出版社:");
getchar();
gets(c1);
for (i = 0; i < M; i++)
if (strcmp(c1, emp[i].press) == 0)
{
if (j == 0)
{
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%1u", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
j++;
}
if (j == 0)
printf("没有查找到此图书!!!\n");
}
void search_year()
{
int i, j = 0, k;
int s;
printf("请输入查找的年份:");
scanf("%d", &s);
for (i = 0; i < M; i++)
if (s == emp[i].year)
{
if (j == 0) {
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
}
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%1u", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
j++;
}
if (j == 0)
printf("没有查找到此图书!!!\n");
}
int search_isbn()
{
int i, j = 0, k = -1;
unsigned long n;
printf("输入您需要查找的isbn号:");
scanf("%lu", &n);
for (i = 0; i < M; i++)
if (n == emp[i].isbn)
{
printf("======================图书相关信息======================\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置\n");
k = i;
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%lu", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
j++;
break;
}
if (j == 0)
printf("该isbn号不存在\n");
return k;
}
void xiugai()
{
int choice;
printf("============欢迎进入信息修改模块=========\n");
int k = search_isbn();
if (k != -1)
{
printf("1.删除信息 2.修改信息\n");
printf("请输入您的选着\n");
scanf("%d", &choice);
switch (choice)
{
case 1:deletel(k); break;
case 2:revise(k); break;
default:printf("\n非法操作!\n"); break;
}
}
else
{
printf("没有查找到您需要修改的的图书信息\n");
}
}
void deletel(int k)
{
char c1;
int i;
printf("确认删除?是输入y或Y,退出程序请按其它任意键\n");
getchar();
scanf("%c", &c1);
if (c1 == 'Y' || c1 == 'y')
{
for (i = k; i < M - 1; i++)
emp[i] = emp[i + 1];
M = M - 1;
printf("删除成功\n");
}
return;
}
void revise(int z)
{
char c2;
int i = z;
printf("请输入该图书的书名:\n");
scanf("%s", emp[i].name);
printf("请输入该图书的作者:\n");
scanf("%s", emp[i].writer);
printf("请输入该图书的出版单位:\n");
scanf("%s", emp[i].press);
printf("请输入该图书的出版年份:\n");
scanf("%d", &emp[i].year);
printf("请输入该图书的价格:\n");
scanf("%lf", &emp[i].price);
printf("请输入该图书的位置:\n");
scanf("%s", emp[i].place);
}
void add()
{
int i, j;
if (M >= MaxN) {
printf("数据库已满,不能再添加数据.\n");
return;
}
printf("===========进入添加信息模块===========\n");
do{
printf("请输入您需要添加的书本数量\n");
scanf("%d", &j);
if (j + M > MaxN)
printf("该系统只能存放%d本以内的信息,剩余的%d本的空间,请重新输入\n", MaxN, MaxN - M);
} while (j + M > MaxN);
for (i = M; i < M + j; i++)
{
printf("请输入第%d本图书的书名:", i + 1);
scanf("%s", emp[i].name);
printf("请输入第%d本图书的作者:", i + 1);
scanf("%s", emp[i].writer);
printf("请输入第%d本图书的出版单位:", i + 1);
scanf("%s", emp[i].press);
printf("请输入第%d本图书的出版年份:", i + 1);
scanf("%d", &emp[i].year);
printf("请输入第%d本图书的价格:", i + 1);
scanf("%lf", &emp[i].price);
printf("请输入第%d本图书的位置:", i + 1);
scanf("%s", emp[i].place);
emp[i].isbn = suiji();
printf("该图书的isbn号被系统定义为:%lu\n", emp[i].isbn);
}
M += j;
}
void shuchu()
{
int i;
printf("---------------------------------------------------------\n");
printf(" 图书相关信息 \n");
printf("---------------------------------------------------------\n");
printf("序列 书名 作者 IBSN号 出版单位 出版年份 价格 位置 \n");
for (i = 0; i < M; i++)
{
printf("%2d", i + 1);
printf("%10s", emp[i].name);
printf("%10s", emp[i].writer);
printf("%1u", emp[i].isbn);
printf("%10s", emp[i].press);
printf("%6d", emp[i].year);
printf("%f", emp[i].price);
printf("%10s", emp[i].place);
printf("\n");
}
}