药品销售管理系统

一、系统总体设计
该系统是针对医药销售行业所设计,主要用来管理销售药品所产生的额大量信息 。该系统可帮助从医人员便捷管理药品销售信息,极大的提高工作效率,降低人工操作的失误率,为药品的销售者和购买者提供便利 。根据对需求的分析,确定了该系统需要实现一下几个功能:
系统以菜单方式工作;录入信息用文件保存;能完成对药品信息的录入、修改;能统计某药品的销售量 , 销售额;能查询药品分类;能按药品分类输出药品详单 。1.1 系统功能模块图
根据用户需求,本系统将主要实现以下功能:
图1-1 系统功能模块图
其中:
药品信息录入:录入药品基本信息,包括药品名称、药品编号、药品类别、药品销售量、药品销售额,通过C++文件操作 , 以“.txt”格式存储在本地 。
药品信息修改:通过查询药品名称或药品编号,确定用户所要修改的药品,列出该药品的基本信息,由用户选择修改项 。
药品信息查询:用户可通过名称、编号、类别检索药品信息库中的信息 。
药品信息显示:列出所有药品信息库中的药品信息 。
药品信息删除:通过查询药品名称或药品编号,确定用户所要删除的药品,列出该药品的基本信息,并将其删除 。
1.2各类间关系
本系统只使用了一个类:Base
类Base定义了药品基本信息 , 其中包括name、 num、 type、 、 五项,将其声明为私有;定义五项公有成员函数,其中包括()、()、()、()、(),以实现本程序的基本功能 。
二、详细设计
本系统主要功能包括:信息录入、信息查询、信息修改、删除信息、显示所有信息 。
2.1 类的详细设计
本系统所有功能都由类Base定义并实现,以下为详细设计:
类Base主要描述药品的基本信息,定义函数 , 实现本系统所有主要功能 。类Base具体实现流程如下图所示:
图2-1 类Base的详细设计流程图
2.2成员函数的详细设计 2.2.1 成员函数()
该成员函数主要功能为录入药品名称、药品编号、药品类别、药品销售量、药品销售额五项药品基本信息,并将其储存 。
实现方式:使用以追加方式打开文件 , 输出提示引导用户输入药品的基本信息,输入完成之后写入文件,提示用户是否继续,若继续则重复,直至用户停止输入 , 详细设计流程图如下:
图2-2成员函数()的详细设计流程图
2.2.2 成员函数()
该成员函数主要功能为修改药品基本信息,并将其储存到文件 。
实现方式:首先,使用和同时打开药品信息和缓存文件两个文件,根据用户输入信息检索信息 , 同时将检索过的信息全部储存到缓存文件中,若检索到用户所要修改的药品信息,则引导用户完成修改,将修改后的信息储存到缓存文件,并继续遍历所有信息,将其储存到缓存文件;若未检索到用户所要修改的药品信息,则输出提示信息并返回主菜单 。之后 , 将缓存文件中的所有信息储存到药品信息中,完成信息修改,详细设计流程图如下:
图2-3成员函数()的详细设计流程图
2.2.3 成员函数()
该成员函数主要功能为查询药品基本信息 , 可按药品名称、药品编号、药品类别三种方式查询 。
实现方式:使用以只读的方式打开药品信息文件 , 输出提示信息,由用户选择查询方式并输入信息 。三种查询方式都是用while循环遍历文件,检索符合用户要求的信息,详细设计流程图如下:
图2-4成员函数()的详细设计流程图
2.2.4 成员函数()
该成员函数主要功能为列出信息库中所有药品信息
实现方式:使用以只读的方式打开药品信息文件,用while循环遍历读取文件信息,然后输出文件中所有信息,详细设计流程图如下:
图2-5成员函数()的详细设计流程图
2.2.5 成员函数()
该成员函数主要功能为删除药品信息 , 并将其储存到文件 。
实现方式:使用和同时打开药品信息和缓存文件两个文件,根据用户输入信息检索信息,同时将检索过的信息全部储存到缓存文件中,若检索到用户所要删除的药品信息,则不将该项药品信息储存到缓存文件,并继续遍历所有信息 , 将其储存到缓存文件;若未检索到用户所要删除的药品信息,则输出提示信息并返回主菜单 。之后,将缓存文件中的所有信息储存到药品信息中,完成信息删除,详细设计流程图如下:
图2-6成员函数()的详细设计流程图
三、程序代码
【药品销售管理系统】#include #include #include #include using namespace std;class Base{public:void yaopin_add();//录入药品信息 void yaopin_change();//修改药品信息 void yaopin_search();//查询药品信息 void yaopin_list();//列举药品信息void yaopin_del();//删除信息 private:string name;//药品名称 string num;//药品编号 string type;//药品类别 string sale_m;//药品销售额 string sale_q;//药品销售量 };void Base::yaopin_add(){char ch;Base mes;ofstream inData("药品信息.txt",ios::out|ios::app);if (!inData){cout<>mes.name;cout<<"药品编号:";cin>>mes.num;cout<<"药品类别:";cin>>mes.type;cout<<"药品销售额:";cin>>mes.sale_m;cout<<"药品销售量:";cin>>mes.sale_q;inData<>ch;}while(ch!='n'&&ch!='N');inData.close();system("cls");}void Base::yaopin_list(){ifstream inData("药品信息.txt",ios::in);if (!inData){cout <>name>>num>>type>>sale_m>>sale_q) {if (flag){cout <>s;if(flag==true&&s==1){cout<<"请输入所查询药品的名称:";cin>>sign; while (inData>>name>>num>>type>>sale_m>>sale_q){if (name==sign){cout<sign; while (inData>>name>>num>>type>>sale_m>>sale_q){if (num==sign){cout<sign; while (inData>>name>>num>>type>>sale_m>>sale_q){if (type==sign){if(flag){cout<sign;bool flag1 = true;bool flag2 = false;while(inData>>name>>num>>type>>sale_m>>sale_q){if (flag1==true&&((name==sign) || (num==sign))){cout<s;if(s==1) {cout<<"名称:";cin>>name;flag2 = true;} if(s==2) {cout<<"编号:";cin>>num;flag2 = true;} if(s==3) {cout<<"类别:";cin>>type;flag2 = true;} if(s==4) {cout<<"销售量:";cin>>sale_m;flag2 = true;} if(s==5) {cout<<"销售额:";cin>>sale_q;flag2 = true;} if(s!=1&&s!=2&&s!=3&&s!=4&&s!=5) {cout<<"请输入正确编号!"<>name>>num>>type>>sale_m>>sale_q){flag2 = true;if (flag1==true&&((name==sign) || (num==sign))){cout<p;switch(p){case 1:{system("cls");cs.yaopin_add();break;}case 2:{system("cls");cs.yaopin_change();break;}case 3:{system("cls");cs.yaopin_search();break;}case 4:{system("cls");cs.yaopin_list();break;}case 5:{system("cls");cs.yaopin_del();break;}default: system("cls");}if(p==0) break;//退出系统 }while(1);}