博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十九章 11图书 药品管理系统
阅读量:5846 次
发布时间:2019-06-18

本文共 3989 字,大约阅读时间需要 13 分钟。

// 11图书 药品管理系统/*#include 
#include
using namespace std;class Date{public: Date(int n, float p):number(n),price(p){} float GetPrice()const{ return price; } int GetNumber()const{ return number;} virtual void print()const = 0; //抽像类,纯虚函数 virtual ~Date(){} private: int number; //编号 float price; //介格};class Book:public Date{public: Book(int n, float p):Date(n,p){} virtual void print()const //定义纯虚函数 { cout<<"图书的编号为:"<
<
GetNext(); delete m; n++; cout<<"删除第"<
<<"个节点!"<
GetDate(); }else{ return NULL; }}Date *List::operator[](int offset)const{ Node* pn = head; if(!head) { return NULL; } //注这里的要把下标在一个安全的范围内 if(offset>=count){ //元素值大于总数 return NULL; } for(int i=0; i
GetNext(); } return pn->GetDate();}void List::show()const{ if(!head){ return; } Node *pn = head; do{ pn->GetDate()->print(); }while(pn = pn->GetNext());}void List::InSert(Date *pDate){ Node *pn = new Node(pDate); Node *pNow = head; Node *pNext = 0; //当前节点的下一个节点的地址,实始化为0 int New=pDate->GetNumber(); //取得商品编号 int next = 0; //下一个节点的商品编号 count++; if(!head){ //设置头节点,判断头节点是否存在 head = pn; return; } //头节点的数据的number值是否大于新节点的编号 if(head->GetDate()->GetNumber() > New){ //将新节点设置为头节点,头节点成为了新节点的下一个节点 pn->SetNext(head); //将新节点的下一个节点设置为头节点 head = pn; //将来pn设置的新节点设置为新节点 return; } for(;;) { //当前节点的next指针是否为空,也就是有没有下一个指针对 if(!pNow->GetNext()){ pNow->SetNext(pn); //将新节点设置为下一个节点 return; } pNext = pNow->GetNext(); //当前节点还有下一个节点,那么获取当前节点的下一个节点 next = pNext->GetDate()->GetNumber(); //取得下一个节点的number值 if(next > New){ //当前节点的下一个节点的编号,与新节点的编号相对比 pNow->SetNext(pn);//当前节点的下一个节点设置为新节点 pn->SetNext(pNext); //用pn指向的下一个节点的设置为当前节点的下一个节点 return; } pNow = pNext; //如果没有找到相应的位置,那么将当前节点的下一个节点设置为当前节点 }}//删除函数void List::Delete(int number){ Node *pBack=head; //保存上一个节点的地址,初始化的地址为头节点的地址 Node *pNow=head; //当前节点,初始化为头节点的地址 if(!head){ cout<<"没有数据可删除!"<
GetDate()->GetNumber() == number) { //判断头节点下面是否还有节点 if(!head->GetNext()){ //不存在下一个节点 delete head; cout<<"数据被清空!"<
GetNext(); delete pNow; pNow =0; cout<<"删除成功!"<
GetNext() == NULL){ //没有下一个节点 cout<<"找不到要删除的编号"<
GetNext()->GetDate()->GetNumber() == number) { pNow = pBack->GetNext(); pBack->SetNext(pNow->GetNext()); //头节点和被删除节点的下一个节点相联起来 delete pNow; cout<<"删除数据成功!"<
GetNext(); } cout<<"不存在此编号数据"<
GetNext()) { if(pn->GetDate()->GetNumber() == number) { break; } } if(pn==NULL){ return NULL; }else{ return pn->GetDate(); }}Date*List::Find(int &increase, int number)const{ Node*pn=0; for(pn=head, increase=0; pn!=NULL; pn=pn->GetNext(), increase++) { if(pn->GetDate()->GetNumber() == number){ break; } } if(pn == NULL){ return NULL; }else{ pn->GetDate(); }}class Repair{public: void RInsert(Date*newdate); void Ran();private: List pl;};void Repair::Ran(){ //List pl; Date *pDate =0; int number; //编号 float price; //价格 int choice; //选项 bool quit=false; while(1) { system("cls"); cout<<"(1)添加商口 (2)列出所有商品 (3)删除商品 (4)查找商品 (5)统计商品数目 (6)退出"<
>choice; switch(choice) { case 1: //添加商品 while(1) { cout<<"(0)返回 (1)图书 (2)药品"<
>choice; if(!choice){ break; }else if(choice==1 || choice==2){ cout<<"请输入编号"<
>number; if(choice==1){ cout<<"请输入图书价格"<
>price; pDate = new Book(number,price); //pl.InSert(pDate); RInsert(pDate); }else if(choice==2) { cout<<"请输入药品价格"<
>price; pDate = new Drug(number,price); //pl.InSert(pDate); RInsert(pDate); }else{ cout<<"请输入0到2之间的数字"<
>number; pl.Delete(number); cin.get(); cin.get(); break; case 4: //查找商品 while(1) { cout<<"(0)返回 (1)按编号进行查询 (2)按序号进行查询"<
>choice; if(!choice){ break; }else if(choice==1 || choice==2){ if(choice==1){ cout<<"请输入所有查找的商品编号"<
>number; Date*result = pl.Find(number); if(result==0){ cout<<"找不到该编号"<
print();//print是虚函数,可以去动态 } }else if(choice==2) { cout<<"请输入所要查找的数据的序号:"<
>number; if(pl[number-1]) { pl[number-1]->print(); }else{ cout<<"找不到你要查询的数据"<
::max()返回缓冲区的大小 cin.ignore(numeric_limits
::max(),'\n'); cout<<"您只可以输入1-6之间的数字,请重新输入"<
GetNumber(); int place =0; //查找数据的次数 if(pl.Find(place,num)) { cout<<"您输入的编号"<
<<"与链表中"<

  

转载地址:http://quwjx.baihongyu.com/

你可能感兴趣的文章
YII分页显示数据
查看>>
Android下获取状态栏的高度
查看>>
Start Developing iOS Apps Today系列(六)
查看>>
UITableview中cell重用引起的内容重复的问题
查看>>
stm32 ADC使用 单通道 多通道
查看>>
Windows服务器配置与管理
查看>>
UVA 10003 Cutting Sticks
查看>>
DRP项目总结
查看>>
图的连通性——无向图的连通分量和生成树
查看>>
Linux安装更新JDK
查看>>
VM10.0上创建Windows server 2008 SP2,并且,安装loadrunner11
查看>>
抽象工厂
查看>>
linux下高可用mysql
查看>>
(15)Reactor 3 Operators——响应式Spring的道法术器
查看>>
r710 网卡驱动升级灰常蛋疼,现在在祈祷
查看>>
Microsoft Internet Explorer 数字错误漏洞
查看>>
添加 修改 删除
查看>>
RabbitMQ的远程Web管理与监控工具
查看>>
Linux术语全称
查看>>
Weave and Docker for Mac: The bridge between local and remote services
查看>>