c++ 图书馆藏书管理系统
发布网友
发布时间:2022-06-01 02:02
我来回答
共1个回答
热心网友
时间:2023-11-10 16:52
// 1221.cpp : 定义控制台应用程序的入口点。
//
# include "stdafx.h"
# include <windows.h>
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
# include <string.h>
# include <conio.h>
//***********定义一个书的结构体***********
struct book
{
long login_num;//登录号
char book_name[50];//书名
char book_author[20];//作者名
long book_sort;//分类号
char publisher[50];//出版单位
char pub_time[11];//出版时间
float price;//价格
book * next;
};
//**********定义头指针和末指针**************
book * Head,* End;
//**************创建链表********************
void creat()
{
Head=(book *)malloc(sizeof(book));
End=(book *)malloc(sizeof(book));
Head->next=End;
FILE * fp;
if((fp=fopen("Book","rb"))==NULL)
{
printf("这是一个新的系统,欢迎使用!\n");
printf("按任意键继续。。。。\n");
getch ();
return ;
}
else
{
while(!feof(fp))
{
fread(End,sizeof(book),1,fp);
if(End->login_num <0)
{
break;
}
End=End->next =(book *)malloc(sizeof(book));
}
}
fclose (fp);
}
//**************增加节点********************
void add()
{
printf("请输入登录号:");
scanf("%ld",&End->login_num );
printf("请输入书名:");
scanf("%s",End->book_name );
printf("请输入作者名:");
scanf("%s",End->book_author );
printf("请输入分类号:");
scanf("%ld",&End->book_sort );
printf("请输入出版单位:");
scanf("%s",End->publisher );
printf("请输入出版时间:");
scanf("%s",End->pub_time );
printf("请输入价格:");
scanf("%f",&End->price );
End=End->next =(book *)malloc(sizeof(book));
}
//**************查找节点********************
book * find()//返回上一个节点指针
{
book * p=Head;
char book_name[50];
printf("请输入书的名字:");
scanf("%s",book_name);
getch ();
while(p->next!=End)
{
if((strcmp(book_name,p->next ->book_name ))==0)
{
return p;
}
else
{
p=p->next ;
}
}
printf("sorry !找不到! ");
return NULL;
}
void find2()
{
book * p=find ();
p=p->next ;
if(p!=NULL)
{
printf("找到\n");
printf("登录号:%5ld 书名:%20s \n作者名:%15s 分类号:%5ld \n出版单位:%20s 出版时间:%11s 价格:%f",p->login_num ,p->book_name ,p->book_author ,p->book_sort ,p->publisher ,p->pub_time ,p->price );
}
}
//**************删除节点********************
void del()
{
book * p=find();
if(p==NULL)
{
printf("删除失败!");
getch ();
return ;
}
book * temp=p->next ;
p->next=p->next ->next ;
free (temp);
printf("删除成功!");
getch ();
return ;
}
//**************修改节点********************
void chance ()
{
book * p=find();
if(p==NULL)
{
printf("sorry! 找不到该书!");
getch ();
return ;
}
printf("请输入你要修改后的数据\n");
p=p->next ;
printf("请输入登录号:");
scanf("%ld",&p->login_num );
getch ();
printf("请输入书名:");
scanf("%s",p->book_name );
getch ();
printf("请输入作者名:");
scanf("%s",p->book_author );
getch ();
printf("请输入分类号:");
scanf("%ld",&p->book_sort );
getch ();
printf("请输入出版单位:");
scanf("%s",p->publisher );
getch ();
printf("请输入出版时间:");
scanf("%s",p->pub_time );
getch ();
printf("请输入价格:");
scanf("%f",&p->price );
getch ();
printf("修改成功!\n");
getch ();
return ;
}
//**************释放节点*******************
void del_node()
{
book * p=NULL;
while(Head!=End)
{
p=Head ;
Head=Head->next ;
free (p);
}
free (End);
}
//**************保存节点到文件**************
void save ()
{
book * p=Head->next ;
FILE * fp;
if((fp=fopen ("Book","wb"))==NULL)
{
printf("打开失败!");
getch ();
return ;
}
while(p!=End)
{
fwrite(p,sizeof(book),1,fp);
p=p->next ;
}
del_node ();
fclose (fp);
return ;
}
//******************打印当前图书信息*************
void dispaly1 ()
{
book * p=Head->next ;
while(p!=End)
{
printf("登录号:%5ld 书名:%20s \n作者名:%15s 分类号:%5ld \n出版单位:%20s 出版时间:%11s 价格:%f",p->login_num ,p->book_name ,p->book_author ,p->book_sort ,p->publisher ,p->pub_time ,p->price );
printf("\n");
p=p->next ;
}
}
//*****************主界面函数****************
void dispaly2 ()
{
printf("**************************欢迎使用本图书管理系统****************************\n");
printf("******************** 1,增加图书信息 ********************\n");
printf("******************** 2,查找图书信息 ********************\n");
printf("******************** 3,删除图书信息 ********************\n");
printf("******************** 4,修改图书信息 ********************\n");
printf("******************** 5,打印图书信息 ********************\n");
printf("******************** 6,安全退出系统 ********************\n");
printf("****************************************************************************\n");
}
//**********************Main *******************
void main ()
{
creat ();
int choiece;
while(1)
{
dispaly2 ();
printf("请选择:");
scanf("%d",&choiece);
switch (choiece)
{
case 1:
add();
break;
case 2:
find2();
break;
case 3:
del ();
break;
case 4:
chance ();
break;
case 5:
dispaly1 ();
break;
case 6:
{
save ();
return ;
}
default :
printf("输入错误!\n");
}
getch ();
system("cls");
}
}
//这是一个c语言的,你把printf改为cout;
等等。。。
//相信你自己修改一下就可以了