C++课设——药品管理系统
2021/7/17 1:05:19
本文主要是介绍C++课设——药品管理系统,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目 录
- 题目部分
- 代码部分
题目部分
题目:药品管理软件
功能要求:
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(); } else cout <<"输入错误!!!"<<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 << "输入错误!!!"; } else cout <<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++课设——药品管理系统的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享