数据结构课程设计图书管理系统

*Copyright (c) 2017,烟台大学计算机与控制工程学院  
*文件名称:图书信息管理系统
*文件标识:无
*内容摘要:实现图书信息的输入、插入、删除、修改、排序和输出
*其他内容:无
*当前版本:v1.0
*完成日期:2017.12.21
*创作人:高晶
*/

#include 
#include 
#include 
#include 
#include 
#include 
#include //catch() 任意键继续
#include //system("cls") 清屏
#include "library.h"
/************************************
* 功能描述:申请一个新结点,并将其初始化
* 输入参数:无
* 输出参数:无
************************************/
void InitList(LinkList *&head)//创建一个头结点
{
head=(LinkList *)malloc(sizeof(LinkList));
head->next=NULL;
}
void NewNode(LNode *head)// 创建完成调用addstudent()函数将新节点尾插法插入链表
{
        LNode *a;
a=new LNode;//申请空间
string s;
cout<<"图书编号"<>s;
if(num(s,head)==1)
{
    a->num=s;
cout<<"图书名"<>a->name;
cout<<"图书作者: "<>a->writer;
cout<<"图书分类:   "<>a->fenlei;
cout<<"图书价格:    "<>a->price;
cout<<"图书数量:  "<>a->coun;

addstudent(a,head);
}
else
cout<<"编号已重复"<next=NULL;
return;//插入完成返回
}
else
{
    p = head;//从头结点开始找
     while(p)//p非空则一直循环
 {
  if(p->next==NULL)//找到尾节点
  {
    p->next =a;
   a->next =NULL;
return;//插入完成返回
  }
   p= p->next;//找下一个节点
 }
}
}
/************************************
* 功能描述:销毁线性表
* 输入参数:无
* 输出参数:无
************************************/
void DestroyList(LinkList *&head)//销毁线性表
{
LinkList *pre=head->next,*p=head->next->next; //准备好前驱后置指针
while (p!=NULL)
{
free(pre);//释放内存空间
pre=p;
p=pre->next;
}
free(pre);
head->next=NULL;
cout<<"图书信息已清空"<next;
  while (p->next!=NULL)
  {
 n++;
 p=p->next;
  }
  return (n+1);
}
/************************************
* 功能描述:显示所有图书的信息,调用shuchujiedian()函数
* 输入参数:无
* 输出参数:输出图书的名、号、作者、价格,分类号,数量
************************************/
void DispList(LNode *head)//输出线性表
{
LinkList *p=head->next;
if(p==NULL)
{
cout<<"现在还没图书信息,请先输入图书信息"<next;
 }
}
cout<<"共有"<>num;
 if (head==NULL)
 {
 cout<<"编号输入有误"<num==num)
 {
    shuchujiedian(p);
    cout<<"是否要删除图书信息?"<>m;
if(m==1)
{
if(p==head)
{
head = head->next;
free(p);
p=NULL;
cout<<"图书成绩信息删除!"<next =p->next;
free(p);
p=NULL;
cout<<"图书信息已删除!"<next;
 }

 }
}
cout<<"编号输入有误"<>name;
LNode *p=head;
if (head==NULL)
{
cout<<"现在还没图书信息,请先输入图书信息"<name==name)
  {
        shuchujiedian(p);
        i++;
  }
   p= p->next;
}
if(i==0)
cout<<"没有该本图书!"<>num;
LNode *p=head;
if (head==NULL)
{
cout<<"现在还没图书信息,请先输入图书信息"<num==num)
  {
       shuchujiedian(p);
       return;
  }
   p= p->next;
}
cout<<"没有该本图书!"<next)
   if(p->num==a)
    return 0;
   return 1;
}
/************************************
* 功能描述:根据输入的编号查找信息
* 输入参数:图书号
* 输出参数:无
************************************/
void ChangeMarkByNum(LNode *head)//根据号修改图书
{
    LNode *p;
    string num;
    int m;
    int mark1;
    string mark2;
    string mark3;
    p=head;
    cout<<"请输入图书编号: "<>num;
    while(p)
    {
        if(p->num==num)
        {
           shuchujiedian(p);
           cout<<"是否要修改图书信息?"<>m;
            if(m==1)
{

cout<<"请输入新的分类号"<>mark3;
cout<<"请输入新的价格"<>mark2;
cout<<"请输入新的数量"<>mark1;
p->coun=mark1;
p->fenlei=mark2;
p->price=mark3;

cout<<"信息修改成功!"<next;
}
       cout<<"对不起,不存在编号为"<name;
           cout<name;
           cout<writer;
           cout<fenlei;
           cout<price;
           cout<coun<next;
        out<num<name<writer<coun<fenlei<price<next;
        }
        out.close();
        cout<<"保存成功!"<name;//将q结点的信息给change
change.num=q->num;
change.writer=q->writer;
change.coun=q->coun;
change.price=q->price;
change.fenlei=q->fenlei;


q->name=p->name;//将p结点的信息给q
q->num=p->num;
q->writer=p->writer;
q->coun=p->coun;
q->price=p->price;
q->fenlei=p->fenlei;

p->name=change.name;//将change结点的信息给p
p->num=change.num;
p->writer=change.writer;
p->coun=change.coun;
p->price=change.price;
p->fenlei=change.fenlei;

}
/************************************
* 功能描述:按编号排序
* 输入参数:无
* 输出参数:图书信息
************************************/
void pai(LNode *head)
{
   LNode change,*p,*q,*r;
r=head->next;
if(r==NULL)
{
cout<<"现在还没图书信息,请先输入图书信息"<next;
    while(q)
    {
        if((q->num)<(p->num))
            huan(q,p);
        q=q->next;
}
r=r->next;
 }
 DispList(head);
}
/************************************
* 功能描述:显示菜单,根据用户的输入完成相应的功能
* 输入参数:你要选择的功能的序号
* 输出参数:选择的功能
************************************/
void Menu(LNode *head)// 显示菜单,根据用户的输入
{

    int choose;
    int m=0;
  cout<<"   图书 管理 系 统      "<>choose;/*取得用户的选择*/
    while(1)
  {
  if(choose<0||choose>10)
  {
      cout<<"您输入的选项不存在,请重新输入"<>choose;
  }
  else
    break;
  }

    switch(choose)
    {
    case 0:
        exit(0);
    case 1:
        system("cls");
        NewNode(head);
        //创建新的一个tushu结构体,新节点
        cout<<"输入任意字符!继续……"<>m;
       if(m==1)
       findstudentname(head);//根据名查找图书信息
       else
       findstudentnum(head);//按照号查找图书信息
       cout<<"输入任意字符!继续……"<

运行截图:

主菜单:

数据结构课程设计图书管理系统_第1张图片

采编入库:

数据结构课程设计图书管理系统_第2张图片

浏览图书信息:

数据结构课程设计图书管理系统_第3张图片

删除

数据结构课程设计图书管理系统_第4张图片

查找

数据结构课程设计图书管理系统_第5张图片

修改

数据结构课程设计图书管理系统_第6张图片

保存

数据结构课程设计图书管理系统_第7张图片

排序

数据结构课程设计图书管理系统_第8张图片

你可能感兴趣的:(数据结构课程设计图书管理系统)