데이터 구조 - 도서 정보 관리 시스템 의 순서 표 실현
코드 는 순서 표를 이용 하여 도서 정보 관리 시스템 을 만 들 었 는데 증가, 삭제, 검사, 보기 등 기능 을 할 수 있다.
초기 코드, bug 가 있 으 면 지적 해 주 십시오.
#include
using namespace std;
#define OK true
#define ERROR false
#define Status bool
#define ElemType Book
#define MAXSIZE 10000 + 10
// 。 , ,
typedef struct{
char no[20];
char name[50];
float price;
}Book;
//
typedef struct{
Book *elem;
int length;
}SqList;
//
Status InitList(SqList &L){
L.elem = new ElemType[MAXSIZE];
if(!L.elem) exit(OVERFLOW);
L.length = 0;
return OK;
}
//
Status GetElem(SqList L, int i, ElemType &e){
if(i < 1 || i > L.length) return ERROR;
e = L.elem[i-1];
return OK;
}
//
Status CompareElem(Book a, Book b){
if(strcmp(a.name, b.name)==0 && strcmp(a.no, b.no) == 0 && a.price == b.price)
return true;
return false;
}
//
int LocateElem(SqList L, ElemType e){
for(int i = 0; i < L.length; i++)
if(CompareElem(L.elem[i], e)) return i + 1;
return 0;
}
//
Status ListInsert(SqList &L, int i, ElemType e){
if((i < 1) || (i > L.length+1)) return ERROR;
if(L.length == MAXSIZE) return ERROR;
for(int j = L.length-1; j >= i-1; j--)
L.elem[j+1] = L.elem[j];
L.elem[i-1] = e;
++L.length;
return OK;
}
//
Status ListDelete(SqList &L, int i){
if((i < 1) || (i > L.length)) return ERROR;
for(int j = i; j <= L.length-1; j++)
L.elem[j-1] = L.elem[j];
--L.length;
return OK;
}
//
void ShowList(SqList &L){
for(int i = 0; i < L.length; i++){
printf("id : %s name : %s price : %f
", L.elem[i].no, L.elem[i].name, L.elem[i].price);
}
}
int main(){
printf("Welcome to use the library management system!
");
printf("The system is implemented by sequence table.
");
SqList L;
InitList(L);
printf("Sequence table initialization was successful!
");
printf("Please enter the book information:
");
int num;
printf("Total number of books: num = ");
scanf("%d", &num);
for(int i = 0; i < num; i++){
printf("please input the information of %d th book :
", i+1);
Book x;
scanf("%s %s %f", x.no, x.name, &x.price);
if(ListInsert(L, i+1, x)) printf("input successfully!
");
else printf("Input failure
");
}
printf("All book information has been entered.
");
ShowList(L);
printf("Please select the operation you need.
");
printf("Enter a number you selected operation:
");
printf("0 : End the program.
");
printf("1 : Print all books information.
");
printf("2 : Insert a book.
");
printf("3 : Delete a book.
");
printf("4 : Search a book.
");
int op;
while(scanf("%d", &op) && op){
if(op == 1) ShowList(L);
else if(op == 2) {
printf("which position you want to put your book?
");
printf("Position :
");
int pos;
scanf("%d", &pos);
printf("please input the information of the book :
");
Book x;
scanf("%s %s %f", x.no, x.name, &x.price);
if(ListInsert(L, pos, x)) printf("input successfully!
");
else printf("Input failure
");
}
else if(op == 3) {
printf("Do you want to delete the book on which position
");
printf("Position :
");
int pos;
scanf("%d", &pos);
if(ListDelete(L, pos)) printf("Delete successfully!
");
else printf("Delete failure
");
}
else if(op == 4) {
printf("please input the information of the book :
");
Book x;
scanf("%s %s %f", x.no, x.name, &x.price);
int pos = LocateElem(L, x);
printf("The position of your book is %d
", pos);
}
else printf("ERROR
");
printf("Enter a number you selected operation:
");
}
printf("Thanks for using!
");
printf("\t\t\tauthor : LingTree
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.