完成图书管理系统
1) 定义图书结构体,包括成员 编号 书名 作者 出版日期
2) 完成图书的录入 (添加)
3) 能输出单条图书信息
4) 能整体输出所有图书信息
5) 完成图书的查询 (按编号 按书名)
6) 完成图书的修改 (根据编号修改)
7) 完成图书的删除 (删除某个指定编号的图书)
8) 完成图书的排序 (按编号)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//时间结构体
struct date
{
int year;
int month;
int day;
};
//图书结构体
struct book
{
char name[100];
int number;
char writer[52];
struct date pub_date;
};
//录入图书函数
void insert_book(struct book *p, int n)
{
scanf("%s%d%s%d%d%d", p[n].name,&p[n].number, p[n].writer,
&p[n].pub_date.year, &p[n].pub_date.month, &p[n].pub_date.day);
if()
}
//输出某本图书信息
void print_book(struct book *p)
{
printf("\n书名: %s\n编号: %d\n作者: %s\n出版日期: %4d-%02d-%02d\n",p->name, p->number, p->writer, p->pub_date.year, p->pub_date.month, p->pub_date.day);
}
//输出全部图书信息
void print_all_book(struct book *p, int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("\n书名: %s\n编号: %d\n作者: %s\n出版日期: %4d-%02d-%02d\n",p[i].name,p[i].number, p[i].writer,
p[i].pub_date.year, p[i].pub_date.month, p[i].pub_date.day);
}
}
//通过编号查找图书位置
int find_by_number(struct book *p, int n, int number)
{
int i;
for(i = 0; i < n; i++)
{
if( number == p[i].number)
{
return i;
}
}
}
//通过名称查找图书位置
int find_by_name(struct book *p, int n, char *name)
{
int i;
for(i = 0; i < n; i++)
{
int x = strcmp( p[i].name, name);
if( x == 0)
{
return i;
}
}
}
//根据编号修改图书信息
void update_book(struct book *p, int num)
{
printf("输入修改图书信息\n");
scanf("%s%d%s%d%d%d", p[num].name,&p[num].number, p[num].writer,
&p[num].pub_date.year, &p[num].pub_date.month, &p[num].pub_date.day);
}
//删除某个指定编号的图书
void delete_book(struct book *p,int x, int n)
{
int i;
for(i = n; i < x; i++)
{
p[i] = p[i + 1];
}
}
//按编号排序图书
void sort_by_number(struct book *p, int n)
{
int i, j;
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n-i-1;j++)
{
if(p[j].number > p[j + 1].number)
{
struct book t;
t = p[j];
p[j] = p[ j + 1 ];
p[ j + 1 ] = t;
}
}
}
}
int main()
{
struct book b[1000] = {0};
int count = 0;
int n;
while(1)
{
printf("\n输入:\n1--->录入图书\n2--->输出全部图书信息\n3--->编号查找图书\n4--->名称查找图书\n5--->根据编号修改图书信息\n6--->删除某个指定编号的图书\n7--->按编号排序图书\n8--->退出\n");
scanf("%d",&n);
if( n == 1 )
{
printf("输入图书信息:\n");
insert_book(b, count);
count++;
}
else if( n == 2 )
{
print_all_book(b, count);
}
else if( n == 3 )//通过编号查找图书位置
{
int number;
printf("输入编号:\n");
scanf("%d", &number);
int num = find_by_number(b, count, number);
printf("所在位置: %d\n", num);
print_book(&b[num]);
}
else if( n == 4 )
{
char name[100];
printf("输入姓名:\n");
scanf("%s", name);
int num = find_by_name(b, count, name);
printf("所在位置: %d\n", num);
print_book(&b[num]);
}
else if( n == 5 )//根据编号修改图书信息
{
int num;
printf("输入修改图书编号:\n");
scanf("%d", &num);
int x = find_by_number(b, count, num);
update_book(b, x);
}
else if( n == 6 )//删除某个指定编号的图书
{
int num;
printf("输入删除图书编号:\n");
scanf("%d", &num);
int x = find_by_number(b, count, num);
delete_book(b,count, x);
count--;
}
else if( n == 7)//按编号排序图书
{
sort_by_number(b, count);
}
else if( n == 8)
{
return 0;
}
}
}