book.h
//book.h
struct Book
{
char name[50];
float price;
int count;
Book *next;
};
void addBook(Book* head);//1
void listBook(Book* head);//2
void findBook(Book* head, char* name);//3
void editBook(Book* head, char* name);//4
void statBook(Book* head);//5
void sort(Book* head);//7
void menu();
book.cpp
//book.cpp
#include <iostream>
#include <iomanip>
#include<cstring>
#include "book.h"
using namespace std;
void menu()
{
cout<<"************图书销售管理系统****************"<<endl;
cout<<" 1. 添加图书"<<endl;
cout<<" 2. 显示图书信息"<<endl;
cout<<" 3. 查找图书"<<endl;
cout<<" 4. 修改图书信息"<<endl;
cout<<" 5. 图书信息统计"<<endl;
cout<<" 6. 清除屏幕重置"<<endl;
cout<<" 7. 排序"<<endl;
cout<<" 0. 退出系统"<<endl;
cout<<"*******************************************"<<endl;
cout<<"输入对应的编号,执行相应的功能:"<<endl;
}
void addBook(Book *head)
{
//移动到尾链的尾部。
Book *p=head;
while(p->next)
{
p=p->next;
}
Book *book=new Book;
cout<<"请依次输入图书的名称、价格和数量"<<endl;
cin>>book->name>>book->price>>book->count;
p->next=book;
book->next=NULL;
system("cls");
cout<<"信息输入完毕。"<<endl;
menu();
}
void listBook(Book *head)
{
Book *p=head->next;
while(p)
{
cout<<p->name<<" "<<p->price<<" "<<p->count<<endl;
p=p->next;
}
cout<<"信息输出完毕,请选择操作代码:"<<endl;
}
void findBook(Book* head, char* name)
{
Book* p = head->next;
while (strcmp(p->name, name))//名称查找
{
p = p->next;
}
cout << "您要查找的图书价格为: " << p->price << endl;
cout << "您要查找的图书库存为: " << p->count << endl;
cout << "查找完毕,请选择操作代码:" << endl;
}
void editBook(Book* head, char* name)
{
Book* p = head->next;
while (strcmp(p->name, name))//名称查找
{
p = p->next;
}
cout << "您要把它的价格修改为: " << endl;
cin >> p->price;
cout << "您要把它的库存修改为: " << endl;
cin >> p->count;
cout << "信息修改成功,请选择操作代码:" << endl;
}
void statBook(Book* head)
{
double sum_price = 0; int sum = 0;
Book* p = head->next;
while (p)
{
sum_price += p->price * p->count;
sum += p->count;
p = p->next;
}
cout << "图书总的数量为: " << sum << endl;
cout << "图书价格的平均值为: " << sum_price / sum << endl;
cout<<"统计完成,请选择操作代码:"<<endl;
}
void sort(Book * head)
{
Book* p = head->next;
Book* P[100];
int n = 0;
while (p)
{
P[n] = p;
n++;
p = p->next;
}
cout << "该排序为价格排序,请选择:1、升序 2、降序" << endl;
int ch;
while (1)
{
cin >> ch;
if (ch == 1)
{
for (int i = 0; i < n - 1; i++)//冒泡排序
{
for (int j = 0; j < n - i - 1; j++)
{
if (P[j]->price > P[j + 1]->price)
{
Book* temp = P[j];
P[j] = P[j + 1];
P[j + 1] = temp;
}
}
}
break;
}
else if (ch == 2)
{
for (int i = 0; i < n - 1; i++)//反向冒泡排序
{
for (int j = 0; j < n - i - 1; j++)
{
if (P[j]->price < P[j + 1]->price)
{
Book* temp = P[j];
P[j] = P[j + 1];
P[j + 1] = temp;
}
}
}
break;
}
else
{
cout << "输入错误,请重新输出" << endl;
}
}
for (int i = 0; i < n; i++)
cout << P[i]->name << " " << P[i]->price << " " << P[i]->count << endl;
cout << "排序完成,请选择操作代码: " << endl;
}
main.cpp
//main.cpp
#include <iostream>
#include <iomanip>
#include <cstring>
#include "book.h"
using namespace std;
struct Book *head=new Book;
int main()
{
int ch;
head->next = NULL;
menu();
while (1)
{
cin >> ch;
switch (ch)
{
case 1: addBook(head);
break;
case 2: listBook(head);
break;
case 3:
{
cout << "请输入要查找的图书名称: " << endl;
char name[50];
cin >> name;
findBook(head, name);
break;
}
case 4:
{
cout << "请输入要修改的图书名称: " << endl;
char name[50];
cin >> name;
editBook(head, name);
break;
}
case 5: statBook(head);
break;
case 6: system("cls");
menu();
break;
case 7: sort(head);
break;
case 0: exit(0);
break;
default:
cout << "选择错误,请重新选择。" << endl;
}
}
}