c++课程设计药品信息管理系统.docx
- 文档编号:25361671
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:21
- 大小:375.20KB
c++课程设计药品信息管理系统.docx
《c++课程设计药品信息管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计药品信息管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
c++课程设计药品信息管理系统
c++课程设计-药品信息管理系统
第1章课程设计目的与要求
1.1设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象程序设计的方法。
(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序和修改程序。
1.2实验环境
硬件要求能运行Windows操作系统的微机系统。
C++语言应用程序开发软件使用:
VC++系统,或其他C++语言应用程序开发软件。
1.3预备知识
熟悉C++语言程序设计的基本知识及VC++编辑器的使用方法。
1.4设计要求
1.仔细分析设计题目,画出程序流程图,编写程序源代码。
2.积极上机调试源程序,增强编程技巧与调程能力。
3.认真书写课程设计预习报告,课程设计说明书。
4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。
第2章课程设计内容
2.1课题描述
在我国,随着医药卫生体制改革的深入,医药连锁经营的推行以及日趋激烈的商业角逐,越来越多的医药经营企业意识到提高企业管理水平的重要性,也迫切要求加快管理信息化的进程。
在医药行业中,医药经营企业的物流管理以及相应的财务处理、信息处理,长期以来一直采用手工操作,但随着产业结构调整、全新的市场竞争环境,药品企业管理和运营效率已经成为企业成败的关键所在,手工方式的弊端毕现无遗。
这就要求医药管理摆脱过去人手操作的烦琐,充分满足了医药经营企业的各种需求,从医药经营企业的各个环节对人流、物流、资金流、信息流进行统一系统的管理。
市场的需求和技术的支持,最终会导致越来越多的优秀医药管理软件的出现,并在竞争中得到不断的完善和优化。
本系统以C++语言实现了药品信息管理的:
库存管理、药品管理以及出库入库管理。
2.2系统设计
2.2.1功能分析
这是一个关于小刚药品信息管理系统,具有输入、显示、修改、查询、删除数据等功能,用户使用时,进入主菜单选择界面,选择想要进行的操作;
1.输入信息,输入数字“1”,增加药品信息
2.显示所有药品信息,输入数字“2”,将所有的药品信息以列表输出
3.查找药品信息,输入“3”,回车确定操作,输入要修改的ID号
4.修改药品信息,输入“4”回车确定操作,系统显示修改的页面,将需修改的药品息输入,输入完后回车确定
5.删除药品信息,输入“5”,回车确定操作,系统显示“输入删除药品的ID号,输入要删除的药品号,系统将保存的数据删除
6.退出系统,输入“0”,回车确定操作,退出系统。
2.2.2面向对象设计
类设计:
使用面向对象的程序设计进行分析,整个系统涉及两大类可操作,仓库、药品。
所以系统主要涉及两大类:
药品仓库类、药品类。
系统框架就是仓库类和药品类的定义;主函数中定义一个仓库对象,循环显示主菜单并根据用户选择调用仓库类的相应方法(成员函数)。
考虑系统操作的药品信息具有不确定性,所以考虑使用链表保存、处理药品信息。
仓库类包含:
所有药品信息的一个不带头结点的链表及可以对药品信息进行增,改,删除,查询,数量设置,数据存盘等操作的相关模块为成员函数。
所有药品都具有的公共信息及操作可以使用仓库类进行描述。
图2.1系统中uml类图之间的关系
小刚药品信息管理系统
增加药品信息
查看药品信息
退出系统
药品信息
药品分类信息
按名称查询
按类别查询
增加药品库存信
修改药品信息
直接退出
增加、删除药品信息
图2.2总体流程图
2.2.2类成员描述
a.药品管理员类:
classadmin
{
public:
admin();
private:
stringname;
};
b.药品仓库货架类:
classshelf
{
public:
shelf();
private:
adminmen;//管理员
stringstoreNo;//药品仓库编号
stringkinds;//药品大类
stringshelfNo;//药品货架号
};
函数成员描述以及函数功能:
1、void input()通过函数输入药品信息
2、void output()通过函数输出药品信息
3、Node()通过函数使指针指向下个地址
4、List()通过函数使指针指向首地址
5、void addNode()通过函数添加药品信息
6、void XSNode()通过函数显示药品所有信息
7、void queryNode1(char *TName)通过函数查询药品信息
8、void queryNode2(char *TName)同上
9、void delNode(char *TName)通过函数删除药品信息
10、void saveList()通过函数储存药品信息
11、ofs.open("data.txt");通过函数输出文本文件
12、ifs.open("data.txt");通过函数输入文本文件
13、~List()通数过定义析构函数,释放空间
2.3程序实现
2.3.1源码分析
#include
#include
#include
voidinput();/*输入*/
voiddisplay();/*显示*/
voidsearch();/*查找*/
voidamend();/*修改*/
voiddelete_slf();/*删除*/
voidlist();/*菜单*/
structstud/*定义药品属性数组*/
{
longnum;/*药品编号*/
charname[20];/*药品名字*/
floatprice;/*药品的价格*/
intgodsnum;/*药品的数量*/
}infom;
classSP/*定义个药品类*/
voidinput()/*输入信息函数*/
{
FILE*fp;/*定义文件指针*/
charnumstr[20],ch;
if((fp=fopen("c:
\\123.dat","wb"))==NULL)
{
exit(0);
}
do
{
getchar();
printf("\n\t\tenternum:
");
gets(numstr);
/*接受字符并存入数组中*/
infom.num=atol(numstr);
/*把字符型转换成整型*/
printf("\n\t\tentername:
");
gets(infom.name);
printf("\n\t\tenterprice:
");
gets(numstr);
infom.price=atof(numstr);
/*把字符型转换成float型*/
printf("\n\t\tentergodsnum:
");
gets(numstr);
infom.godsnum=atoi(numstr);
/*把字符型转换成整型*/
fwrite(&infom,sizeof(infom),1,fp);
printf("\n\t\tinputcontinue(y/n)?
");
ch=getchar();getchar();
}while(ch=='Y'||ch=='y');
fclose(fp);
}
voiddisplay()/*显示信息函数*/
{
FILE*fp;
charch;
intx;
floatf;
if((fp=fopen("c:
\\123.dat","rb"))==NULL)
{
printf("\nCanntopenfile!
\n");
getch();
exit
(1);
}
while(fread(&infom,sizeof(structstud),1,fp)==1)
{
printf("\n\tnum:
%ld",infom.num);
printf("\n\tname:
%s",infom.name);
printf("\n\t\price:
%.3f",infom.price);
printf("\n\t\godsnum:
%d",infom.godsnum);
}
fclose(fp);
}
voidsearch()/*查询信息函数*/
{
FILE*fp;
intx;
longy;
charch;
if((fp=fopen("c:
\\123.dat","rb"))==NULL)
{
printf("\nCannotopenfile!
\n");
getch();
exit
(1);
}
do
{
printf("\npleaseinputrecondnum:
");
scanf("%d",&x);
y=(x-1)*sizeof(infom);
rewind(fp);/*把指针移回文件开始*/
if(fseek(fp,y,0)!
=0)/*把指针指向Y*/
{
printf("cannotmovethere!
\n");
exit
(1);
}
fread(&infom,sizeof(infom),1,fp);
printf("num:
%ld\n",infom.num);
printf("name:
%s\n",infom.name);
printf("price:
%f\n",infom.price);
printf("godsnum:
%d",infom.godsnum);
ch=getchar();getchar();
}while(ch=='Y'||ch=='y');
fclose(fp);
}
ClassKF/*定义一个药品库房类*/
voidamend()/*修改信息函数*/
{
FILE*fp1,*fp2;
intflag;
longch;
charf;
chartemp[10];
do
{
if((fp1=fopen("c:
\\123.dat","rb"))==NULL)
{
printf("\tCannotopentheinformfile!
");
getch();
exit
(1);
}
if((fp2=fopen("c:
\\456.dat","wb"))==NULL)
{
printf("\tCannotopenthetempfile!
");
getch();
exit
(1);
}
printf("pleaseinputthenumyouwanttoamend:
");
getchar();
scanf("%ld",&ch);
flag=0;
while(fread(&infom,sizeof(infom),1,fp1)==1)
{
if(ch==infom.num)
{
printf("\n\nPleaseinputthenewinformation:
\n");
printf("\tnum:
");getchar();gets(temp);
infom.num=atol(temp);
printf("\tname:
");
gets(infom.name);
printf("\tprice:
");
gets(temp);
infom.price=atof(temp)
printf("\tgodsnum:
");
gets(temp);
infom.godsnum=atoi(temp);
getchar();
flag=1;
}
fwrite(&infom,sizeof(infom),1,fp2);
}
fclose(fp1);
fclose(fp2);
if(flag==1)
{
printf("amendsuccess!
\n");
remove("c:
\\123.dat");
rename("c:
\\456.dat","c:
\\123.dat");
}
else
printf("Cannotfindthisrecord!
\n");
printf("amendanymore?
(Y/N):
[]\b\b");
f=getchar();
getchar();
}while(f=='Y'||f=='y');
}
voiddelete_slf()
/*删除信息函数*/
{
FILE*fp1,*fp2;
intflag=0;
/*定义一个标记*/
longch;
charf;
chartemp[10];
do
{
if((fp1=fopen("c:
\\123.dat","rb"))==NULL)
{
printf("\tCannotopentheinformfile!
");
getch();
exit
(1);
}
if((fp2=fopen("c:
\\456.dat","wb"))==NULL)
{
printf("\tCannotcreatthetempfile!
");
getch();
exit
(1);
}
printf("Pleaseinputthenumyouwanttodelete:
");
getchar();
scanf("%ld",&ch);
while(fread(&infom,sizeof(infom),1,fp1)==1)
{
if(ch==infom.num)
{
flag=1;
}
else
fwrite(&infom,sizeof(infom),1,fp2);
/*分配一段内存空间&infom是首地址*/
}
fclose(fp1);
fclose(fp2);
if(flag==1)
{
printf("Deletesuccess!
\n");
remove("c:
\\123.dat");
/*删除文件123*/
rename("c:
\\456.dat","c:
\\123.dat");
/*对文件456重命名*/
else
printf("Cannotfindthisrecord!
\n");
printf("Deleteanymore?
(Y/N):
[]\b\b");
f=getchar();
getchar();
}while(f=='Y'||f=='y');
}
voidlist()
/*选择功能函数*/
{
intx;
while
(1)
{
system("cls");
printf("\t\t/\~~~~~~~~~~~~~\ ▓ ^*^ ☆ $$ .☆\n");/*软件界面*/
printf("\t\t./ \~~~▓~ ~~~~\◆ ☆感谢使用小刚药品信息管理系统☆ \n");
printf("\t\t/^^\══════\.◆ 工作人员\n");
printf("\t\t..▎[] ▎田 田▎|┃◆ ★姓名:
王宏刚\n");
printf("\t\t&&▎ ▎ ▎'|'▎@ ★ 学号:
141305055 \n");
printf("\t\t#■■■■■■■■■■〓▄▃▂▁★辽宁工业大学软件学院︸||\n");
printf("\t\t',你说过会同我一起使用!
','╱╱★╱☆\n");
printf("\t\t╭⌒','╭⌒╮ ╱ ╱╱ ╱ ☆╱★╱\n");
printf("\t\t','','','','☆ ╱★ ╱╱ \n");
printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n\n");
printf("\t\t请选择功能:
\n");
printf("\t\t*******╭☆☆˙We1come.*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮1.输入药品信息*******\n");
printf("\t\t*******┊ ︶ ︶︶ *******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮ ◣◤*******\n");
printf("\t\t*******┊ ︶ ︶︶◢◥*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮2.显示药品信息*******\n");
printf("\t\t*******┊ ︶ ︶︶ *******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮(▔◎▔)*******\n");
printf("\t\t*******┊ ︶ ︶︶╱│││╲*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮3.查找药品信息*******\n");
printf("\t\t*******┊ ︶ ︶︶*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮╭⌒⌒のˊ*******\n");
printf("\t\t*******┊ ︶ ︶︶( . .)ˋ*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮4.修改药品信息*******\n");
printf("\t\t*******┊ ︶ ︶︶*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮╱╲╲*******\n");
printf("\t\t*******┊ ︶ ︶︶╲╲╱*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮5.删除药品信息*******\n");
printf("\t\t*******┊ ︶ ︶︶*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮∴°★.☆°*******\n");
printf("\t\t*******┊ ︶ ︶︶.°∴°★*******\n");
printf("\t\t*******┊╭⌒ ╭⌒╮0.退出管理程序*******\n");
printf("\t\t*******┊ ︶ ︶︶*******\n");
printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n");
printf("请选择功能:
");
scanf("%d",&x);
if(x>=0&&x<=5)/*功能选择函数*/
{
switch(x)
{
case1:
input();
break;
case2:
display();
break;
case3:
search();
break;
case4:
amend();
break;
case5:
delete_slf();
break;
case0:
exit(0);
}
printf("\n\nsuccess.\nPressanykeytocontinue......\n");getch();
}
else
printf("\n\nfail.chooseagain\n\n");
}
}
voidmain()/*主函数*/
{
printf("\n\n\n\n\n\n\n\n\n\n");
list();
}
2.3.2运行结果
程序调试正确无误后,进入使用后,出现界面则为正确呈现形式,在界面上输入需要功能模块的的代码,将显示所需的界面,如下系列图所示
1.系统首页如图:
图2.3
2.程序输入时的界面图如下图
图2.4
3.药品信息显示如图:
图2.6
第3章总结
通过本次C++课程设计,收获还是很多的,从刚刚拿到课程设计题目后,我就先分析这个程序的一些基本的功能,从这些基本功能出发来定下一个程序的大致框架结构,这里面主要包括程序中所设计的类,类与类之间的继承关系以及一些主要的函数的设计思想。
比如:
删除记录函数、增加记录函数等等。
从一开始我就从图书馆借阅了不少的其他相关的c++资料,这些都是很宝贵的参看资料,可以说给我最后顺利的完成程序的编写打下了很扎实的基础
这次的课程设计,是自己独立完成了一个相对比较大的程序,里面用到的面向对象的知识也是比较多的,通过一番实践,很好的总结、强化了之前学习过的知识要点,并且也发现了自己还没好好掌握的知识点,对于没掌握的,我查阅了参考书籍及时补上。
感觉代码写到也是后来,状态越好,我感觉是由于自己对于一些基本的知识的比较好的掌握了。
有些问题虽然没遇到过,但是通过查阅资料,只要了解了它们的用法,自己就可以很快的模仿下来,不是照抄。
这一点我觉得在今后的程序设计中也是蛮重要的,因为我发现要写出好程序,首先应该去学习人家的程序,看懂他们的程序并且转化为自己的。
其次才有可能去创新。
参考文献
1.郑莉、董渊编着《C++语言程序设计》北京:
清华大学出版社
2.黄迪明主编《C++语言程序设计基础》北京:
电子工业出版社
3.钱能主编《C++
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 药品信息 管理 系统