📄 图书管理系统.cpp
字号:
//信息工程系图书管理系统
#include "stdio.h"
#include "process.h"
#include "string.h"
#define N 6
struct BOOK{
char name[10]; /*图书名称*/
int num; /*图书编号*/
int press; /*图书所属的出版社*/
float price;
char borrower[20];
struct DATE{
int year;
int month;
int day;
}borrow,back; /*借书日期,归还日期*/
struct BOOK *next; /*定义一个象自己一样的结构体变量*/
};
void enter_data(struct BOOK book[]);
void find_data(struct BOOK book[]);
void show_data(struct BOOK book[]);
struct BOOK *add(),*dele();
void main()
{
int m=0,n;
struct BOOK book[N];
struct BOOK *x,*y;
while(m==0)
{
printf("\n");
printf("*********************\n");
printf(" * * * * * * * * * *\n");
printf("* 信息工程系图书管理系统 *\n");
printf(" * * * * * * * * * *\n");
printf("* *\n");
printf("* 1.建立数据函数 *\n");
printf("* 2.增加数据函数 *\n");
printf("* 3.删除数据函数 *\n");
printf("* 4.查找数据函数 *\n");
printf("* 5.输出数据函数 *\n");
printf("* 6.退出系统 *\n");
printf("* *\n");
printf("********************\n");
printf(" 请输入选项(1-6): \n");
scanf("%d",&n);
switch(n)
{
case 1:printf("执行建立数据函数的命令。\n");enter_data(book);break;
case 2:printf("执行增加数据函数的命令。\n");y=add();break;
case 3:printf("执行删除数据函数的命令。\n");x=dele();break;
case 4:printf("执行查找数据函数的命令。\n");find_data(book);break;
case 5:printf("执行输出数据函数的命令。\n");show_data(book);break;
case 6:printf("退出系统。\n");m=1;break;
default:printf("输入有误,重输!!\n");break;
}
}
}
void enter_data(struct BOOK book[N])
{
int i;
/* FILE *fp; //定义文件指针
if((fp=fopen("BOOK.dat","r"))==NULL) //打开文件失败,退出
{
printf("cannot open this file\n");
exit(1);
} */
for(i=0;i<N;i++)
{
printf("please input the xinxi of this book:\n");
scanf("%s%d%d%12f%s%d%d%d%d%d%d",book[i].name,&book[i].num,&book[i].press,&book[i].price,book[i].borrower,&book[i].borrow.year,&book[i].borrow.month,&book[i].borrow.day,&book[i].back.year,&book[i].back.month,&book[i].back.day);
printf("\n\n");
}
}
struct BOOK *add()
{
int i,j;
struct BOOK book[20];
struct BOOK *p,*q,*head,*next;
p=head;
if(p==NULL) exit(1);
puts("please input the data:");
scanf("%s%d%d%12f%s%d%d%d%d%d%d",book[i].name,&book[i].num,&book[i].press,&book[i].price,book[i].borrower,&book[i].borrow.year,&book[i].borrow.month,&book[i].borrow.day,&book[i].back.year,&book[i].back.month,&book[i].back.day);
if(i==0&&head==NULL)
return p;
else if(i<0) /*数据错误,不做任何操作*/
return head;
else
{
j=1;
q=head;
while(q->next!=NULL&&j<i) /*走链到第i个结点*/
{
q=q->next;
j++;
}
if(j==i)
{
p->next=q->next;
q->next=p;
return head;
}
}
}
void find_data(struct BOOK book[])
{
char temp_name[10];
int i;
printf("\nplease input name of a book that you want to find");
scanf("%s",temp_name); /*输入要查询的图书名称*/
for(i=0;i<N;i++)
{
if(strcmp(book[i].name,temp_name)==0)
{
printf("%s %d %d %12f %s %d %d %d %d %d %d",book[i].name,&book[i].num,&book[i].press,&book[i].price,book[i].borrower,&book[i].borrow.year,&book[i].borrow.month,&book[i].borrow.day,&book[i].back.year,&book[i].back.month,&book[i].back.day);
break; /*跳出循环*/
}
}
if(i<0||i>=N) /*查询失败输出失败信息*/
printf("not found\n");
}
struct BOOK *dele()
{
int i,j;
struct BOOK *q,*head;
if(i==0||head==NULL) return head; /*如果原来的链表为空或参数为0*/
else if(i<0) return head; /*错误数据,不做任何操作*/
else if(i==1&&head->next==NULL) return NULL;
else
{
j=1;
q=head;
while(q->next->next!=NULL&&j<i-1) /*走链到第i-1个结点*/
{
q=q->next;
j++;
}
if(j==i-1)
{
q->next=q->next->next;
return head;
}
}
}
void show_data(struct BOOK book[])
{
int i;
FILE *fp; /*定义文件指针*/
if((fp=fopen("TEACHER.dat","r"))!=NULL)
{
for(i=0;i<N;i++)
{
fscanf(fp,"%s%d%d%12f%s%d%d%d%d%d%d",book[i].name,&book[i].num,&book[i].press,&book[i].price,book[i].borrower,&book[i].borrow.year,&book[i].borrow.month,&book[i].borrow.day,&book[i].back.year,&book[i].back.month,&book[i].back.day); /*从文件中读入各项数据*/
printf("%s%d%d%12f%s%d%d%d%d%d%d",book[i].name,book[i].num,book[i].press,book[i].price,book[i].borrower,book[i].borrow.year,book[i].borrow.month,book[i].borrow.day,book[i].back.year,book[i].back.month,book[i].back.day);
printf("\n\n");
}
}
else
{
printf("\ncannot open this file\n"); /*文件打开失败,退出*/
exit(1);
}
fclose(fp); /*关闭文件*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -