/***********************************************************
* 版权所有 (C)2016,test
*
* 文件名称: main.cpp
* 文件标识:main
* 内容摘要:函数文件
* 其它说明:主函数
* 当前版本: V8.0
* 作 者:陈梦雪
* 完成日期: 20161227
*
* 修改记录1:
* 修改日期 :20161225
* 版本号: V1.0
* 修改人: 陈梦雪
* 修改内容:整理思路,创建基本架构
*
* 修改记录2:
* 修改日期:20161225
* 版本号: V2.0
* 修改人: 陈梦雪
* 修改内容:添加基本功能
*
* 修改记录3:
* 修改日期: 20161226
* 版本号: V3.0
* 修改人: 陈梦雪
* 修改内容:修复大量的BUG
*
* 修改记录4:
* 修改日期: 20161226
* 版本号: V4.0
* 修改人:陈梦雪
* 修改内容:探索新功能
*
* 修改记录5:
* 修改日期: 20161227
* 版本号: V5.0
* 修改人: 陈梦雪
* 修改内容:测试运行 发现问题
*
* 修改记录6:
* 修改日期: 20161227
* 版本号: V6.0
* 修改人:陈梦雪
* 修改内容:更改功能 测试运行
*
* 修改记录6:
* 修改日期: 20161228
* 版本号: V7.0
* 修改人: 陈梦雪
* 修改内容:完善系统的功能
*
* 修改记录6:
* 修改日期: 20161228
* 版本号: V8.0
* 修改人: 陈梦雪
* 修改内容:将程序添加注释,将初始化数据变成文件存储,修改小部分不完善的地方
**********************************************************/
library.h
#include <iostream>
using namespace std;
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fstream>
#include <iomanip>
#define MAX 100
#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();
//初始化
Book *Init_B(); //初始化图书链表
int BookAdd(BookList &); //建立一个带头结点的链表用来存储图书信息
//查询图书方式
int BookSearch(BookList &); //图书查询菜单
int Search_BookNum(BookList &); //按编号查询
int Search_BookName(BookList &); //按书名查询
int Search_BookWritername(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];
library.cpp
#include "library.h"
/*********************************************************
* 功能描述:初试化图书链表
* 输入参数:无
* 输出参数:无
* 返回值 :图书链表
* 其它说明:无
************************************************************/
//增加图书
Book *Init_B() //初试化图书链表
{
Book *H;
H=(Book *)malloc(sizeof(Book));
if(!H) exit(1);
H->next=NULL;
return H;
}
/*********************************************************
* 功能描述:新建图书
* 输入参数:X[xer]-图书编号
* 输出参数:是否成功增加
* 返回值 :(1)
* 其它说明:无
************************************************************/
int BookAdd(BookList &H) //建立一个带头结点的链表用来存储图书信息
{
int i=0; //统计要增加的图书量
Book *p,*q;
p=(Book *)malloc(sizeof(Book));
if(!p) exit(1);
if(H->next==NULL)
{
cout<<" ○请输入图书编号:";
cin>>p->num;
X[xer]=p->num;
if(p->num==0) //退出"增加图书"
{
cout<<" 共计"<<i<<"本图书入库!"<<endl;
cout<<"┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈"<<endl;
return 1;
}
cout<<" ○请输入书名:";
cin>>p->name;
cout<<" ○请输入图书价格:";
cin>>p->price;
cout<<" ○请输入作者姓名:";
cin>>p->writername;
cout<<" ○请输入出版社名称:";
cin>>p->publish;
p->next=NULL;
H->next=p;
q=p;
i++;
cout<<endl<< X[xer];
xer++;
}
else
{
q=H;
while(q->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<<" 共计"<<i<<"本图书入库!"<<endl;