图书馆管理系统实验
1.新建project
点击OK后工程如下:
项目的组织方式:需要被多个文件用到的变量声明,类的声明和函数声明放在头文件里,声明可以存放在多个不同的文件里,这些文件使用#include"*.h"来包含这些头文件。而这些变量的定义和函数定义和类的实现(可以理解为定义)在某个.cpp里实现,定义只需要定义一次。
2.项目文件的创建:
按链存储结构存储的线性表称为链表。链表的基本操作包括链表的初始化、取值、查找、插入元素、删除元素等。下面以图书管理系统的链表结构为对象,进行对应算法的实验。
一般编程使用3步骤:
第1步:数据类型及线性表的链式存储结构定义;
第2步:实现基本操作;
第3步:在main()中调用基本操作。
2.1链表的初始化
1、在struch.h文件中进行数据类型及线性表的链式存储结构定义
#ifndef __STRUCH_H__
#define __STRUCH_H__
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
struct Book {
char id[15];//ISBN
char name[15];//书名
double price;//定价
};
typedef struct LNode {
Book data; //结点的数据域
struct LNode *next; //结点的指针域
} LNode, *LinkList; //LinkList为指向结构体LNode的指针类型
#endif
说明:需要在main.cpp中 #include "struch.h"
2.2实现基本操作
新建一个books_operation.cpp文件用来存放对表的所有操作
2.2.1第一个操作,链表的初始化
链表的初始化操作就是构造一个空的链表。
算法2.1 链表的初始化
【算法步骤】
【算法描述】
#include<iostream>
#include<cstring>
#include "struch.h"
using namespace std;
//初始化
Status InitList_L(LinkList &L) { //算法2.6 单链表的初始化
//构造一个空的单链表L
L = new LNode; //生成新结点作为头结点,用头指针L指向头结点
L->next = NULL; //头结点的指针域置空
return OK;
}
void ShowBooks(LinkList L){
LNode *p = L->next;
cout << "ISBN" << "\t" << "书名" << "\t" << "价格";
cout << "\n";
while(p != NULL){
cout << p->data.id << "\t" << p->data.name << "\t" << p->data.price << "\n";
p = p->next;
}
}
说明:要在头文件function_declare.h里声明函数
2.3 函数的声明写在头文件function_declare.h中
#ifndef __FUNCTION_H__
#define __FUNCTION_H__
Status InitList_L(LinkList &L);
#endif
说明:
#if