데이터 구조 - 도서 정보 관리 시스템 의 순서 표 실현

대부분의 코드 는 엄 울 민 선생님 의 《 데이터 구 조 》 교재 에서 나 왔 지만 책의 위조 코드 에 대해 서 는 컴 파일 이 실행 되 지 않 는 부분 이 있어 서 프로그램 이 정상적으로 작 동 하고 기능 이 정상적으로 사용 되도록 수정 했다.
 
코드 는 순서 표를 이용 하여 도서 정보 관리 시스템 을 만 들 었 는데 증가, 삭제, 검사, 보기 등 기능 을 할 수 있다.
초기 코드, 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; }

좋은 웹페이지 즐겨찾기