/*个人图书信息管理系统 :利用顺序表建立一个存储并管理个人图书信息的系统
抽象数据类型:
数据对象: 建立一个结构体l类型指针 Book,包含图书的各项信息。
D={Book[i] | Book[i]∈CharSet,i=1,2,3...}
数据关系: R1={<Book[i-1],Book[i]>|Book[i-1],Book[i]∈D,i=1,2,3...};
基本操作: 1.系统具备表的建立和初始化;
2.图书信息录入,图书信息数据可以从键盘录入,已录入的图书信息存储到一个文本文件中;
3.图书信息录入,修改,增加,删除的操作;
4.统计图书总数
5.按照图书的某项数据查找图书的功能
@author: Hilda
@date: 30 Sep 2020
@input: some fifteen books
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#define SIZE 20
#define bookNUM 20
#define MODIF 1
#define ADD 2
#define DELETE 3
#define FIND 4
#define OK true
#define ERROR false
struct book{
char name[SIZE]; //书名
char version[SIZE]; //版本
char author[SIZE]; //作者
char publish[SIZE]; //出版社
char ISBN[SIZE]; //ISBN编号
char date[SIZE]; //出版日期
};
typedef struct book BOOK;
typedef struct book * BookPTR;
void init(BookPTR Book,int length); //初始化
void modifMessage(BookPTR Book,int length); //图书信息修改
void addMessage(BookPTR Book,int length); //图书信息增加
void deleteMessage(BookPTR Book,int length); //图书信息删除
bool compare(BookPTR a,char x[],int length); //查找图书信息
void output(BookPTR Book); //将图书信息放入文件
int main(void)
{
BOOK myBook[bookNUM]={0};
int length=0;
char x[SIZE];
printf("欢迎来到图书管理系统!\n");
printf("请输入初始录入的图书数量\n");
scanf("%d",&length);
init(myBook,length);
printf("输入想要进行的操作");
int operation=0;
scanf("%d",&operation);
switch(operation)
{
case MODIF:
modifMessage(myBook,length);break;
case ADD:
addMessage(myBook,length);
length++;break;
case DELETE:
deleteMessage(myBook,length);
length--;break;
case FIND:
if(compare(myBook,x,length)==OK)
{
printf("找到啦!\n");
}
break;
}
printf("图书共有%d本\n",length);
output(myBook);
return 0;
}
/*系统具备表的建立和初始化 */
void init(BookPTR Book,int length)
{
printf("初始化图书信息\n");
/* 录入图书信息 */
int i=0;
while(i != length)
{
printf("请输入书名\n");
scanf("%s",Book[i].name);
printf("请输入版本\n");
scanf("%s",Book[i].version);
printf("请输入作者\n");
scanf("%s",Book[i].author);
printf("请输入出版社\n");
scanf("%s",Book[i].publish);
printf("请输入ISBN码\n");
scanf("%s",Book[i].ISBN);
printf("请输入出版日期\n");
scanf("%s",Book[i].date);
i++;
}
length=i;
printf("初始化成功!\n\n");
}
/*图书信息修改 */
void modifMessage(BookPTR Book,int length)
{
printf("请修改图书信息 !\n");
printf("请输入要修改的目标书的角标\n");
int i;
scanf("%d",&i);
if(i < 0||i > length)
{
printf("出错啦!\n");
}
else
{
printf("请输入书名\n");
scanf("%s",Book[i].name);
printf("请输入版本\n");
scanf("%s",Book[i].version);
printf("请输入作者\n");
scanf("%s",Book[i].author);
printf("请输入出版社\n");
scanf("%s",Book[i].publish);
printf("请输入ISBN码\n");
scanf("%s",Book[i].ISBN);
printf("请输入出版日期\n");
scanf("%s",Book[i].date);
printf("修改图书信息成功!\n\n");
}
}
/*图书信息增加 */
void addMessage(BookPTR Book,int length)
{
printf("请增加图书信息 !\n");
int i=length;
if(length == bookNUM)
{
printf("超限啦!\n");
}
else
{
printf("请输入书名\n");
scanf("%s",Book[i].name);
printf("请输入版本\n");
scanf("%s",Book[i].version);
printf("请输入作者\n");
scanf("%s",Book[i].author);
printf("请输入出版社\n");
scanf("%s",Book[i].publish);
printf("请输入ISBN码\n");
scanf("%s",Book[i].ISBN);
printf("请输入出版日期\n");
scanf("%s",Book[i].date);
printf("增加图书信息成功!\n\n");
length ++;
}
}
/*图书信息删除 */
void deleteMessage(BookPTR Book,int length)
{
printf("请删除图书信息 !\n");
printf("请输入要删除的目标书的角标\n");
int i;
scanf("%d",&i);
if(i < 0||i > length)
{
printf("出错啦!\n");
}
if(length == 0)
{
printf("是空的!\n");
}
else
{
int j;
for(j=i;j<=length-1;j++)
{
Book->name[j] = Book->name[j+1];
Book->version[j] = Book->version[j+1];
Book->publish[j] = Book->publish[j+1];
Book->author[j] = Book->author[j+1];
Book->ISBN[j] = Book->ISBN[j+1];
Book->date[j] = Book->date[j+1];
}
length --;
printf("删除图书信息成功!\n\n");
}
}
/*查找图书 */
bool compare(BookPTR a,char x[],int length)
{
printf("请输入目标书的ISBN码!\n");
scanf("%s",x);
int i;
for(i=0;i<length-1;i++)
{
if(strcmp(a[i].ISBN,x[SIZE])==0)
{
return true;
}
}
return false;
}
void output(BookPTR Book)
{
FILE * fp;
if((fp=fopen("dict.dat","w"))==NULL)
{
printf("文件不能打开!\n");
}
fprintf(Book->author,fp);
fprintf(Book->date,fp);
fprintf(Book->ISBN,fp);
fprintf(Book->publish,fp);
fprintf(Book->name,fp);
fprintf(Book->version,fp);
fclose(fp);
printf("成功放入文件\n");
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.利用顺序表建立一个存储并管理个人图书信息的系统,每一本图书至少包括书名、版本、作者、出版社、ISBN编号、出版日期等数据。系统具备表的建立和初始化,图书信息录入,修改,增加,删除的操作。 2.在本演示程序中,图书信息数据可以从键盘录入,已录入的图书信息存储到一个文本文件中。根据初始输入的操作码,可分别执行一下操作:0-初始化图书信息管理系统,1-录入图书信息,2-修改图书数据,3-增加图书数据,4-删除图书数据,5-统计图书总数,6-根据书名查找图书,7-根据版本查找图书,8-根据作者查找图书,9-根据出版社查找图书,10-根据ISBN编码查找图书,11-根据出版日期查找图书。 3.测试数据: 不少于15本书的信息。
资源详情
资源评论
资源推荐
收起资源包目录
个人图书管理系统.zip (2个子文件)
代码.c 5KB
实验报告.docx 31KB
共 2 条
- 1
BUPT_bo
- 粉丝: 6
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5