目 录

  • 题目部分
  • 代码部分

题目部分

题目:药品管理软件

功能要求:
1. 用户及权限管理;
2. 药品入库、出库;
3. 药品架位管理;
4. 药品信息查询、修改;
5. 药品过期提示,打印出过期药品架位信息供工作人员将这些药品下架;
6. 过期药品下架后将这些药品信息导入到过期药品表或删除。


代码部分

创建一个 用户账户与密码.txt 文件,将以下账号密码存入

aaaaaa       111111
lyl111      123456
ljb333      246810
lc4444      258058
lyy555      013579
25317o      253172

创建一个 medicine.txt 文件,将以下数据存入


0001    金银花    中药    清热解毒,能抑制与杀灭咽喉部的病原菌,对老人和儿童有抗感染功效。    50克    袋    60元    15     300
0002    降香    中药    能化瘀止血定痛,用于外伤出血、跌打损伤、瘀血肿痛。    1斤    袋    10元    30     43
0003    藿香    中药    快气,和中,辟秽,祛湿。治感冒暑湿,寒热,头痛,胸闷,呕吐泄泻,疟疾,口臭。    1斤    袋    25元    5     41
0004    黄芩    中药    清热燥湿,泻火解毒,止血,安胎,降血压。用于湿热痞满,泻痢,血热吐衄,痈肿疮毒。    1斤    袋    20元    8     60
0005    龙胆    中药    具有清热、泻肝、定惊之功效。主治骨间寒热、惊病邪气,继绝伤,定五脏,杀虫毒。    1斤    袋    50元    25     34
0006    雪菊    中药    清热解毒、化湿止痢、解酒护肝、降血脂、降血压、降血糖、活血化瘀、胃健脾    250克    瓶    88元    7     24
0007    丹参    中药    活血祛瘀,安神宁心,排脓,止痛。治痛经,经闭,血崩带下,骨节疼痛,惊悸不眠,恶疮肿毒。    1斤    袋    13元    30     52
0008    灵芝    中药    益气血、安心神、健脾胃。主虚劳、心悸、失眠、头晕、久咳气喘、冠心病、矽肺、肿瘤。    1斤    盒    200元    3     23
0009    麝香    中药    具有开窍醒神,活血散结,止痛消肿,催生下胎的功效,治热病神昏,中恶昏迷,血瘀经闭等。    1克    瓶    70元    10     10
0010    999感冒灵    中西药    解热镇痛。用于感冒引起的头痛,发热,鼻塞,流涕,咽痛。    9袋  盒    15元    120     300
0011    银胡感冒散    中药    疏风解表,清热解毒。用于风热感冒所致的恶寒发热,鼻塞喷嚏,咳嗽,头痛,全身不适。    3袋    盒    43元    50     43
0012    连花清瘟胶囊    中药    清瘟解毒,宣肺泄热。用于治疗流行性感冒属热毒袭肺证。    10袋    盒    30元    30     100
0013    健胃消食片    中药    有健脾、和胃、消食作用,用来治疗脾胃虚弱导致的食积证。    8片    板    5元    0    45
0014    维生素C片    西药    用于预防和治疗坏血病以及各种急、慢性传染疾病以增强机体抵抗力辅助治疗。    10片    盒    10元    100     40
0015    阿莫西林胶囊    西药    适用于呼吸道感染、急性单纯性淋病、伤寒及钩端螺旋体病。    10片    盒    12元    25    32

创建一个 back.txt 文件,将以下数据存入

编号     名称     数量   退货原因

创建一个 head.h 文件,代码如下:

//菜单程序 void head()   // 标题
{system("mode con cols=165");    //调整控制台显示的高度system("color F0");       //修改背景色前景色 for(int i=0; i<79; i++){cout << "*";cout << " ";}cout << "\n*";for(int i=0; i<74; i++)cout << " ";cout << "药品管理软件";for(int i=0; i<69; i++)cout << " ";cout << "*\n";for(int i=0;i<79;i++){cout << "*";cout << " ";}cout << "\n";
}void userMenu()        //用户菜单
{cout << "<*> 0: 退出\n" <<endl<< "<*> 1: 查看药品信息\n\n" <<"<*> 2: 查询药品\n\n"; cout << "<*> 3: 购买药品\n"<<endl<<"<*> 4: 退货\n"<<endl;cout << "请选择需要进行的操作:" ;
} void AdminMenu()  //管理员菜单与功能实现
{cout << "<*> 0: 退出\n" <<endl<< "<*> 1: 查看药品信息\n" <<endl;cout << "<*> 2: 添加/移除药品\n" <<endl<< "<*> 3: 移动药品\n" <<endl;cout << "<*> 4: 查询药品\n" <<endl<< "<*> 5: 修改药品\n"<<endl <<"<*> 6: 打印过期药品信息\n\n";cout << "<*> 7: 查看退货信息\n\n"<<"请选择需要进行的操作:" ;
}void askMenu()     //查询药品菜单
{cout << endl;cout << "<*> 1: 按类型查询\n" <<endl<< "<*> 2: 按价格区间查询\n"<<endl;cout << "其余选项均返回,请选择:";
}

创建一个 Register.h 文件,代码如下:

//用户登录系统
#define UserNum 20
struct  user
{char account[7];   //用户账号char password[7];  //用户密码
} us[UserNum];int admin1()  //管理员登录
{int ff;char admin[5] = "root"; //管理员账号密码char password[7] = "123456";char t1[5], t2[7];int i=0;cout << "请输入账号:";while (1){cin >> t1;if ( strcmp(t1, admin) == 0){cout << "请输入密码:";break;}else{cout << "账号不存在, 请重新输入:";}}while (1){cin >> t2;if ( strcmp(t2, password) == 0){printf("通过!\n");break;}else{printf("密码错误,请重新输入:");}}return 1;} int user1()        //用户登录
{int i, flag = 0;char root[7], password[7];cout << "请输入账号:";cin >> root;cout << "请输入密码:";cin >> password;ifstream in("用户账户与密码.txt");     //文件流输入,账号存入us数组中for ( i=0; i<UserNum; i++){in >> us[i].account;in >> us[i].password;}for (i=0; i<UserNum; i++){if (strcmp(root, us[i].account) == 0){if (strcmp(password, us[i].password) == 0){flag = 1;}}}if (flag == 0){cout << "您的输入有误\n";}return flag;
}

创建一个 function.h 文件,代码如下:

//功能程序
#include<windows.h>class Medicine
{public:void news();    //导入信息 void check();    //查看药品void usercheck(); //用户查看药品 void revise(); //添加/移除药品void del();        //打开文件操作 void move();   //移动药品void query(); //查询药品void print(); //输出过期药品void choice();  //选择药品void back();  //用户退货void openback();  //查看退货信息private:int sum,numb[100];  //药品数量 string id[100],name[100],type[100];    //编号、名称、类型string function[100],volume[100],packing[100];    //功能、容量、包装 string price[100],num[100],days[100];    //单价、库存、剩余天数void add();               //添加药品 void wordcheck();        //输出药品标题 void uscheck(int x);   //输出药品 void typecheck();        //按类型查询药品  void pricecheck();       //按价格查询药品
}m1;void Medicine::news()   //读取文件中的药品信息
{string buf;ifstream fp;fp.open("medicine.txt",ios::in); //open为ifstream的成员函数,功能为打开文件,并将它与流关联  ios::in表示读流的方式,表示打开模式。if(!fp.is_open())   //成员函数is_open检查流是否有关联文件,即打开成功与否,成功返回true,失败返回false{cout<<"打开文件失败!!\n";   // 返回异常;}int j=0; //使用操作符>>,将数据传输到对应的变量中while (getline(fp,buf)){fp>>id[j]>>name[j]>>type[j]>>function[j]>>volume[j]>>packing[j]>>price[j]>>num[j]>>days[j];numb[j]=j;j++;}sum=j;//cout << type[3] <<" "<< function[5]<<endl; //检测fp.close();   //关闭流
}void Medicine::revise()
{int rechoose;cout << "\n<*> 1: 添加药品\n<*> 2: 移除药品\n其余选项均返回,请选择:";cin >> rechoose;if(rechoose==1){m1.add(); m1.news();}else if(rechoose==2){m1.del();}system("PAUSE");   system("CLS");
}void Medicine::wordcheck() //输出药品的标题文字
{cout <<endl;cout<<"    编号:"<<"   "<<setw(15)<<left<<"药品名称:"<<setw(9)<<left<<"类型:"<<setw(88)<<left<<"功能:";cout<<setw(8)<<left<<"价格:"<<setw(8)<<left<<"库存:"<<setw(12)<<left<<"剩余保质期:"<<"容量:"<<endl;
}void Medicine::uscheck(int x)  //输出药品
{cout<<id[numb[x]]<<"    "<<setw(15)<<left<<name[numb[x]]<<setw(9)<<left<<type[numb[x]]<<setw(88)<<left<<function[numb[x]]<<setw(8)<<left<<price[numb[x]];cout<<setw(8)<<left<<num[numb[x]]+packing[numb[x]]<<setw(12)<<left<<days[numb[x]]+"天"<<volume[numb[x]]<<"/"<<packing[numb[x]]<<endl;
}void Medicine::check() //输出药品信息
{int te=1;m1.wordcheck();for(int i=0;i<sum;i++){cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}cout<<endl;
}void Medicine::usercheck()
{int te=1;m1.wordcheck();for(int i=0;i<sum;i++){if(num[numb[i]]!="0"){cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}cout<<endl;
}void Medicine::add()   //添加药品信息
{  char word[100]="*",ent = '\n';FILE *fp;fp = fopen("Medicine.txt","a");fprintf(fp,"%c",ent);cout << "\n请输入药品编号:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品名称:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品类型:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品功能:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品容量:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品包装:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品价格:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品数量:"; cin >> word;fprintf(fp,"%s",word); fprintf(fp,"    ");cout << "\n请输入药品剩余保质期:"; cin >> word;fprintf(fp,"%s",word);fclose(fp);cout << endl;cout << "药品添加成功!\n";
}void Medicine::del()   //打开文件操作
{cout << "请在文件中操作。\n\n";Sleep(1000); system("start Medicine.txt");system("PAUSE");  system("CLS");
}void Medicine::move()  //移动药品信息
{int medi,down,tem;m1.check();cout << "\n请输入要移动的药品编号:";cin >> medi;cout << "请输入想要移动到的位置序号:";cin >> down;if(down>=sum) down=sum;if(medi>down){numb[down-1]=medi-1;for(int k=down;k<medi;k++)numb[k]--;}else if(medi<down){numb[down-1]=medi-2;for(int k=medi-1;k<down;k++)numb[k]++;}
} void Medicine::query()    //查询药品信息
{int qchoose; askMenu();cin >> qchoose;if(qchoose==1){cout << endl;cout << "<*> 1: 中药\n" <<endl<< "<*> 2: 西药\n"<<endl<<"<*> 3: 其它\n" << "其余选项均返回,请选择:";m1.typecheck();}else if(qchoose==2){cout << endl;cout << "输入价格区间啊a b (a<b): "; m1.pricecheck();}elsecout <<"输入错误!!!"<<endl;system("PAUSE");  system("CLS");
}void Medicine::typecheck() //按类型输出药品
{int te=1;int tychoose;cin>>tychoose;m1.wordcheck();if(tychoose==1){for(int i=0;i<sum;i++){if(type[numb[i]]=="中药"){cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}cout<<endl;}else if(tychoose==2){for(int i=0;i<sum;i++){if(type[numb[i]]=="西药"){cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}cout<<endl;}else{for(int i=0;i<sum;i++){if(type[numb[i]]!="中药" && type[numb[i]]!="西药"){cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}cout<<endl;}
}void Medicine::pricecheck()        //按价格输出药品
{int price1,price2,te=1,prnum=0;cin >> price1 >> price2;for(int i=0;i<sum;i++){if(atoi(price[numb[i]].data())>=price1 && atoi(price[numb[i]].data())<=price2){prnum++;if(prnum==1){cout << "\n价格在"<<price1<<" ~ "<<price2<<"的药品有:\n"; m1.wordcheck();}cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}if(prnum==0)cout << "\n无该价格区间的药品。\n";cout << endl;
}void Medicine::print()     //打印过期药品信息
{int pnum=0,te=1,prchoose;int a[100];for(int i=0;i<sum;i++){if(days[numb[i]]=="0"){a[pnum]=numb[i];pnum++;if(pnum=1)    m1.wordcheck();cout<<setw(4)<<left<<te; te++;m1.uscheck(i);}}cout << endl;if(pnum==0){cout << "\n无过期药品。\n";system("PAUSE");   system("CLS");}else{cout << "是否打开文件删除过期药品?\n";cout << "1.是  2.否 : "; cin >> prchoose; if(prchoose==1){cout <<"过期药品 ";for(int i=0;i<pnum;i++){if(i!=0)   cout << "、";cout << name[numb[a[i]]];}cout <<" 在第 ";for(int i=0;i<pnum;i++){if(i!=0)   cout << "、";cout << a[i]+1 ;}cout <<" 行。"<<"(操作后需重新登入)"<<endl;m1.del();}else if(prchoose==2){system("PAUSE");  system("CLS");}else{cout<<"输入错误!!!"<<endl;system("PAUSE");   system("CLS");}}
}void Medicine::choice()
{string ch_id;int right=0,chchoice;m1.usercheck();cout<<"请输入选择的药品编号: ";cin >> ch_id; cout << endl;for(int i=0;i<sum;i++){if(id[numb[i]]==ch_id){right=1;if(num[numb[i]]!="0"){cout <<name[numb[i]]<<"的价格为:"<<price[numb[i]]<<endl<<"是否购买? 1.是  2.否 :"; cin >> chchoice;if(chchoice==1){cout << "购买成功!";char str[100];itoa(atoi(num[numb[i]].data())-1, str,10);num[numb[i]] = str;}if(chchoice!=1 and chchoice!=2)cout << "输入错误!!!";}elsecout <<name[numb[i]]<<"的库存不足。";break;}}if(right==0)cout << "无该编号的药品。"<<endl;system("PAUSE");   system("CLS");
}void Medicine::back()
{char backm[100]="*",ent = '\n';FILE *fp;fp = fopen("back.txt","a");cout << "\n请输入药品编号:"; cin >> backm;fprintf(fp,"%s",backm); fprintf(fp,"    ");cout << "\n请输入药品名称:"; cin >> backm;fprintf(fp,"%s",backm); fprintf(fp,"    ");cout << "\n请输入退货数量:"; cin >> backm;fprintf(fp,"%s",backm); fprintf(fp,"    ");cout << "\n请输入退货原因:"; cin >> backm;fprintf(fp,"%s",backm); fprintf(fp,"    ");fprintf(fp,"%c",ent);fclose(fp);cout << endl;cout << "退货成功!祝您生活愉快!欢迎下次光临!\n";system("PAUSE"); system("CLS");
}void Medicine::openback()
{cout << "已打开退货记录,操作后请删除数据。\n"; Sleep(1000);system("start back.txt");system("PAUSE");    system("CLS");
}

创建一个 main.cpp 文件,代码如下:

#include<bits/stdc++.h>
using namespace std;
#include "Register.h"     //登录程序
#include "head.h" //菜单程序
#include "function.h" //功能程序 int main()
{int choose = 0,choose2;m1.news();    //存入药品信息 while(1){cout << "请选择:\n<*>1:管理员\n<*>2:用户\n其余选项均退出程序,请您三思!\n";cin >> choose;if(choose==1)   //管理员登录 {if(admin1())   //账号密码登录 {int adchoose = 1;head();     //标题while(adchoose){AdminMenu();    //管理员菜单cin >> adchoose;switch(adchoose){case 0: break;case 1:m1.check(); system("PAUSE"); system("CLS"); break;case 2:m1.revise(); break;case 3:m1.move(); m1.check(); system("PAUSE"); system("CLS"); break;case 4:m1.query(); break;case 5:m1.del(); break;case 6:m1.print(); break;case 7:m1.openback(); break;default: cout<<"输入错误!!!\n"; break;}}}}else if(choose==2)  //用户登录 {if(user1())     //账号密码登录 {int uschoose=1;char usechoose;head();while(uschoose){userMenu();cin >> usechoose;if(usechoose<'0' or usechoose>'9'){cout << "输入错误!!!\n\n";continue;}switch(usechoose){case '0': uschoose=0;break;case '1':m1.usercheck();  system("PAUSE"); system("CLS"); break;case '2':m1.query(); break; case '3':m1.choice(); break;case '4':m1.back(); break;default: cout << "输入错误!!!\n"; break;}}}}else return 0;}
}

然后就可以成功运行了。
管理员账号为:root
密码为:123456
用户账号密码在文件中。
除题目要求功能外另加入退货和查看退货信息功能。



C++课设——药品管理系统相关推荐

  1. c语言课设——药品管理系统

    运用结构体链表指针等写出实现增删改查统计文件等基本操作,代码如下 #include <stdio.h> #include <conio.h> #include <stdl ...

  2. C语言课设-药品管理系统(含代码)

    用到的知识点 文件操作,fopen,fclose,fprintf,fscanf,fread,fwirte函数等 链表操作,头插法,尾插法,增删节点 window.h里system(color XX), ...

  3. C语言课设-----工资管理系统(附全部源码)

    C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...

  4. 软件工程课设-----日程管理系统

    这学期进行了软件工程课设,题目是:日程管理系统(JavaWeb),为期3周.这三周只有前两天是企业老师讲解是企业老师讲解相关的基础知识(老师讲的水平实在是不可恭维......). 多的不多说.直接进行 ...

  5. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  6. C++期末课设—图书管理系统

    期末将至,还有人为不知道如何写课设而头疼吗,这里给大家带来一个最简单基础的课设项目,图书管理系统. 功能分析 一般来说,简单的图书管理系统有以下几个功能: 1.用户管理 2.读者管理 3.图书管理 4 ...

  7. 关于C语言课设学生管理系统的编写(简单版)

    课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...

  8. 数据库系统课设--人事管理系统

    前言 本博客内容为课设内容,在这里仅提供思路和代码给大家参考,请不要轻易抄袭,最好理解代码并自己实现题目的要求,锻炼自己的编程和逻辑能力.另外,本次的课程设计我是用命令行操作mysql数据库,使用ID ...

  9. java 课设 商品库存管理系统

    比较辛苦的java课设!写了蛮久的,战斗了好多个通宵. 下载https://download.csdn.net/download/qq_37871063/10297290 入门:JAVAFX+MVC+ ...

  10. java人力资源管理系统工作职责_JavaWeb课设——人力资源管理系统

    一.实验选题 1.1实验内容 本次课程设计内容为基于JavaWeb的人力资源管理系统.主要的工作如下: ①管理员用户的登录. ②实现管理企业的员工信息. ③实现管理企业的部门信息. ④实现企业的应聘信 ...

最新文章

  1. ASP.NET中利用cookies保持客户端信息
  2. (原創) 如何將CMOS所擷取的影像傳到PC端? (SOC) (DE2) (TRDB-DC2)
  3. Django 权限管理
  4. c++17(33)-数值上下限、无穷、非数、中文字符串
  5. 除了TensorFlow、PyTorch,还有哪些深度学习框架值得期待?
  6. C#模拟MSN窗体抖动[原创]
  7. java 8进制串转中文_为什么不能用中文进行编程?而英文就可以
  8. Head First Java学习笔记(2):类与对象
  9. LINUX下载编译:segment.jar/net.loomchild.segment.srx.Srx2SaxParser
  10. 21天学通C语言-学习笔记(13)
  11. 我的世界游戏服务器改名
  12. Java定时任务调度框架
  13. 高仿城通网盘php,PHP-php 如何实现同时允许下载的文件个数控制,类似于城通网盘这样的文件下载控制...
  14. ASP运行环境--.NetBox 软件使用方法,怎样使用.NETBOX运行asp项目?
  15. win10系统下安装基于虚拟机的32位XP系统
  16. 在VC中用CMenuXP使应用程序拥有Office XP风格的界面
  17. 1--request模块
  18. sql server 2008 r2服务器无法启动,怎么办
  19. 黄芪和当归的分量是5:1的比例,如黄芪30克,当归6克
  20. matlab数据归一化与反归一化处理

热门文章

  1. Linux命令之文本分析工具awk
  2. Linux中几个简单实用的文本处理工具
  3. Linux 日志查看常用命令
  4. 传智播客-刘意-java深入浅出精华版学习笔记Day02
  5. iOS开发初学者需要经常去的论坛或网站
  6. 802.1X体系介绍
  7. 破解vysor为专业版
  8. MATLAB利用Copula函数进行频率分析
  9. 汉字的 unicode 编码表
  10. 通达信版弘历软件指标_弘历软件,6个指标源码