📄 main3.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book //定义书的结构体
{
int booknum;
char bookname[10];
char bookcreat[10];
char writer[10];
int lendture;
};
struct reader //定义读书卡的结构体
{
int cardnum;
char readername[10];
int classes;
};
struct card //定义读书卡的结构体
{
struct reader one;
int booknum;
int lenddate;
};
struct librarian /*图书管理员类型*/
{
int librnnum;
char librnname[15];
int librnage;
char librnsex[10];
}librarian [50];
void addbook( );
void delbook( );
void modbook( );
void countbook();
void findbook();
void lendbook();
void returnbook();
void countbookin();
void addcard();
void delcard();
void modcard();
void countcard();
void addpeople();
void delpeople();
void modpeople( ) ;
void countpeople();
main()
{
int choosenum,choosenum1,choosenum2,choosenum3,choosenum4; //定义各模块的选择操作号
int cycle,cyclebook,cyclereader,cyclelibrarian,cyclecard; //定义各模块的循环变量
int n,i;
cycle=1;cyclebook=1;cyclereader=1;cyclelibrarian=1;cyclecard=1;
while(cycle!=-1)
{
printf("*****欢迎进入图书管理系统!*****\n请选择您所要进入的模块:\n");
printf(" 1.书库管理模块 \n");
printf(" 2.借阅管理模块 \n");
printf(" 3.读者管理模块 \n");
printf(" 4.馆员管理模块 \n");
scanf("%d",&choosenum);
switch(choosenum)
{
case 1:printf("*****欢迎进入书库管理模块!*****\n");
while(cyclebook!=-1)
{
printf("请选择您要进行的操作:\n");
printf(" 1.新增图书 \n");
printf(" 2.删除图书 \n");
printf(" 3.修改图书 \n");
printf(" 4.统计图书 \n");
scanf("%d",&choosenum1);
switch(choosenum1)
{
case 1:printf("开始新增图书!\n");
printf("请输入您要怎加的书的数目:\n");
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
addbook();
printf("新增图书完毕!");
getch();
cyclebook=-1;break;
case 2:printf("开始删除图书!\n");
delbook( );
cyclebook=-1;break;
case 3:printf("开始修改图书!\n");
modbook( );
printf("修改图书完成!");
getch();
cyclebook=-1;break;
case 4:printf("开始统计图书!\n");
countbook();
printf("统计图书完毕!");
getch();
cyclebook=-1;break;
default:printf("输入错误!请重试...\n");
cyclebook=1;break;
}
}
cycle=-1;break ;
case 2:printf("*****欢迎进入借阅管理模块!*****\n");
while(cyclereader!=-1)
{
printf("请选择您要进行的操作:\n");
printf(" 1.查找所需图书 \n");
printf(" 2.登记借阅图书 \n");
printf(" 3.登记归还图书 \n");
printf(" 4.统计在馆图书 \n");
scanf("%d",&choosenum2);
switch(choosenum2)
{
case 1:printf("开始查找图书!\n");
findbook();
printf("查找完毕!");
getch();
cyclereader=-1;break;
case 2:printf("开始登记外借图书!\n");
lendbook();
printf("登记借书完毕!");
getch();
cyclereader=-1;break;
case 3:printf("开始登记归还图书!\n");
returnbook();
printf("登记还书完毕!");
getch();
cyclereader=-1;break;
case 4:printf("开始统计在馆图书!\n");
countbookin();
printf("统计完毕!");
getch();
cyclereader=-1;break;
default: printf("输入错误!请重试...\n");
cyclereader=1;break;
}
}
cycle=-1;break;
case 3:printf("*****欢迎进入读者管理模块!*****\n");
while(cyclecard!=-1)
{
printf("请选择您要进行的操作:\n");
printf(" 1.办理读书卡 \n");
printf(" 2.取消图书卡 \n");
printf(" 3.修改图书卡 \n");
printf(" 4.统计图书卡 \n");
scanf("%d",&choosenum3);
switch(choosenum3)
{
case 1:printf("开始办理读书卡!\n");
addcard();
printf("办理完成!");
getch();
cyclecard=-1;break;
case 2:printf("开始取消读书卡!\n");
delcard();
printf("取消完成!");
getch();
cyclecard=-1;break;
case 3:printf("开始修改图书卡!\n");
modcard();
cyclecard=-1;break;
case 4:printf("开始统计图书卡!\n");
countcard();
printf("统计完成!");
getch();
cyclecard=-1;break;
default:printf("输入错误!请重试...\n");
cyclecard=1;break;
}
}
cycle=-1;break;
case 4:printf("*****欢迎进入馆员管理模块!*****\n");
while(cyclelibrarian!=-1)
{
printf("请选择您要进行的操作:\n");
printf(" 1.新增馆员信息 \n");
printf(" 2.删除馆员信息 \n");
printf(" 3.修改馆员信息 \n");
printf(" 4.统计馆员 \n");
scanf("%d",&choosenum4);
switch(choosenum4)
{
case 1:printf("开始新增馆员信息!\n");
addpeople();
cyclelibrarian=-1;break;
case 2:printf("开始删除馆员信息!\n");
delpeople();
cyclelibrarian=-1;break;
case 3:printf("开始修改馆员信息!\n");
modpeople();
cyclelibrarian=-1;break;
case 4:printf("开始统计在职馆员!\n");
countpeople();
printf("统计完成!");
getch();
cyclelibrarian=-1;break;
default:printf("输入错误!请重试...\n");
cyclelibrarian=1;break;
}
}
cycle=-1;break;
default:printf("输入错误!请重试...\n");
cycle=1;break;
}
}
}
//书库模块函数
void addbook( ) /*增加图书*/
{
struct book newbook={0," "," "," ",0}; //加入的新书
struct book oldbook; //书库中的书
int record_len = sizeof(struct book); //一条记录的长度
FILE *fp; //打开文件
fp=fopen("book.txt","a+"); //a+以读写方式打开一个文件
if(fp==NULL)
{
printf("文件不存在导致打开失败!"); //文件打开失败
exit(0);
}
else //成功打开文件并进行文件输入
{
printf("请输入新书的相关信息:\n");
printf("===================================\n");
printf("请输入新书的编号:\n");
scanf("%d",&newbook.booknum);
getchar();
while(!feof(fp)) //搜索是否有相同的书号
{
fscanf(fp,"%d %s %s %s %d\n",&oldbook.booknum,oldbook.bookname
,oldbook.bookcreat,oldbook.writer,&oldbook.lendture);
if(oldbook.booknum==newbook.booknum)
{
printf("编号已存在!请重新输入新书的编号:\n");
scanf("%d",&newbook.booknum);
getchar();
fseek(fp,0,0);
//break;
}
}
fseek(fp,0,0);
printf("请输入新书的名字:\n");
scanf("%s",newbook.bookname);
printf("请输入新书的出版社:\n");
scanf("%s",newbook.bookcreat);
printf("请输入新书的作者:\n");
scanf("%s",newbook.writer);
printf("请输入新书的在馆信息(1表示书在图书馆,0表示不在图书馆):\n"); //lendture 设置为1表示在馆;设置为0表示不在馆
scanf("%d",&newbook.lendture);
getchar(); //对内容写进文件保存
fprintf(fp,"%d %s %s %s %d\n",newbook.booknum,newbook.bookname
,newbook.bookcreat,newbook.writer,newbook.lendture);
fclose(fp); //关闭文件
}
}
void delbook( ) //删除图书*/
{
char ch=' ';
int number;
struct book oldbook; //书库中的书*/
FILE *fp,*fp1;
fp=fopen("book.txt","a+"); //打开文件myfile
if(fp==NULL)
{
printf("文件不存在导致打开失败!");
exit(0);
}
else //3
{
printf("===================================\n");
printf("请输入要删除书的编号:\n");
scanf("%d",&number);
getchar();
while(!feof(fp)) //查找这本书是否存在
{
//读出每本书的记录
fscanf(fp,"%d %s %s %s %d\n",&oldbook.booknum,oldbook.bookname
,oldbook.bookcreat,oldbook.writer,&oldbook.lendture);
if(oldbook.booknum!=number)//如果读出书的编号和所要找的不同就直接复制文件myfile1
{
fp1=fopen("book1.txt","a+");
if(fp1==NULL)
{
printf("文件不存在导致打开失败!");
exit(0);
}
else
{
fprintf(fp1,"%d %s %s %s %d\n",oldbook.booknum,oldbook.bookname
,oldbook.bookcreat,oldbook.writer,oldbook.lendture);
fclose(fp1);
}
}
else //2
{
printf(" %d %s %s %s %d\n",oldbook.booknum,oldbook.bookname
,oldbook.bookcreat,oldbook.writer,oldbook.lendture); //显示要删除的一条信息
printf("您是否确定删除这本书的记录:\n");
printf("***删除输'Y'****不删输'N'****\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -