📄 book.c
字号:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void menu(); /*菜单主介面函数*/
void input(); /*图书输入函数*/
void output(); /*图书浏览函数*/
void demand(); /*图书查询函数*/
void sequence(); /*图书排序函数*/
void del(); /*图书修改.删除函数*/
void reclaim(); /*回收站功能函数*/
void xingxi(int); /*用于储存图书信息格式*/
int choice;
struct date
{
int year;
int month;
int day;
};
struct book
{
int num;
char bname[20];
char author[10];
int clanum;
char pubcom[15];
struct date bk_dt;
int price;
}bk[88];
void main()
{
do
{
menu(); /*菜单主介面函数*/
switch (choice)
{
case 1 : input(); break; /*图书输入函数*/
case 2 : output(); break; /*图书浏览函数*/
case 3 : demand(); break; /*图书查询函数*/
case 4 : sequence(); break; /*图书排序函数*/
case 5 : del(); break; /*图书修改.删除函数*/
case 6 : reclaim(); break; /*回收站功能函数*/
}
}while(choice!=7);
if (choice==7)
{
system("cls");
printf("\n\n\n\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆谢 谢 使 用!!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("\n\n\n\n\t\t制作人:李磊");
printf("\n\n\n\n\t\tQQ: 254652303");
getchar();getchar();
}
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义菜单主介面函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void menu()
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 馆 系 统☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\t\t\t\t1. 图书信息录入.\n\n");
printf("\t\t\t\t2. 图书信息浏览.\n\n");
printf("\t\t\t\t3. 图书信息查询.\n\n");
printf("\t\t\t\t4. 图书信息排序.\n\n");
printf("\t\t\t\t5. 图书信息修改 / 删除.\n\n");
printf("\t\t\t\t6. 回收站.\n\n");
printf("\t\t\t\t7. 退出.\n\n\n\n\n");
printf("\t\t\t\t\t请输入:");
scanf("%d",&choice);
while (choice>7||choice<1)
{
printf("\t\t\t输入有误,请输入( 1 - 7 ):");
scanf("%d",&choice);
}
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书输入函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void input()
{
int i = 0,flag,j,k,flag1;
FILE *fp;
struct book temp;
fp=fopen("book.dat","ab");
fclose(fp);
do
{
fp=fopen("book.dat","rb");
fseek(fp,0,2);
j=ftell(fp)/sizeof(struct book);
rewind(fp);
for(k=0;k<j;k++)
fread(&bk[k],sizeof(struct book),1,fp);
fclose(fp);
do
{
flag1 = 0;
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 录 入☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("图书编号:");
scanf("%d",&temp.num);
for(k=0;k<j;k++)
{
if(bk[k].num==temp.num)
{
flag1 = 1;
printf("\t输入的图书编号已有,请重新输入!");
getchar();getchar();
break;
}
}
}while(flag1);
printf("书名:");
scanf("%s",temp.bname);
printf("作者:");
scanf("%s",temp.author);
getchar();
printf("分类号:");
scanf("%d",&temp.clanum);
printf("出版单位:");
scanf("%s",temp.pubcom);
getchar();
do
{
printf("出版时间 年:");
scanf("%d",&temp.bk_dt.year);
if (temp.bk_dt.year<1000||temp.bk_dt.year>2005)
printf("年份输入有误!");
}while(temp.bk_dt.year<1000||temp.bk_dt.year>2005);
do
{
printf(" 月:");
scanf("%d",&temp.bk_dt.month);
if (temp.bk_dt.month<1||temp.bk_dt.month>12)
printf("月份输入有误!");
}while(temp.bk_dt.month<1||temp.bk_dt.month>12);
do
{
printf(" 日:");
scanf("%d",&temp.bk_dt.day);
if (temp.bk_dt.day<1||temp.bk_dt.day>31)
printf("日输入有误!");
}while(temp.bk_dt.day<1||temp.bk_dt.day>31);
printf("价格:");
scanf("%d",&temp.price);
fp = fopen("book.dat","ab");
fwrite(&temp,sizeof(struct book),1,fp);
fclose(fp);
printf("是否继续输入下一条信息?\t1 . 继续\t2 . 返回");getchar();
scanf("%d",&flag);
i++;
}while(i<88&&flag==1);
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书浏览函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void output()
{
FILE *fp;
int t=0,i=0,j=0;
if((fp=fopen("book.dat","rb"))==NULL)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return;
}
fseek(fp,0,2);
j=ftell(fp)/sizeof(struct book);
if(j==0)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return;
}
rewind(fp);
for(i=0;i<j;i++)
{
fread(&bk[i],sizeof(struct book),1,fp);
}
i = 0;
while(t!=3)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 浏 览☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\n \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",j,i+1);
xingxi(i);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.返回主界面\n");
printf("\n\n\n\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(i<j-1)
i++;
else if(i == j-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t == 2)
if(i > 0)
i--;
else if(i == 0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
}
fclose(fp);
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书查询函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void demand()
{
FILE *fp;
int choice,i,j,k,t,p,count=0,n=0;
struct book ab[25];
char xingming[20];
char shuming[30];
if((fp=fopen("book.dat","rb"))== NULL)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return ;
}
fseek(fp,0,2);
i=ftell(fp)/sizeof(struct book);
if(i==0)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return;
}
rewind(fp);
for(j = 0;j < i ;j++)
fread(&bk[j],sizeof(struct book),1,fp);
fclose(fp);
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
printf("\t\t\t ◇ 1 .按 作 者 名 查 询 ◇\n\n\n");
printf("\t\t\t ◇ 2 .按 书 名 查 询 ◇\n\n\n");
printf("\t\t\t ◇ 3 .返 回 主 界 面 ◇\n\n\n");
printf("\n\n\n\n\n\n\n\t\t\t\t\t\t请输入 :");
scanf("%d",&choice);
if (choice==1)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
printf("请输入 (注:只需输入作者姓名.) :");
scanf("%s",xingming);
for(j=0;j<i;j++)
{
p=strcmp(bk[j].author,xingming);
if (p==0)
{
count++;
ab[n++]=bk[j];
}
}
if (count==0)
{
system("cls");
printf("\n\n\n\n\n\n\t\t\t 没 有 相 关 图 书 !!");
printf("\n\n按任意键返回主界面");
getchar();getchar();
return;
}
k = 0;
while(t!=3)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\n \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",n,k+1);
printf("图书编号:%d\n",ab[k].num);
printf("书名:");puts(ab[k].bname);
printf("作者:");puts(ab[k].author);
printf("分类号:%d\n",ab[k].clanum);
printf("出版单位:");puts(ab[k].pubcom);
printf("出版时间(年/月/日):%d/%d/%d\n",ab[k].bk_dt.year,ab[k].bk_dt.month,ab[k].bk_dt.day);
printf("价格:%d\n",ab[k].price);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.返回主界面\n");
printf("\n\n\n\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(k<count-1)
k++;
else if(k==count-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==2)
if(k>0)
k--;
else if(k==0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
}
}
else if (choice==2)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
printf("请输入 (注:输入书名.) :");
scanf("%s",shuming);
for(j=0;j<i;j++)
{
p=strcmp(bk[j].author,shuming);
if (p==0)
{
count++;
ab[n++]=bk[j];
}
}
if (count==0)
{
system("cls");
printf("\n\n\n\n\n\n\t\t\t 没 有 相 关 图 书 !!");
printf("\n\n按任意键返回主界面");
getchar();getchar();
return;
}
k=0;
while(t!=3)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 查 询☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\n \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",n,k+1);
printf("图书编号:%d\n",ab[k].num);
printf("书名:");puts(ab[k].bname);
printf("作者:");puts(ab[k].author);
printf("分类号:%d\n",ab[k].clanum);
printf("出版单位:");puts(ab[k].pubcom);
printf("出版时间(年/月/日):%d/%d/%d\n",ab[k].bk_dt.year,ab[k].bk_dt.month,ab[k].bk_dt.day);
printf("价格:%d\n",ab[k].price);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.返回主界面\n");
printf("\n\n\n\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(k<count-1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -