数据结构实训——图书管理系统

/***********************************************************
* 版权所有 (C)
*
* 文件名称: main.cpp
* 文件标识:无
* 内容摘要:函数文件
* 其它说明:各个模块函数
* 当前版本: V5.0
* 作 者:程德泉
* 完成日期: 20161227
*

**********************************************************/

#include "Library.h"

int X[100];            //暂存数组
int xer=0;             //暂存标记
RecType R[MaxSize];    //哈希数组
Book *H;               //图书链表


int main()
{

    FILE *fpb1,*fpb2;             //文件指针
    Book *p1,*p2,*s1;

    H=Init_B();
    fpb1=fopen("book.txt","rb");               //读方式打开图书文件
    if(fpb1!=NULL)
    {
        p1=(Book *)malloc(sizeof(Book));
        if(!p1) exit(1);
        p1->next=NULL;
        while(fread(p1,sizeof(Book),1,fpb1)==1)
        {
            if(H->next==NULL)
            {
                H->next=p1;
                s1=p1;
            }
            else
            {
                s1->next=p1;
                s1=p1;
            }
            p1=(Book *)malloc(sizeof(Book));
            if(!p1) exit(1);
            p1->next=NULL;
        }
    }
   
    int m,n;
    while(m!=0)
    {
        Face();
        cin>>m;
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<>n;
            cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<next; p2!=NULL; p2=p2->next)
                fwrite(p2,sizeof(Book),1,fpb2);
            fclose(fpb2);
            
          
            exit(0);
        }
    }
    return 0;
}

Library.h

/***********************************************************
* 版权所有 (C)2016
*
* 文件名称: Library.h
* 文件标识:无
* 内容摘要:函数文件
* 其它说明:各个模块函数
* 当前版本: V5.0
* 作 者:程德泉
* 完成日期: 20161227
*

**********************************************************/

#ifndef MY_H_FILE
#define MY_H_FILE

#include 
using namespace std;
#include 
#include 
#include 
#include 
#include 
#include 
#define MaxSize 100              //100条记录

typedef char InfoType[10];
typedef struct          //记录类型
{
    int key;        //关键字项

} RecType;              //排序的记录类型定义
//书的结构体
typedef struct book
{
    float price;                //图书单价
    char name[80];              //图书名
    long num;                   //图书编号
    char writername[20];        //作者姓名
    char publish[40];           //出版社名称
    struct book *next;          //结点指针
} Book,*BookList;

//界面
void Face();
void FaceBook();
void FaceBookSearh();
void FaceDu();
void FaceDuSearh();
//初始化
Book *Init_B();                             //初始化图书链表
int BookAdd(BookList &);                    //建立一个带头结点的链表用来存储图书信息
//查询图书方式
int BookSearch(BookList &);                 //图书查询菜单
int Search_BookNum(BookList &);             //按编号查询
int Search_BookName(BookList &);            //按书名查询
int Search_BookWritername(BookList &);      //按作者名查询
int Search_Publish(BookList &);             //按出版社查询
int Search_AllB(BookList &);                //查询所有图书信息
//删除图书
int BookDel(BookList &);                    //以图书编号作为主键进行删除
//修改图书信息
int BookChange(BookList &);

   

//排序函数
int BookPai(BookList &);
void ShellSort(RecType [],int);
//全局变量声明
extern RecType R[MaxSize];
extern int xer;
extern int X[100];

#endif

Library.cpp

/***********************************************************
* 版权所有 (C)
*
* 文件名称: Library.cpp
* 文件标识:无
* 内容摘要:函数文件
* 其它说明:各个模块函数
* 当前版本: V5.0
* 作 者:程德泉
* 完成日期: 20161227
*
**********************************************************/

#include "Library.h"
/*********************************************************
* 功能描述:初试化图书链表
* 输入参数:无
* 输出参数:无
* 返回值  :图书链表
* 其它说明:无
************************************************************/

Book *Init_B()                  //初试化图书链表
{
    Book *H;
    H=(Book *)malloc(sizeof(Book));
    if(!H) exit(1);
    H->next=NULL;
    return H;
}
/*********************************************************
* 功能描述:图书编号排序
* 输入参数:无
* 输出参数:无
* 返回值  :无
* 其它说明:希尔排序算法
************************************************************/
void ShellSort(RecType R[],int n)   //希尔排序算法
{
    int i,j,gap;
    RecType tmp;
    gap=n/2;                //增量置初值
    while (gap>0)
    {
        for (i=gap; i=0 && tmp.keynext==NULL)
    {
        cout<<"                        ○输入图书编号:";
        cin>>p->num;
        X[xer]=p->num;
        if(p->num==0)           //退出"增加图书"
        {
            cout<<"                                                   共计"<>p->name;
        cout<<"                        ○输入图书价格:";
        cin>>p->price;
        cout<<"                        ○输入作者姓名:";
        cin>>p->writername;
        cout<<"                        ○输入出版社名称:";
        cin>>p->publish;
        p->next=NULL;
        H->next=p;
        q=p;
        ++i;
        cout<next!=NULL)
            q=q->next;
        p->num=1;                      //进入循环的条件
        p->next=NULL;
    }
    while(p->num!=0)                   //以图书编号作为判断链表是否结束
    {
        p=(Book *)malloc(sizeof(Book));
        if(!p) exit(1);
        cout<<"                        ○输入图书编号:";
        cin>>p->num;
        //希尔数组的加入
        X[xer]=p->num;
        if(p->num==0)                  //退出"增加图书"
        {
            cout<<"                                                    共计"<next; s!=NULL; s=s->next)
            if(p->num==s->num)
            {
                cout<<"                           ≮此编号已被注册!≯                           "<>p->name;
        cout<<"                        ○输入图书价格:";
        cin>>p->price;
        cout<<"                        ○输入作者姓名:";
        cin>>p->writername;
        cout<<"                        ○输入出版社名称:";
        cin>>p->publish;
        p->next=NULL;
        q->next=p;
        q=p;
        ++i;
        //希尔数组的加入

        cout<next;
    long n;
    int flag=0;
    cout<<"                        ○输入要查询的书的编号:";
    cin>>n;
    for(; p!=NULL; p=p->next)
    {
        if(n==p->num)
        {
            if(flag==0)
                cout<name<<"  "<num<price<writername<publish<next;
    char n[80];
    int flag=0;
    cout<<"                           ○输入要查询的书名:";
    cin>>n;
    for(; p!=NULL; p=p->next)
    {
        if(strcmp(p->name,n)==0)
        {
            if(flag==0)
                cout<name<<"  "<num<price<writername<publish<next;
    int flag=0;
    char n[30];
    cout<<"                        ○输入要查询的书的作者名:";
    cin>>n;
    for(; p!=NULL; p=p->next)
    {
        if(strcmp(p->writername,n)==0)
        {
            if(flag==0)
                cout<name<<"  "<num<price<writername<publish<next;
    int flag=0;
    char n[50];
    cout<<"                           ○输入要查询的书的出版社名称:";
    cin>>n;
    for(; p!=NULL; p=p->next)
    {
        if(strcmp(p->publish,n)==0)
        {
            if(flag==0)
                cout<name<<"  "<num<price<writername<publish<next;
    int i=0,flag=0;
    for(; p!=NULL; p=p->next)
    {
        if(flag==0)
            cout<name<<"  "<num<price<writername<publish<>m;
        cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<>n;
    for(; p!=NULL; p=p->next)
    {
        if(p->next!=NULL&&p->next->num==n)
        {
            p->next=p->next->next;            //删除语句
            cout<<"                              √成功删除!"<>n;
    for(; p!=NULL; p=p->next)
    {
        if(p->num==n)
        {
            m=1; 

            cout<<"以下为要修改的图书:"<name<<"  "<num<price<writername<publish<>p->num;
            cout<<"                        ○输入书名:";
            cin>>p->name;
            cout<<"                        ○输入图书价格:";
            cin>>p->price;
            cout<<"                        ○输入作者姓名:";
            cin>>p->writername;
            cout<<"                        ○输入出版社名称:";
            cin>>p->publish;
            cout<<"                              √成功修改!"<next;
    int i;


    for(i=0; inext)
    {
        cout<name<<"  "<num<price<writername<publish<


运行结果:


数据结构实训——图书管理系统_第1张图片

数据结构实训——图书管理系统_第2张图片

数据结构实训——图书管理系统_第3张图片


你可能感兴趣的:(数据结构实训——图书管理系统)