医药销售管理系统设计实验报告。
数据库医药销售管理系统课程设计报告

数据完整性保障
通过设置主键、外键、约束等机 制,确保数据的完整性和一致性 ,防止数据冗余和错误。
界面设计
用户友好性
界面设计简洁明了,符合用户操作习惯,提供友好的用户体验。
功能性
界面提供全面的功能操作选项,包括药品查询、销售记录查询、 客户信息管理等,满足用户需求。
可扩展性
界面设计考虑未来功能扩展的可能性,采用模块化设计思想,方 便后续功能添加和修改。
测试结果分析
功能测试结果
经过黑盒测试,系统各项功能均能够按照预 期正确运行,包括药品信息管理、销售记录 查询、报表生成等。
性能测试结果
在压力测试下,系统能够保持稳定的运行状态,响 应时间、吞吐量等性能指标均符合预期要求。
问题与缺陷
在测试过程中发现了一些界面显示问题和操 作便捷性方面的不足,需要进行相应的优化 和改进。
系统性能
系统需要保证高效稳定的运行,具备 快速响应和处理大量数据的能力。
数据安全
系统需要采取严格的数据加密和备份 措施,确保数据的安全性和完整性。
易用性
系统需要提供简洁明了的操作界面和 友好的用户体验,降低用户的学习成 本和使用难度。
可扩展性
系统需要具备良好的可扩展性,以便 在未来根据业务需求进行功能扩展和 升级。
系统性能评估
响应时间
系统响应时间较快,用户操作后能够在短时 间内得到响应,提高了用户体验。
稳定性
系统运行稳定,未出现崩溃或故障情况,保 障了数据的安全性和系统的可靠性。
吞吐量
系统能够处理较大的数据量,满的可扩展性 ,方便后续功能的添加和升级。
实现客户信息的录入、修 改、删除和查询功能,支 持按客户名称、联系方式 等条件进行筛选和排序。
医药销售管理系统的设计与实现报告

医药销售管理系统的设计与实现报告一、引言二、功能需求分析1.客户管理:包括客户档案管理、客户分类管理、客户拜访记录等。
2.商品管理:包括商品信息管理、商品分类管理、库存管理等。
3.销售管理:包括销售订单管理、销售报价管理、销售退货管理等。
4.统计分析:包括销售额统计、客户拜访次数统计、库存预警统计等。
5.系统设置:包括权限管理、业务参数设置、系统日志记录等。
三、系统设计1. 系统架构:采用B/S架构,前端使用Web技术,后端使用Java开发。
2.数据库设计:采用关系型数据库存储数据,包括客户信息表、商品信息表、销售订单表等。
3.模块设计:按照功能需求进行模块划分,包括客户管理模块、商品管理模块、销售管理模块等。
4.界面设计:根据系统功能设计用户友好的界面,方便用户操作。
四、系统实现1. 系统框架搭建:使用Java框架,搭建前后端分离的开发环境。
2.数据库搭建:创建数据库,设计表结构,并编写数据库操作相关代码。
3. 前端实现:使用HTML、CSS、JavaScript等技术,实现系统的界面设计和交互功能。
4. 后端实现:使用Java语言,编写业务逻辑代码,并与前端进行数据交互。
5.测试与验证:对系统进行功能测试与验证,确保系统的稳定性和正确性。
6.部署与上线:将系统部署到服务器上,并上线给用户使用。
五、总结通过设计与实现医药销售管理系统,可以提高销售流程的效率,方便决策制定和执行。
本报告介绍了医药销售管理系统的功能需求分析、系统设计和实现过程。
医药销售管理系统的设计与实现是一个综合性的工程,需要全面考虑用户需求和系统架构,以实现系统的稳定性和可扩展性。
药品进销存管理系统软件工程实训报告

药品进销存管理系统软件工程实训报告一、项目背景本实训报告描述的是我们团队开发的药品进销存管理系统。
该系统是为了满足一家中型制药企业的需求,提高药品库存管理效率,降低库存成本,并提升客户满意度。
项目的主要目标是通过建立一个有效的信息系统,将药品采购、库存管理、销售和财务管理整合在一起。
二、项目目标与规划我们的目标是通过分析业务流程和需求,设计并开发一款药品进销存管理系统软件。
项目团队成员分工明确,包括系统架构设计、数据库设计、界面设计、系统开发以及测试等工作。
在项目的初始阶段,我们制定了详细的计划,包括时间表、里程碑、风险评估和应急预案。
三、系统设计与实现1. 数据库设计:我们选择了关系型数据库管理系统来存储药品信息、采购记录、库存数量、销售数据以及财务信息。
数据库表包括药品信息表、采购记录表、库存表、销售记录表和财务明细表。
2. 系统架构:我们采用了Java和Spring框架进行系统开发,使用HTML5、CSS3和JavaScript 进行前端开发,后端则使用Java Servlets和JSP进行处理业务逻辑和数据交互。
数据库连接则使用JDBC实现。
3. 界面设计:我们设计了一套用户友好的用户界面,包括登录界面、主界面、采购管理界面、库存管理界面、销售管理界面和财务报表界面。
界面设计遵循简单易用、清晰明了的原则。
四、系统测试与优化我们进行了全面的系统测试,包括功能测试、性能测试和安全测试。
测试结果表明系统基本满足需求,但在一些细节上仍有待优化。
例如,我们发现库存查询功能在大量数据下运行较慢,需要进行性能优化。
此外,我们还发现了一些安全漏洞,如用户密码加密方式过于简单,需要改进。
五、总结与展望经过本次实训,我们深入了解了药品进销存管理系统的开发过程,掌握了相关技术和工具,如数据库设计、系统架构、界面设计等。
同时,我们也发现了系统的一些不足之处,如性能问题和安全漏洞。
这些经验教训将有助于我们在未来的项目中做得更好。
数据库医药销售管理系统课程设计报告

数据库原理及应用课程设计<<医药销售管理系统>>学生姓名: +++++++学生班级: ++++学生学号: ++++++指导老师: +++++++目录一.系统需求分析 01.1开发目的 (1)1.2开发背景 (1)1. 1.1系统功能基本要求 (1)1.1.2具体要求如下 (1)1.2.系统功能分析图 (2)1.3数据流图和数据字典 (3)1.3.1 数据流图(DFD) (3)1.3.2 数据字典(DD) (4)二.概念结构设计 (6)2.1局部E-R图设计 (6)2.3系统总E-R图 (9)三 .逻辑结构设计 (11)3.1.逻辑结构实体转换成关系 (11)四.物理结构设计 (12)4.1分类存储 (12)4.2存取路径 (13)4.3备份和还原 (13)4.4索引 (13)4.5视图的建立 (14)五.数据库实施 (14)5.1建立数据库 (14)5.2表和截图 (15)5.3程序代码 (18)六. 数据库的管理(插入、删除、修改等)21结论 (26)参考文献 (26)一.系统需求分析1.1 开发目的调查从事医药产品的零售、批发等工作的企业, 根据其具体情况设计医药销售管理系统。
主要功能包括: (1)基础信息管理包括药品信息、员工信息、客户信息(2 ) 医药及医药用品的销售管理实现药品的查询、销售、收费收据管理和药品退货处理等(3)系统设置管理包括不同角色的管理、不同用户权限的设置等1.2 开发背景医药作为民生的基本保障之一, 是我们生活中不可缺少的部分。
近来, 越来越多的医药销售点的普及, 规模各不一样。
但总的来说, 免不了两个部分: 进购药品和销售药品。
为了实现这两个部分的功能和要求, 需设计出功能细致的完整系统。
该系统需包含对药品信息的管理、对财务状况的管理等。
医药管理是一项琐碎、复杂而又十分细致的工作。
手工进行企业日常的药品销售、出入库的工作, 容易出现“开空单”的现象, 且呆账、错账时有发生, 而且费时费力。
医药销售信息管理系统的设计与实现的开题报告

医药销售信息管理系统的设计与实现的开题报告一、研究背景随着医药行业市场竞争的日趋激烈和信息技术的不断发展,医药企业在市场营销方面也逐渐采用信息化手段进行管理和运营。
医药销售信息管理系统作为医药企业重要的信息化工具,通过集中管理医药销售信息、客户信息、产品信息等以及实现销售过程的自动化和标准化,从而提高销售效率,减少运营成本,提升企业核心竞争力。
二、研究目的与意义本文旨在设计并实现一个完整的医药销售信息管理系统,能够帮助医药企业实现以下目标:1.集中管理销售信息:通过系统化的管理手段统一管理销售信息,实现销售信息的高效收集和分析。
2.提高销售效率:通过自动化和标准化的销售流程,提高销售效率,缩短销售周期,释放销售人员的时间,提升销售人员的效率和工作满意度。
3.提高客户满意度:通过系统化管理客户信息,及时处理客户关系变化,提高客户满意度,增强客户忠诚度。
4.降低运营成本:通过实现销售流程的自动化和标准化,减少人工干预,避免销售误差和交叉发生,从而降低企业运营成本。
三、研究内容及方法本文将从医药企业销售管理的实际需求出发,借鉴成熟的信息化系统设计思路,设计并实现一个完整的医药销售信息管理系统。
具体内容和方法包括:1.需求分析:从医药企业实际销售管理需求出发,进行需求分析和问题定位,明确系统的功能和目标,提出系统的主要特性和要求。
2.系统设计:根据需求分析,确定系统的结构和设计思路,包括数据库设计、系统框架设计、系统模块设计、数据处理流程设计等。
3.系统实现:使用JAVA、MySQL等开发工具及相关技术,在设计思路的基础上,进行系统开发、程序编写、数据库管理等工作,实现系统的全部功能。
4.系统测试:通过模拟真实销售业务场景,测试系统的正确性、稳定性、可用性和可靠性等,检验系统是否符合实际需求和各项性能指标。
四、预期成果本文的预期成果为设计并实现一个完整的医药销售信息管理系统。
该系统具有以下特点:1.系统功能完整:能够高效地支持医药企业的销售管理过程,包括销售信息、客户信息、产品信息管理,销售订单处理、报表生成等核心功能。
药品销售系统实验报告

药品销售系统实验报告1. 引言药品销售系统是一种通过计算机网络实现药品销售、库存管理、订单处理等功能的系统。
本报告旨在介绍我们设计、实现和测试的药品销售系统,并对其进行评估。
2. 系统设计与实现我们的药品销售系统采用了分层架构,包括用户界面、业务逻辑层和数据访问层。
用户界面提供了用户操作系统的界面,业务逻辑层负责处理用户请求并进行相应的逻辑判断,数据访问层负责与数据库进行交互获取数据。
系统的功能模块包括药品浏览、药品搜索、药品下单、订单查询和库存管理。
用户可以通过界面浏览药品信息,搜索指定药品,下单购买药品,查询订单状态以及进行库存管理(如添加、删除、修改库存等操作)。
在实现过程中,我们采用了Java语言作为主要开发语言,使用MySQL作为数据库管理系统,采用了Spring Boot框架进行开发。
3. 实验过程3.1 数据库设计我们首先设计了数据库的结构,包括药品信息表、订单信息表和库存信息表。
药品信息表包含药品的ID、名称、价格、生产厂家等字段。
订单信息表包含订单的ID、用户ID、订单状态等字段。
库存信息表包含药品的ID、库存数量等字段。
3.2 用户界面设计我们通过HTML、CSS和JavaScript实现了用户界面。
界面包括了药品列表展示、搜索框、下单表单、订单查询表格以及库存管理表格等组件。
3.3 业务逻辑实现我们使用Java编写了业务逻辑层的代码,包括药品搜索、下单、订单查询和库存管理等功能的实现。
对于药品搜索功能,我们通过接收用户输入的关键字,并通过数据库查询匹配到的药品信息。
对于下单功能,我们先接收用户填写的下单信息,然后将订单信息插入订单信息表,并更新库存信息表中的库存数量。
订单查询和库存管理功能的实现类似。
3.4 数据访问实现我们使用Spring Boot框架提供的JPA功能,实现了数据访问层的代码。
通过JPA,我们可以方便地进行数据库操作,包括查询、插入、更新和删除等。
4. 实验结果与评估我们对药品销售系统进行了功能测试和性能测试。
医药销售系统设计报告书

医药销售系统设计报告书学生姓名:邢子禾学号:2206100311所在院(系):湘雅医学院专业班级:医学检验1003班指导教师:田琪日期: 2011/6/30摘要在实际的医药销售中,经常会遇到这样的问题:药品具体的摆放在什么位置?药品出自哪些药品生产厂家?药品销售过期的主要是哪些?如果我们能够设计一种有效的数据库来存储这些信息,这就可以有效的掌握到各方面需要的信息,不至于需要的时候,连自己本应该知道的也没有用上。
本系统正是为了解决诸如上述的问题,通过对药品信息,员工信息,供货商信息的全面的掌握,有利于医药销售的各方面的问题的解决。
关键词:医药信息 SQL 数据库 Visual Basic1. 系统需求分析 (3)2.系统设计 (3)系统功能结构模块设计 (4)数据库设计 (4)3.系统实现 (6)主界面实现 (6)系统登录窗体实现 (6)用户管理 (6)药品基本信息管理模块设计 (6)药品信息查询设计 (6)4.课程设计小结 (6)医药销售管理系统1.需求分析根据系统需求分析,本系统要求实现以下主要功能:(1)购入管理功能:包括购入登记(2)库房管理功能:包括库存查询(3)销售管理功能:包括销售登记、销售报表查询两个子功能。
(4)财务统计功能:包括当月统计(5)用户管理功能用户主要活动有:医药销售管理是指对药品信息的录入、修改和删除;查询药品信息,以了解是否有该药品和库存等信息;购入药品,入库记录;销售药品,出库记录;对进出帐目的记录统计。
2.系统设计(1)系统功能结构模块设计(2)数据库设计分析前面的系统功能要求,需要一个表来存储和管理客户信息,使系统能够接受客户查询药品时输入的各项数据,以实现数据录入、查询或统计客户信息等功能。
客户是本系统的第一个实体。
为了能实现查询和统计药品情况等功能,必须有一个表来存储和管理所有药品的信息。
药品是本系统的第二个实体。
据此可以绘出医药销售管理系统数据库的E-R图如下:2.1将数据库的概念模型转换为关系模型药品信息(药品编号,药品名称,药品类别,售价,进价,库存量,生产厂家,有效期)操作员(用户)信息(编号,姓名,用户名,密码)生产厂家信息(名称,联系方式,所在城市)药品销售信息(销售编码,销售日期,药品编码,药品名称,单价,数量,生产厂家,总额,销售员编码)2.2关系模式优化:①操作员信息(编号,姓名,用户名,用户口令)本系统不考虑职工信息的管理,为了使销售员编号与销售员的职工号连系起来,并能通过职工姓名来修改用户信息所以把员工的部分信息(职工号,姓名)和经理(用户名,密码)合成了操作员信息(编号,姓名,用户名,密码)以便系统功能的实现,所以在此不采用模式分解。
医药管理系统实验报告

成绩评定表课程设计任务书目录一、题目概述(内容及要求) (4)二、功能分析 (4)三、设计 (6)四、运行与测试 (7)五、总结 (8)参考文献 (23)一、题目概述(内容及要求)1.内容:制作一个医药管理系统,能够查看药品列表,显示药品相关信息,能够修改药品信息,能够添加没有的药品,能够根据不同条件查询药品信息。
2.要求:1.程序代码完成,编译运行成功。
2.数据输入首选采用文件的方式,其次键盘输入。
3.分析采用哪种合适的存储结构来储存数据4.设计一定的用户界面,简洁。
二、功能分析2.程序流程图图2.2 程序流程图三、设计相关代码:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#include <conio.h>typedef struct Drug{ char Drug_id[30]; //编号char Drug_name[50]; //药品名称char Drug_type[10]; //类型float Drug_price; //价格int amount; //库存数量char Drug_time[30]; //入库时间char remark[30]; //备注struct Drug *next;}Drug,*DrugPtr;#define MENU "欢迎进入药品管理系统\n"\"1: 查看已有药品列表\n"\"2: 添加新的药品\n"\"3: 删除药品信息\n"\"4: 修改药品信息\n"\"5: 分类查询\n"\"0: 退出\n"\"请您选择:"#define MENU41 "请选择要修改的选项\n"\"1:修改药品名称\n"\"2:修改药品价格\n"\"3:修改药品数量\n"\"4:修改药品类型\n"\"5:修改药品备注\n"\"0:返回主菜单\n"\"请您选择:"#define MENU5 "欢迎进入分类查询页面\n"\"1: 按编号查询\n"\"2: 按名称查询\n"\"3: 按类型查询\n"\"4: 按价格查询\n"\"5: 按库存数量查询\n"\"6: 按入库时间查询\n"\"0: 返回主菜单\n"\"请您选择:"#define MENU50 "按药品编号查询\n"\"请输入要查询的药品编号:"#define MENU51 "按药品名称查询\n"\"请输入要查询的药品名称:"#define MENU52 "按药品类型查询\n"\"请输入要查询的药品类型:\n"\"1: 中药\n"\"2: 中成药\n"\"3: 西药\n"\"0: 返回查询菜单\n"\"请您选择:"#define MENU53 "按药品价格查询\n"\"请输入要查询的药品价格:"#define MENU54 "按药品库存数量查询\n"\"请输入要查询的药品的库存数量:"#define MENU55 "按药品入库时间查询\n"\"请输入要查询的药品入库时间:"#define STRCMP(NAME, STR) strcmp((char *)GetStdin("请输入药品的编号(按0结束):", "%s", STR), "0")DrugPtr insert(DrugPtr head, int id, char* name); //添加药品void save_to_file( DrugPtr &yaolist); //将更新后的链表保存到文件中void read_to_list(DrugPtr &yaolist); //将文件读入链表void *GetStdin(const char *numstr, char *control, void *ret);DrugPtr getvalue(); //取值void druginsert(DrugPtr &yaolist, DrugPtr yao); //插入操作int isdrugin(DrugPtr yaolist, DrugPtr yao); //判断void drugmodify(DrugPtr &yaolist, DrugPtr yao); //修改操作void deletenode(DrugPtr &yaolist,char drug_id[]); //删除操作void deletedrug(DrugPtr &yaolist);void updatedrug(DrugPtr &yaolist);void listshow(DrugPtr yaolist); //显示操作void drug_find_name(DrugPtr head, char *name); //以名称查询void drug_find_id(DrugPtr head,char *id); //以编号查询void drug_find_type_z(DrugPtr head); //查询中药void drug_find_type_zc(DrugPtr head); //查询中成药void drug_find_type_x(DrugPtr head); //查询西药void drug_find_price(DrugPtr head,float price); //以价格查询void drug_find_amout(DrugPtr head,int amout); //以库存数量查询void drug_find_time(DrugPtr head,char *time); //以入库时间查询void drug_type_choose(DrugPtr head); //查询主菜单void choose_type(DrugPtr head); //类型查询int main(){ int choice;DrugPtr head=NULL;DrugPtr yao;read_to_list(head);while (*(int *)GetStdin(MENU, "%d", &choice)){ switch (choice){case 1:listshow(head);//显示药品列表break;case 2:{yao=getvalue();druginsert(head,yao);//添加药品printf("药品添加成功\n");break;}case 3:deletedrug(head);//删除药品break;case 4:updatedrug(head);//修改药品信息break;case 5: //分类查询drug_type_choose(head);break;case 0: //退出break;}}save_to_file(head);return 0;}void *GetStdin(const char *numstr, char *control, void *ret) {cputs(numstr);while (! scanf(control, ret)) {fflush(stdin);system("cls");cputs(numstr);}system("cls");return ret;} //显示列表void listshow(DrugPtr yaolist){printf ("%5s%8s%16s%10s%14s%13s%7s\n", "药品编号", "名称", "价格", "类型", "入库时间","库存数量","备注");DrugPtr p=yaolist;if(!p)printf("kong");while(p){printf("%-10s%-18s%-10.2f%-10s%-13s%-10d%-10s\n",p->Drug_id,p->Drug_name,p->Drug_price, p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}}DrugPtr getvalue(){ DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));printf("请输入药品编号:");scanf("%s",&yao->Drug_id);printf("\n");printf("请输入药品名称:");scanf("%s",&yao->Drug_name);printf("\n");printf("请输入药品价格:");scanf("%f",&yao->Drug_price);printf("\n");printf("请输入药品数量:");scanf("%d",&yao->amount);printf("\n");printf("请输入药品入库时间:");scanf("%s",&yao->Drug_time);printf("\n");printf("请输入药品类型:");scanf("%s",&yao->Drug_type);printf("\n");printf("请输入药品备注:");scanf("%s",&yao->remark);printf("\n");yao->next=NULL;return yao;}void druginsert(DrugPtr &yaolist, DrugPtr yao){ if(!yaolist)yaolist=yao;else{ yao->next=yaolist->next;yaolist->next=yao;}}DrugPtr isdrugin(DrugPtr yaolist,char drug_id[]){ DrugPtr p=yaolist;while(p){ if(!strcmp(p->Drug_id,drug_id))break;elsep=p->next;}return p;} //更新结点void drugmodify(DrugPtr &yaolist, DrugPtr yao){ int choice;DrugPtr p=yaolist;float t=0;//没有这句出现float point not loadedwhile(*(int *)GetStdin(MENU41, "%d", &choice)){ switch(choice){case 1:GetStdin("请输入药品的新名称:", "%s",yao->Drug_name);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 2:GetStdin("请输入药品的新价格:", "%f", &yao->Drug_price);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 3:GetStdin("请输入药品的修改数量:", "%d",&yao->amount);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 4:GetStdin("请输入药品的新类型:", "%s",yao->Drug_type);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 5:GetStdin("请输入药品的新备注:", "%s",yao->remark);printf("\n");cputs("更新成功!请继续选择\n");printf("\n");break;case 0:break;}}} //找到结点返回updatevoid updatedrug(DrugPtr &yaolist){ char string[30];DrugPtr yao;while (strcmp((char *)GetStdin("请输入药品编号(按0结束):\n", "%s", string), "0")) { yao=isdrugin(yaolist,string);if(yao)//判断药是否存在drugmodify(yaolist,yao);elseprintf("没有这种药\n");}}void deletedrug(DrugPtr &yaolist){ char string[30];while (STRCMP(SECOND, string)){if (isdrugin(yaolist, string)){deletenode(yaolist, string);}elseprintf("药品不存在!");}}void deletenode(DrugPtr &yaolist,char drug_id[]){ DrugPtr q,p;q=yaolist;p=q->next;if(!strcmp(yaolist->Drug_id,drug_id)){ yaolist=yaolist->next;free(q);}else{ while(p){ if(!strcmp(p->Drug_id,drug_id))break;q=q->next;p=p->next;}q->next=p->next;free(p);}printf("药品已删除!");}void read_to_list(DrugPtr &yaolist){FILE *fp=fopen("E:/yao.txt","r");if(!fp)printf("error");while( !feof(fp)){ DrugPtr yao=(DrugPtr)malloc(sizeof(Drug));yao->next=NULL;fscanf(fp,"%s%s%f%s%s%d%s\n",yao->Drug_id,yao->Drug_name,&yao->Drug_price,yao->Drug_type,y ao->Drug_time,&yao->amount,yao->remark);druginsert(yaolist,yao);}fclose(fp);}void save_to_file(DrugPtr &yaolist){ DrugPtr p=yaolist;FILE *fp=fopen("E:/yao.txt","w");if(!fp)printf("error");while(p){fprintf(fp,"%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",p->Drug_id,p->Drug_name,p->Drug_pric e,p->Drug_type,p->Drug_time,p->amount,p->remark);p=p->next;}fclose(fp);}void drug_find_name(DrugPtr head, char *name){ DrugPtr cur,p;p=head;cur = head;int i=0;while(p){ if(!strcmp(p->Drug_name,name))break;elsep=p->next;}if(p){ while(cur!=NULL){ if(!strcmp(cur->Drug_name,name)){ printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id, cur->Drug_name, cur->Drug_price,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有名称为%s的数量为%d\n",name,i);printf("\n");}else{ printf("\n");printf("没有找到该药名!\n");printf("\n");}}void drug_find_type_z(DrugPtr head){DrugPtr cur,p;cur = head;p=head;int i=0;while(p){ if(!strcmp(p->Drug_type,"中药"))break;elsep=p->next;}if(p){ while(cur!=NULL){ if(!strcmp(cur->Drug_type, "中药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中药的数量为%d\n",i);printf("\n");}else{ printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_type_zc(DrugPtr head){ DrugPtr cur,p;cur = head;p=head;int i=0;while(p){ if(!strcmp(p->Drug_type,"中成药"))break;elsep=p->next;}if(p){while(cur!=NULL){if(!strcmp(cur->Drug_type, "中成药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有中成药的数量为%d\n",i);printf("\n");}else{ printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_type_x(DrugPtr head){ DrugPtr cur,p;cur = head;p=head;int i=0;while(p){ if(!strcmp(p->Drug_type,"西药"))break;elsep=p->next;}if(p){while(cur!=NULL){ if(!strcmp(cur->Drug_type, "西药")){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有西药的数量为%d\n",i);printf("\n");}else{printf("\n");printf("没有该类型的药!\n");printf("\n");}}void drug_find_price(DrugPtr head,float price){ DrugPtr cur,p;cur = head;int i=0;p=head;while(p){ if(p->Drug_price==price)break;elsep=p->next;}if(p){while(cur!=NULL){ if(cur->Drug_price==price){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品价格为%f的数量为%d\n",price,i);printf("\n");}else{ printf("\n");printf("没有该价格的药品!\n");printf("\n");}}void drug_find_amout(DrugPtr head,int amout){ DrugPtr cur,p;cur = head;int i=0;p=head;while(p){ if(p->amount==amout)break;elsep=p->next;}if(p){while(cur!=NULL){ if(cur->amount==amout){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品库存量为%d的数量为%d\n",amout,i);printf("\n");}else{ printf("\n");printf("没有库存量为%d的药品!\n",amout);printf("\n");}}void drug_find_time(DrugPtr head,char *time){ DrugPtr cur,p;cur = head;int i=0;p=head;while(p){ if(!(strcmp(p->Drug_time, time)))break;elsep=p->next;}if(p){while(cur!=NULL){ if(!(strcmp(cur->Drug_time, time))){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);i++;}cur=cur->next;}printf("\n");printf("所有药品入库时间为%s的数量为%d\n",time,i);printf("\n");}else{ printf("\n");printf("没有找到入库时间为%s的药品!\n",time);printf("\n");}}void drug_find_id(DrugPtr head,char *id){ DrugPtr cur;cur = head;while(cur!=NULL){ if(!strcmp(cur->Drug_id,id)){printf("%-5s%-18s%-10.2f%-10s%-13s%-6d%-10s\n",cur->Drug_id,cur->Drug_name,cur->Drug_pr ice,cur->Drug_type,cur->Drug_time,cur->amount,cur->remark);printf("\n");break;}elsecur=cur->next;}if(!cur){ printf("\n");printf("没有找到该编号的药品!\n");printf("\n");}}void drug_type_choose(DrugPtr head){ int choice2;while (*(int *)GetStdin(MENU5, "%d", &choice2)){ switch(choice2){ case 1:char id[30];GetStdin(MENU50, "%s", id);drug_find_id(head,id);break;case 2: //名称char name[50];GetStdin(MENU51, "%s", name);drug_find_name(head,name);break;case 3: //类型choose_type(head);break;case 4: //价格float price;GetStdin(MENU53, "%f", &price);drug_find_price(head,price);break;case 5: //库存int amount;GetStdin(MENU54, "%d", &amount);drug_find_amout(head,amount);break;case 6: //入库时间char time[30];GetStdin(MENU55, "%s", time);drug_find_time(head,time);break;case 0:break;}}}void choose_type(DrugPtr head){ int choice3;while (*(int *)GetStdin(MENU52, "%d", &choice3)) {switch(choice3){ case 1: //中药printf("药库中的中药有:\n");drug_find_type_z(head);break;case 2: //中成药printf("药库中的中成药有:\n");drug_find_type_zc(head);break;case 3: //西药printf("药库中的西药有:\n");drug_find_type_x(head);break;case 0: //返回查询菜单break;}}}设计思路:首先会显示程序菜单,对应选项对应正确的功能,查看已有药品列表会直接读取程序要求文件yao.txt文件,并且显示在程序上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
药品销售管理系统需求分析一背景说明医药作为民生的基本保障之一。
是我们生活中不可缺少的部分。
近来,越来越多的医药销售点普及。
规模各不一样。
但总的来说,免不了两个部分:进购药品和销售药品。
为了实现这两个部分的功能和要求,需设计出功能细致的完整系统。
该系统需包含对药品信息的管理、对财务状况的管理等。
医药管理是一项琐碎、复杂而又十分细致的工作。
手工进行企业日常的药品销售、出入库的工作,容易出现“开空单”的现象,且呆账、错账时有发生,而且费时费力。
本系统在设计中考虑和克服了上诉问题,实现了企业管理工作的系统化、规范化和自动化。
在本次课程设计中,基于对资料的调查了解和自身的主观认识粗略设计出如下医药销售系统。
以达到实现简单的医药销售的各个功能的目的。
二部门划分1、进药部门该部门是医药销售的基础。
只有保证该部门的正常的运行,才能更好的完成药品销售的顺利进行。
在该部门中,需要对入库的药品进行细致入微的药品信息登记。
其中包括每次进购的药品信息和财务、每次取出用于销售的药品信息和财务、过期药品的信息和财务以及处理情况。
到一定的阶段还需要对所有的数据进行汇总分析。
2、售药部门该部门是医药销售的直接部门。
是面向顾客的一种服务。
会比较直观的体现整个医药的销售情况。
虽然该部门需要了解和学习不少的销售技巧方面的知识,以到达提高销售业绩的目的。
但对于本系统来讲,该部门主要实现对每次进柜的药品信息登记、每售出一件药品的信息登记、回收过期药品的信息登记等。
只有每次细致的记录相关信息,才能更有条理的顺利完成各个要求。
三子系统功能该系统总的方面分为两个大的板块,就是上面讲的进药部门和售药部门。
但在具体实施过程中。
会涉及到不同的子系统及相关的数据属性等。
这样更细致全面的罗列出各个方面的信息和要求,有助于系统的完整性和操作的有效性。
在医药销售中,首先会涉及到基本的药品信息,包括其基本属性信息以及价格信息等。
销售都会涉及到财务状况,因此必须做好相关的财务信息记录。
另外,还会涉及到销售管理和仓库管理的相关数据。
因此在该系统中,会有以下几个子系统:基本信息子系统、库房管理子系统、销售管理子系统、财务统计子系统、总经理子系统。
四各子系统的功能基本信息子系统1、药品基本信息(编号、药名、单价、数量、总价、供应商、备注)2、供应商基本信息(供应商号、名称、联系人、所在城市、联系方式)3、客户基本信息(客户号、类别、联系人、所在城市、联系方式)4、员工基本信息(员工号、姓名、用户名、密码、职位、权限)库房管理子系统1、对入库的药品进行登记(编号、药名、数量、单价、总价、备注)2、对仓库中的药品进行查询(编号、药名、库存数量、单价、备注)3、进行退货处理(编号、药名、退货数量、单价、备注)销售管理子系统1、对每一次销售行为进行登记(编号、药名、单价、数量、总价、经手人、日期)2、对销售报表进行查询(编号、药名、单价、数量、总价、经手人、日期)3、对销售退货进行处理(编号、药名、单价、数量、总价、经手人、日期)财务统计子系统1、每天的收入、支出记录(编号、发票号、数额、经手人、日期)2、每月的结算(编号、上月余额、收入、支出、余额、经手人、日期)3、年终结算(编号、收入、支出、净收入、经手人、日期)总经理子系统1、查询销售情况和财务状况以便了解本企业的经营状况,做出相应的决策;2、管理员工,了解不同员工的上班时间和他的相关的业绩;3、客户的管理,了解客户的数量,注销有问题的客户;4、供应商的管理,了解供应信息,选择最合适的供应商。
五数据字典概念结构设计过程本次课程设计开发医药销售管理系统,经过可行性分析、详细调查以及多次讨论,确定了该系统主要由进购药品和销售药品两部分组成。
具体来说分为五个子系统,分别是:基本信息子系统、库房管理子系统、销售管理子系统、财务统计子系统、总经理子系统。
各个子系统各司其职,独立完成自身的任务又与其他子系统紧密联系。
本结构设计过程采用自顶向下的设计方法,即首先定义全局概念结构的框架,然后逐步细化。
下面给出各个子系统的分析及分E-R图的设计及对其进行的各项调整基本信息子系统子系统功能:1、收集药品、员工、顾客和供应商的基本信息并做好相应的记录和管理。
其中包括对当前信息的添加、修改、删除等管理。
2、定期对各种信息进行整理。
比如对过了保质期的药品信息和过了一定时限的员工、顾客和供应商信息的删除。
以减少资源的浪费。
3、对系统自身的维护管理。
比如系统的修复和升级等。
根据设计情况以及数据字典,画出该子系统的分E-R图。
员工信息分E-R图:药品信息分E-R 图:有效期供应商 名称n 药品n售价库存量查询编号进价一■顾客信息E-R 图: 联系方式楓名称联系人实体属性如下: 员工(员工号、姓名、性别、年龄、工龄、级别、职务、权限、备注) 药品(编号、药名、类别、供应商、库存量、进价、售价、有效期、备注)顾客(客户号、名称、联系人、联系方式、所在城市、备注) 供应商(供应商号、名称、联系人、联系方式、所在城市、备注)库房管理子系统子系统的功能:1、 对入库的药品进行编号登记管理。
将各种药品分类编号登记其名称、数量及进购价格等 相关信息,便于查询的方便和效率。
2、 对每次从仓库取出的药品进行详细的登记管理。
主要包括其药名、数量、经手人、取出 日期等管理。
3、实现随时查询仓库情况的功能。
要求能即使登入界面、 准确查询相关的仓库当前的信息。
4、能做好对不合要求的药品的退货管理。
要求记录退掉的药品的名称、数量、所值金额和退货原因等相关信息。
根据设计情况以及数据字典,画出该子系统的分E-R 图。
实体属性如下:入库合出库药品(编号、药名、数量、单价、总价、备注) 对仓库中药品的查询(编号、药名、库存量、单价、备注) 退货处理(编号、药名、退货数量、单价、备注)销售管理子系统子系统功能:1、及时对每次销售行为的准确记录。
包括药品的编号、名称、数量、金额、经手人、经手日期等相关信息的准确登记。
方便整个的管理和其他的查询工作的完成。
2、 对每次退货进行详细的记录。
除了药品的基本信息之外,还需要对退货原因进行详细的 登记。
以便找出原因并尽力解决其原因。
以减少以后的退货率。
3、 能够实现月终和年终的总的数据统计以及能实现随时对销售报表的查询功能。
其中数据查询 *n./1供应商号*所在城市1供应商-联系方式/'j ”"1\ 、合格・存量4 药品 -• 存放 货号 单价 存量>供应商仓库号 面积的统计主要包括编号、药名、数量、金额、经手人、统计截止日期等。
而对报表的查询时需 要有如下属性的总的统计。
比如:某种药品的售出数量、总的售出金额、统计截止日期、负 责人证明。
根据设计情况以及数据字典,画出该子系统的分E-R 图。
顾客—L 支付、_』应收帐订货一4 n订单实体属性如下: 每次售出的药品(编号、药名、单价、数量、总价、经手人、日期) 每次退回的药品(编号、药名、单价、数量、总价、经手人、日期) 销售报表的查询(编号、药名、单价、数量、总价、经手人、日期) 财务统计子系统 子系统功能:1、 记录每天支出和收入的详细情况、相关细则以及结算情况。
记录尽可能详细,以方便管 理。
主要记录售出或退回的药品的编号、药名、发票号、单价、数量、总价、经手人、 日期以及备注等。
2、 记录每月支出和收入的详细情况、相关细则以及结算情况。
主要包括上月余额、当月的 收入、支出、余额、经手人和日期。
能实现随时查询的功能。
3、 记录每年支出和收入的详细情况、相关细则以及结算情况。
主要包括上年余额、当年的 收入、支出、净收入、经手人和日期。
能实现随时查询的功能。
根据设计情况以及数据字典,画出该子系统的分E-R 图。
顾客支付;i-n —应收账1订货n订单■..产品实体属性如下:折扣规则参照1产品描述组成n参照24、 每天的收入、支出记录(编号、发票号、数额、经手人、日期)5、 每月的结算(编号、上月余额、收入、支出、余额、经手人、日期)6、 年终结算(编号、收入、支出、净收入、经手人、日期)总经理子系统子系统功能:1、 能随时查询销售情况和财务状况具体情况以便了解本企业的经营状况,2、 管理员工,了解不同员工的上班时间和他的相关的业绩;3、 客户的管理,了解客户的数量,注销有问题的客户;4、 供应商的管理,了解供应信息,选择最合适的供应商。
根据设计情况以及数据字典,画出该子系统的分E-R 图。
实体属性如下:药品信息(编号、药名、单价、数量、总价、供应商、备注) 财务信息(编号、发票号、支出、收入、净收入、经手人、日期) 销售信息(编号、药名、单价、数量、总价、经手人、日期) 供应商(供应商号、名称、联系人、所在城市、联系方式) 顾客(客户号、类别、联系人、所在城市、联系方式) 对E-R 图调整的准则:现实世界中的事物能作为属性对待的尽量作为属性对待;属性和实体的划分:属性中不具有需要描述的信息,即属性是不可分的数据项,不再 包含其他信息。
具体调整如下:员工应对应一个领导关系,但为了简便起见,就用员工的“等级”属性来表示员工之间的 领导关系。
视图集成以上便是五个子系统的分 E-R 图设计及其调整的整个过程,接着要做的就是将所有的 分 E-R 图进行综合 ,合成一个系统的总 E-R 图 .由于本系统比较简单 ,分 E-R 图规模也比较小 , 所以 E-R 图合成过程采用一次将五个子 系统分 E-R 图集成总 E-R 图的方式 .分两步进行:做出相应的决策;第一步:合并。
解决各分E-R 图之间的冲突,将各分E-R 图合并起来生成初步E-R 图。
各分E-R 图之间的冲突主要有三类:1、属性冲突:(1 )属性域冲突,即属性值的类型、取值范围或取值集合不同。
由于本系统较简单,所以并不存在这种冲突;(2 )属性取值单位冲突。
由于本系统较简单,不存在这类冲突;2、命名冲突:(1)同名异义:由于本系统较简单,所以不存在这类冲突;(2)异名同义:由于本系统较小,所以不存在这类冲突;3、结构冲突:(1)同一对象在不同应用中具有不同的抽象:本系统在需求分析阶段原本存在这种冲突,考虑到后期的简化合并,我们在设计各个分E-R 图就早先解决了这个问题,即将在任何一个分E-R 图中作为实体出现的属性全部作为实体;(2)同一实体在不同分E-R 图中所包含的属性个数和属性排列次序不完全相同:由于本系统较简单,所以并不存在这种冲突;第二步:修改和重构。
消除不必要的冗余,生成基本E-R 图。
由于本系统涵盖的内容比较少,基本不存在冗余的现象,所以初步E-R 图就是基本E-R 图,不必再进行调整。
下面给出E-R 图。
逻辑结构设计一、 关系模式:药品信息(编号、药名、单价、数量、总价、供应商、备注) 员工信息(员工号、姓名、用户名、密码、职位、权限) 客户信息(客户号、类别、联系人、所在城市、联系方式) 供应商信息(供应商号、名称、联系人、所在城市、联系方式) 药品销售信息(编号、药名、单价、数量、总价、经手人、日期) 二、 关系模式优化:在上述关系模式中,每一个分量都是不可分割的数据项所以都符合第一范式;在员工信息关系模式中,员工是按照权限分类的, 职位不同权限也不同, 这样该关系模式就存在了非 主属性对码的传递依赖: 员工号-> 职位,职位-> 权限,所以就将用员工信息分解为如下现个 模式: ① 员工信息(员工号、姓名、职位) ② 职位权限信息(职位、权限)本系统不考虑职工信息的管理,为了使销售员编号与销售员的职工号连系起来,并能通过 职工姓名和职位来修改用户信息所以把员工的部分信息(员工号、姓名、职位)和用户信息(用户名、密码、权限)合成了员工信息(员工号、姓名、用户名、密码、职位、权限)以 便系统功能的实现,所以在此不采用模式分解。