基于C++实现的药房管理系统

在这里插入图片描述

摘 要

随着经济的迅速发展,人们的生活水平得到显著提高。医疗服务行业也在人们生活中占据了最重要的一环,随着医改的实施,医药的销售日益增加,所以为了存储医院药品的剩余量与种类,使医药销售方面更加正规化,方便化,医药销售管理系统在此背景下诞生。在传统的医药销售管理中,医生与病人之间主要依靠纸信书写的形式来销售药物,以此来记录医药的销售情况。这样的方法效率比较低,且不易观看剩余医药的情况,无法直观的记录医药的销售。而随着信息技术的蓬勃发展,计算机科学与技术日趋成熟,计算机可以很好地辅助医院管理药品信息、销售情况等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。随着科学技术的不断提高,计算机应用到生产和生活的各个领域,发挥了越来越重要的作用。C++作为计算机语言的一类,使用C++语言编写程序对医药销售进行管理,具有手工操作无法比拟的优点,例如:检索迅速,查找方便,可靠性高,存储量大,寿命长,成本低等,因此研究开发医药销售系统具有可行的实际意义。
面对发展的需要通过专门的管理系统来系统化、规化以及高效地实现医药销售管理。并且随着计算机技术的快速发展,计算机的应用逐渐普及和深入,同时计算机软件的需求特日益增长,此次的医药销售管理系统便要有功能多,储存小等特点,从而在众多的管理系统中脱颖而出。而本次的医药销售管理系统管理人员主要功能有:查看药品信息、添加移除药品、移动药品、查询药品、修改药品、打印过期药品信息、查看退货信息;用户功能有:查看药品信息、查询药品、购买药品、退货。每个功能都有着方便直观的优势,为医生与护士提供了方便与便利。
本次设计通过C++语言技术实现,进行前期的调查与统计,所编写出医药销售管理系统。后期经过多次的调试与测试,医药销售管理系统运行良好,可以得到使用,大大的方便了医生与相关人员的统计,提高了效率。
关 键 词: 医药销售;C++;方便;系统

目 录

摘 要 I
1 绪论 1
1.1 课程设计目的 1
1.2 预备知识 1
1.3 实训的内容和要求 1
2 需求分析 2
2.1 系统目标 2
2.2 功能分析 2
2.3 开发环境 2
2.4系统功能分析图 3
3 概要设计 4
3.1 概念分析 4
3.1.1 实体 4
3.1.2 联系 4
3.2 局部实体属性图 4
3.3 E-R图设计 5
3.3.1 各实体之间E-R图 5
3.3.2 总体E-R图设计 7
4 详细设计 8
4.1 登录功能 8
4.2 查看药品信息 10
4.3 添加移除药品 11
4.4 移动药品信息 12
4.5 查询药品信息 13
4.6 修改药品信息 16
4.7 打印过期药品信息 16
4.8 购买药品 18
4.9 退货 19
5 测试分析 20
5.1 登录功能 20
5.2 查看药品信息 20
5.3 添加移除药品 21
5.4 移动药品信息 22
5.5 查询药品信息 23
5.6 修改药品信息 24
5.7 打印过期药品信息 25
5.8 购买药品 25
5.9 退货 26
6 源代码 27
心得体会 43
参考文献 44

1 绪论

1.1 课程设计目的
通过对从事医药产品的等深入的调查,发现医护人员辛苦劳动,故管理人员为方便用户,需开发一个医药销售管理系统。为便于医生、消费者快速、方便的查询,现把药品名称、药品功能、药品查询等规划为课程设计,进一步将理论与实际相结合,增强了对C++方面应用的理解,对自己今后学习C++积累了不少经验,在实验过程中,从建立数据开始,到对医药销售管理系统设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,代码的创建,可以更好的了解。
医药管理是件繁琐、复杂而又细致的工作。手工记账会容易出现“开空单”、错账的情况,故使用计算机实现的医药销售管理系统能够克服以上问题,使管理工作系统化、规范化和自动化。随着科学技术的不断提高,计算机科学与技术日趋成熟,计算机应用到生产和生活的各个领域,发挥了越来越重要的作用。作为计算机应用的一部分,使用计算机对药物销售进行管理,具有手工操作无法比拟的优点,根据所学的C++语言程序设计的知识,设计出医药销售管理系统,从而减轻医护人员的工作量。
1.2 预备知识
C++语言简单程序设计。
C++语言函数。
C++语言类与对象。
C++语言数组、指针与字符串。
1.3 实训的内容和要求
此次的医药销售管理系统,需要先对从事医药产品的等深入的调查,然后发现医护人员辛苦劳动,故为管理人员提供方便,开发出一个医药销售系统。为便于医生等医护人员更加方便的查询,所以现把药品名称、药品生产日期、药品的库存量、药品的销售记录等信息,通过进一步将理论与实际相结合,将医药销售系统得到实现。而本次的医药销售管理系统管理人员主要功能有:查看药品信息、添加移除药品、移动药品、查询药品、修改药品、打印过期药品信息、查看退货信息;用户功能有:查看药品信息、查询药品、购买药品、退货。

2 需求分析

2.1 系统目标
本系统是以药品基本信息为主体,以医药销售的医护人员为服务对象,为便于医生等医护人员更加方便的查询,通过对医药生产日期销售信息的管理操作,需要实现以下目标:
1、实现基础信息管理:药品的编号、新增药品功能,药品的基础信息,药品的生产日期、药品的类型、药品的功能药品的库存、药品的保质期、药品的容量等。
2、实现查询管理:药品的查询,无论是医药销售管理人员还是用户,都需要对药品进行查询。
3、打印过期药品信息:防止用户买到过期药物,使用此功能,将过期药品信息打印出来,方便医药销售管理人员处理过期药物,购买新的药物。
4、查看退货信息:当用户不需要购买药品时,用户通过此功能进行退货,医药销售管理人员通过此功能进行查看。
2.2 功能分析
医药销售管理系统需更好的方便医护人员,减轻医药销售人员的工作量,提高工作人员的工作效率,使医药销售人员可以做更多的事情,故医药销售管理系统中,可以分为管理员登录与用户登录。管理员通过输入账号与密码,进入操作页面,管理员操作页面中需要有以下几个功能:查看药品信息、添加移除药品、移动药品、查询药品、修改药品、打印过期药品信息、查看退货信息。使用这些功能,可以极大的方便医药销售人员,医药销售管理人员使用这些功能,可以更好的管理药品。而医药销售管理系统目的在于更好的方便购买,故用户操作页面,功能都是为更方便购买而设计,用户端页面功能有退出、查看药品信息、查询药品、购买药品、退货。使用这些功能,用户可以更加方便,医药销售管理人员也极大的方便了医药销售统计。在此次分析功能学习过程中,也从网上查了不少资料,也看了一些医院如何具体的管理销售这一方面,学以致用,自我创新,独立完成了这份自己的报告。
2.3 开发环境
通过使用Visual C++ 6.0软件进行程序的编译和运行。Visual C++6.0是功能最为强大的可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此,Visual C++6.0又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。
2.4系统功能分析图
在进行完功能分析之后,就要开始画出系统各个功能分析图。不同的用户对系统的功能不同,在此,我们采用自顶向下的结构化分析方法。首先,定义全局功能结构的框架,如图2.1所示。
在这里插入图片描述

3 概要设计

3.1 概念分析
3.1.1 实体
(1)实体用户:购买药品。
(2)实体药品:用户购买药品,医药销售相关负责人员负责进行医药的管理、购买与销售。
(3)实体管理员:管理后台药品信息。
(4)实体仓库:储存医药。
3.1.2 联系
(1)购买:顾客通过医院来进行购买药品,医药销售管理人员将药品从仓库中拿出进行卖出。
(2)管理:医药销售管理人员管理医药信息。
(3)询问:管理员作为医药销售管理系统的后台操作人员,如有用户对医药产生问题,可以询问管理员。
3.2 局部实体属性图
在这里插入图片描述
图3.1 药品信息实体属性图
在这里插入图片描述
图3.2 用户实体属性图在这里插入图片描述
图3.3 管理员实体属性图
在这里插入图片描述
3.3 E-R图设计
在这里插入图片描述
图3.7 全局E-R图
在这里插入图片描述

4 详细设计

4.1 登录功能
(1)功能描述
该功能在于不同的身份登录不同的页面,从而实现不同的功能,分为管理员登录与用户登录
(2)实现代码

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;
	} 
}

4.2 查看药品信息
(1)功能描述
医药信息储存于文档medicine.txt中,在菜单界面,输入该功能编号,系统会将所有储存的医药显示出来,供医护人员查看。
(2)实现代码

void Medicine::news()//读取文件中的医药信息 
{
	string buf;
	ifstream fp;
	fp.open("medicine.txt",ios::in);
	if(!fp.is_open())
	{
		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();
}
4.3 添加移除药品
(1)功能描述
对所进货的药品进行信息的录入或移除,方便医护人员管理药品信息,录入的信息有编号、名称、类型、功能、价格、库存、剩余的保质期、容量;药品种类繁多,其中不免有些药品不再使用,可以通过次功能将多余的药品信息删除。
(2)实现代码
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::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";
}

4.4 移动药品信息
(1)功能描述
有些药物,病人会长期使用,使用该功能可以将这些常用的药物放在前面,不常用的药品放在后面,方便用户的购买,也可以方便医护销售管理人员对药物的管理。
(2)实现代码

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]++;
	}
} 
4.5 查询药品信息
(1)功能描述
药品种类繁多,当需要某一药品时,难免不易找出,使用该功能,可以按照类型查询,也可按照价格区间查询,使药品的查询,更加容易找出,节约了时间,方便了所需人员的查找。
(2)实现代码
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;
}

5 测试分析

5.1 登录功能
(1)功能描述
该功能在于不同的身份登录不同的页面,从而实现不同的功能,分为管理员登录与用户登录
(2)实现截图
在这里插入图片描述
图5.1 管理员登录界面
在这里插入图片描述
图5.2 用户登录界面
5.2 查看药品信息
(1)功能描述
医药信息储存于文档medicine.txt中,在菜单界面,输入该功能编号,系统会将所有储存的医药显示出来,供医护人员查看。
(2)实现截图
在这里插入图片描述
图5.3 药品信息界面
5.3 添加移除药品
(1)功能描述
录入的信息有编号、名称、类型、功能、价格、库存、剩余的保质期、容量;药品种类繁多,其中不免有些药品不再使用,可以通过次功能将多余的药品信息删除。
(2)实现截图
在这里插入图片描述

图5.4 添加药品
5.4 移动药品信息
(1)功能描述
有些药物,病人会长期使用,使用该功能可以将这些常用的药物放在前面,不常用的药品放在后面,方便用户的购买,也可以方便医护销售管理人员对药物的管理。
(2)实现截图
在这里插入图片描述

图5.7 医药移动成功
5.5 查询药品信息
(1)功能描述
药品种类繁多,当需要某一药品时,难免不易找出,使用该功能,可以按照类型查询,也可按照价格区间查询,使药品的查询,更加容易找出,节约了时间,方便了所需人员的查找。
(2)实现截图
在这里插入图片描述

图5.8 医药查询界面

图5.9 医药查询成功
5.6 修改药品信息
(1)功能描述
因药品信息都储存在文档之中,如有药品录入错误,可以通过使用此功能,将所储存药品信息的文档显示出来,来对所需药品信息进行修改。
(2)实现截图
在这里插入图片描述

图5.10 医药信息修改功能
5.7 打印过期药品信息
(1)功能描述
若药品仓库积累太多而未卖出去,此功能可显示出过期药品所有的信息,工作人员进行过期药品清理。
(2)实现截图
在这里插入图片描述

图5.11 打印过期药品信息

5.8 购买药品
(1)功能描述
用户使用用户端查到所需药品后,使用该功能,通过输入药品的编号,来进行购买,顾客购买成功。
(2)实现截图
在这里插入图片描述

图5.12 用户购买药品
5.9 退货
(1)功能描述
若顾客不小心购买了多余药物,或者不再需要某药,通过该功能,来进行药品的退货,管理人员于管理端可看到。
(2)实现截图
图5.13 用户进行退货

6 源代码

点击获取资源

心得体会

参考文献

[1]郑莉,董渊,张瑞丰.C++语言程序设计(第3版).北京:清华大学出版社,2003
[2]吴乃陵,况迎辉,李海文.C++程序设计.北京:高等教育出版社,2003
[3]王挺,周会平,贾丽丽等.C++程序设计.北京:清华大学出版社,2005
[4]余苏宁,王明福.C++程序设计.北京:高等教育出版社,2003
[5]罗建军,朱丹军,顾刚等.C++程序设计教程.北京:高等教育出版社,2004
[6]马希荣,王洪权,姜丽芬等.C++语言程序设计(二级).北京:电子工业出版社,2005
[7]谭浩强.C++程序设计.北京:清华大学出版社,2004
[8]钱能.C++程序设计.北京:清华大学出版社,1999

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于qt使用c++实现图书管理系统源码,需要考虑如何实现图书的添加、删除、修改、查询等功能。首先,需要设计一个数据库来存储图书信息,比如图书的名称、作者、出版社、价格、出版日期等数据。然后,在qt界面中设计相应的界面,实现对数据库进行增删改查操作。其中,需要使用qt中的数据库模块来实现与数据库的数据交互,比如使用QSqlDatabase类连接到数据库,使用QSqlQuery类执行查询语句等。 在实现具体功能时,需要考虑以下几个方面。 1.图书的添加:设计添加图书的界面,包括输入图书信息和上传图书图片等功能。在提交信息后,使用SQL语句将输入的图书信息插入到数据库中,并将上传的图书图片保存到本地。 2.图书的删除:设计删除图书的界面,在界面中显示当前数据库中的所有图书信息,并提供删除按钮。用户点击删除按钮后,使用SQL语句将该图书从数据库中删除。 3.图书的修改:设计修改图书的界面,显示当前图书的信息,允许用户修改图书信息,并提供确认修改按钮。用户点击确认修改按钮后,使用SQL语句将修改后的图书信息更新到数据库中。 4.图书的查询:设计查询图书的界面,提供根据关键词查询图书的功能。用户在输入关键词后,使用SQL语句查询符合条件的图书信息,并在界面中显示查询结果。 基于qt使用c++实现图书管理系统源码,需要综合运用qt的界面设计和数据库模块等技术,以实现对图书信息的管理和维护。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒月玖.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值