医药管理信息系统课程设计报告.docx
《医药管理信息系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《医药管理信息系统课程设计报告.docx(39页珍藏版)》请在冰点文库上搜索。
医药管理信息系统课程设计报告
《数据库系统原理》课程设计报告
课程设计题目:
医药管理系统
班级:
姓名:
学号:
201124131239
指导教师:
开始日期:
13.4.10
撰写日期:
13.6.10
第1章概述1
1.1项目背景1
1.2编写目的1
1.3软件定义1
1.4开发环境1
第2章需求分析1
2.1信息要求1
2.2处理要求2
2.3安全性与完整性要求2
第3章概念结构设计3
3.1系统E—R图3
3.1.1局部E—R图3
3.1.2系统全局E—R图3
第4章逻辑结构设计4
4.1把ER模型图转换为关系表4
第5章主要模块的设计以及代码6
5.1系统主要模块设计6
5.2数据库连接19
第5章总结20
第7章参考文献20
第1章概述
1.1项目背景
学习了数据库,为了能让我们更加了解数据库的操作,结合前台软件界面和后台数据库进行的可视化信息系统操作。
同时随着科技的不断进步,企业都在不断的注重管理的信息化以完善企业管理,增强企业自身的竞争力。
医药业也不例外,通过较完善的信息系统实现自身企业对内部管理的方便性、合理性、快捷性、高效性等要求。
以前的手工管理效率低是最明显的缺陷,另外,数据的一致性不好维护,如某个药品信息的记录有所改动,那么该药品的其他记录就与此不一致,造成查询的费时费力。
要把全部数据都更改又相当不方便。
而药品业是关民生的行业,错误信息可能会造成不可收拾的严重后果。
因此,运用高效、准确的信息管理系统来代替手工管理是完善医药业管理的有效手段。
1.2编写目的
利用数据库系统可以很好的对数据进行维护,减少由于数据不一致等错误带来的麻烦。
方便数据的更新与查询,降低错误率,方便药品信息的维护及库存的盘点。
还可以运用较少的人员,高效的完成对医药的管理。
由于社会的发展不断趋于信息化,各个行业都要加强自身的信息化程度以适应社会的发展。
而管理信息化正迎合了这个趋势,数据库系统在医药业的应用业实现了医药业执行工具、业务管理等的信息化,在这个信息化社会为医药业的发展增加了新的动力。
相信随着社会的不断发展对该类系统的需求会越来越高。
医药管理信息系统,即服务于个人,又服务于企业,并最终服务于社会,这是让科技为人类服务的最好例证,其开发意义显而易见。
1.3软件定义
应用型软件,应用于医药信息管理的一门软件
1.4开发环境
MicrosoftSQLServer2005、eclipse(java编译器)
第2章需求分析
2.1信息要求
不同的用户有不同的权限,不同的权限可从该数据库中进行不同的操作。
用户类型有四种:
(1)普通顾客
(2)采购员(3)管理员。
(4)供应商
1.“信息查询统计”功能
1)查询药品经销商信息并统计其供应药品的总金额
2)查询药品信息及库存量
3)查询顾客信息及其购药的总金额。
4)统计采购人员的采购总金额
2.“信息录入”功能
1)录入药品经销商信息
2)录入药品信息
3)录入负责药品采购的超市员工(采购员)的信息
4)录入药品销售人的信息
5)录入顾客信息
3.“信息删除”功能
1)删除顾客信息
注:
删除顾客信息后,其相应的购买记录中的顾客字段置为空值。
2)删除销售人员信息
注:
删除销售人员信息后,其相应的销售记录中的销售人员字段置为空值。
4.“信息修改”功能模块
1)修改顾客信息
2)修改销售人员信息
3)修改药品信息
顾客信息:
顾客编号、姓名、性别、年龄、住址、电话、备注。
顾客交易信息:
顾客编号、症状、药品编号。
采购员信息:
编号、姓名、性别、年龄、住址、电话、备注。
药品信息:
药品编号、药品名称、服用方法、功效等。
2.2处理要求
系统要实现的功能有:
(1)用户登陆功能与用户管理:
可以选择不同的用户身份登录、同时修改用户的密码。
(2)信息查询功能:
查询相应的顾客信息、采购员人信息、药品信息、采购信息、销售员信息。
(3)信息修改功能:
修改相应的顾客信息、采购信息、药品信息、销售员。
(4)信息删除功能:
删除相应的顾客信息、经办人信息、药品信息、销售员。
(5)信息录入功能:
录入相应的顾客信息、采购员信息、药品信息、销售员。
(6)浏览功能:
浏览全部的顾客信息、药品交易信息、采购员信息、药品信息。
(7)报表功能:
实现导出顾客信息、采购员信息、销售员信息与药品信息。
(8)帮助功能:
对各类操作进行详细说明。
(9)用户的注册:
必须先在复选框里面选择身份,才能注册。
2.3安全性与完整性要求
(1)顾客信息:
添加顾客时,顾客的编号是系统自动增加每次增加一;删除顾客时,该顾客的信息将会删调;修改顾客信息时,顾客编号不允许修改,一个顾客只有一条记录。
(2)药品信息:
药品的信息包括产地等信息。
(3)供应商信息:
添加供应商时,供应商的编号是系统自动增加每次增加一;删除供应商时,该供应商的信息将会删调;修改供应商信息时,供应商编号不允许修改,一个供应商只有一条记录。
第3章概念结构设计
3.1系统E—R图
3.1.1局部E—R图
年龄性别姓名编号
住址名称
电话编号
顾客购买药品信息
症状
图3.1药品——顾客实体联系图
年龄性别姓名姓名
住址编号性别
电话编号
顾客服务销售员
症状n1
已购药品备注电话
录入日期
采购员
图3.2顾客——采购员实体联系图
3.1.2系统全局E—R图
通过系统局部E—R图优化设计系统的基本E—R图如下:
药品购买顾客服务销售员
1nn1
1
供应N供应商
图3.3医药管理实体联系图
第4章逻辑结构设计
4.1把ER模型图转换为关系表
数据库的表:
数据库里面包括九个表其各个表如下:
顾客信息表(client)
表4-1顾客信息表
供应商信息表(gys)
表4-2供应商信息表
采购员信息表(caigou)
表4-3采购员信息表
药品信息表(medicine)
表4-4药品信息表
销售员信息(xiaoshou)
表4—5销售员
顾客购买药品信息(xiaoshou)
表4—6销售员
其余的表的结构原理是一样的所以不一一列出,详细的信息请浏览数据库!
第5章主要模块的设计以及代码
5.1系统主要模块设计
系统主要有一下几大大模块:
1.用户登陆功能模块:
复选框里面有四个选项包括:
管理员、顾客、销售员、采购员。
图5.1登陆界面
2.用户登陆成功后界面:
图5.2登陆成功后界面
登录界面的部分代码如下:
publicclassyiyao_logextendsJFrame{
//省略部分不是核心代码
publicyiyao_log(){
setBounds(200,200,330,255);
URLurl=this.getClass().getResource("/log.jpg");//设置背景图片
ImageIconicon=newImageIcon(url);
jlabel.setIcon(icon);//使图片在标签上显示
co.add(jlabel);JComboBoxjc=newJComboBox(newmycombox4());
jc.setBounds(90,60,150,25);jc.setOpaque(false);
jlabel.add(jc);finalJLabeljl=newJLabel("用户名:
");
java.awt.Fontawt=newjava.awt.Font("用户名:
",1,15);//设置字体大小
jl.setFont(awt);jl.setBounds(30,30,60,170);
jlabel.add(jl);jt.setBounds(90,100,150,25);
jlabel.add(jt);jt.setOpaque(false);
finalJLabeljl1=newJLabel("密码:
");jl1.setBounds(30,60,60,180);
jlabel.add(jl1);jp.setBounds(90,135,150,25);
jp.setOpaque(false);jlabel.add(jp);
finalJButtonjb1=newJButton("登录");jb1.setBounds(95,170,65,30);
jb1.addActionListener(newqueding());jlabel.add(jb1);
JButtonjb2=newJButton("重置");jb2.setBounds(175,170,65,30);
jlabel.add(jb2);
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
//TODOAuto-generatedmethodstub
jp.setText("");jt.setText("");
}
});
JButtonjb_zuzhe=newJButton("注册");
jb_zuzhe.setBounds(250,170,65,30);jlabel.add(jb_zuzhe);
jb_zuzhe.addActionListener(newjb_zuzhe());
setVisible(true);setResizable(false);//使窗体不能变化
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
classjb_zuzheimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newzhuce_log();
}
}
classmycombox4extendsAbstractListModelimplementsComboBoxModel{
String[]name=daoyaogys.name;
Object[]name={"管理员","顾客","供应商","采购员"};
publicObjectgetElementAt(intindex){
returnname[index];
}
publicintgetSize(){
returnname.length;
}
publicObjectgetSelectedItem(){
returnselecte;
}
publicvoidsetSelectedItem(Objectitem){
selecte=(String)item;
}
}
classquedingimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(selecte.equals("管理员")){
newMaininform();setVisible(false);
}
elseif(jt.getText().trim().length()==0||jp.getText().trim().length()==0){
JOptionPane.showMessageDialog(null,"用户名或密码不允许为空");
return;
}
else{
if(selecte.equals("顾客")){
newdaoguke_log();
setVisible(false);
}
elseif(selecte.equals("供应商")){
newdaogys_log();setVisible(false);
}
}}}
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){
publicvoidrun(){
//更换皮肤代码/////////////////
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
//SubstanceLookAndFeel.setSkin(newNebulaSkin());
try//更改风格和皮肤
{
UIManager.setLookAndFeel(UIManager
.getCrossPlatformLookAndFeelClassName());
UIManager
.setLookAndFeel(newSubstanceGreenMagicLookAndFeel());
SubstanceLookAndFeel.setCurrentTheme("org.jvnet.substance.theme.SubstanceCremeTheme");
//改变主题
}
catch(Exceptione)
{e.printStackTrace();
}
newMaininform();newyiyao_log();
}
});}}
2.“注册”功能模块
图5-3注册界面
部分代码如下:
publicclasszhuce_logextendsJFrame{
//省略部分不是核心代码
publiczhuce_log(){
//setTitle("注册信息");setBounds(100,100,310,350);
JLabeljlabel=newJLabel();
URLurl=this.getClass().getResource("/yaopin.jpg");
ImageIconicon=newImageIcon(url);
jlabel.setIcon(icon);JLabeljgys_name=newJLabel("姓名:
");
jgys_name.setBounds(24,54,50,60);jlabel.add(jgys_name);
zc_name.setBounds(70,70,150,30);zc_name.setOpaque(false);
jlabel.add(zc_name);JLabeljgys_jiancheng=newJLabel("性别:
");
jgys_jiancheng.setBounds(24,97,50,60);jlabel.add(jgys_jiancheng);
zc_jiancheng.setBounds(70,110,150,30);zc_jiancheng.setOpaque(false);
jlabel.add(zc_jiancheng);JLabeljgys_youbian=newJLabel("密码:
");
jgys_youbian.setBounds(24,137,50,60);jlabel.add(jgys_youbian);
zc_youbian.setBounds(70,150,150,30);
zc_youbian.setOpaque(false);jlabel.add(zc_youbian);
JButtonj_zhuce=newJButton("确定");j_zhuce.setBounds(70,210,65,30);
j_zhuce.addActionListener(newzhuce());jlabel.add(j_zhuce);
JButtonj_quxiao=newJButton("取消");
j_quxiao.setBounds(145,210,65,30);
j_quxiao.addActionListener(newquxiao());
jlabel.add(j_quxiao);
JButtonj_fanhui=newJButton("返回");
j_fanhui.setBounds(220,210,65,30);
j_fanhui.addActionListener(newfanhui());
jlabel.add(j_fanhui);
co.add(jlabel);setVisible(true);
setResizable(false);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
classzhuceimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
newdaojb_zuzhe(yiyao_log.selecte);
}
}
}
}}
3.“信息查询”功能模块包括有:
顾客信息、药品信息、供应商信息、销售员信息及采购员的信息查询。
其中的顾客信息和供应商信息查询界面如下:
图5-3顾客信息查询界面
图5-4供应商信息查询界面
顾客信息查询部分代码如下:
publicclassclient_chaxunextendsInternalFrame{
//省略部分不是核心代码
publicclient_chaxun(Stringstring){
super(string);setTitle("顾客信息查询");
setLayout(null);jlabel.setBounds(0,0,980,650);
URLurl=this.getClass().getResource("/client.jpg");//设置背景图片
ImageIconicon=newImageIcon(url);
jlabel.setIcon(icon);//使图片在标签上显示
JLabelj_i=newJLabel("顾客信息查询");
j_i.setBounds(30,30,160,30);jlabel.add(j_i);
java.awt.Fontawt=newjava.awt.Font("顾客信息查询",1,25);//设置字体大小
j_i.setFont(awt);j_i.setForeground(Color.red);
JLabelj_id=newJLabel("请输入查询的编号:
");
j_id.setBounds(29,70,160,30);jlabel.add(j_id);
t_id.setBounds(175,70,180,30);t_id.setOpaque(false);
jlabel.add(t_id);JLabelj=newJLabel("购买的药品:
");
j.setBounds(480,70,110,30);jlabel.add(j);
JButtonj_ckeek1=newJButton("查询");
j_ckeek1.setBounds(365,70,95,30);
j_ckeek1.addActionListener(newcheek());
jlabel.add(j_ckeek1);JLabelj_name=newJLabel("姓名:
");
j_name.setBounds(125,115,45,30);
jlabel.add(j_name);t_name.setOpaque(false);//设置为透明
t_name.setEditable(false);//使其不能够改写
t_name.setBounds(175,115,285,30);jlabel.add(t_name);
JLabelj_sage=newJLabel("年龄:
");j_sage.setBounds(125,155,45,30);
t_sage.setEditable(false);t_sage.setOpaque(false);
t_sage.setBounds(175,155,110,30);jlabel.add(t_sage);
JLabelj_sex=newJLabel("性别:
");j_sex.setBounds(300,155,45,30);
t_sex.setEditable(false);t_sex.setOpaque(false);
t_sex.setBounds(350,155,110,30);jlabel.add(t_sex);
jlabel.add(j_sage);jlabel.add(j_sex);
JLabelj_adress=newJLabel("住址:
");j_adress.setBounds(125,195,45,35);
co.add(j_adress);t_adress.setEditable(false);
t_adress.setOpaque(false);t_adress.setBounds(175,195,285,30);
jlabel.add(t_adress);
JLabelj_phome=newJLabel("电话:
");j_phome.setBounds(125,230,45,35);
jlabel.add(j_phome);t_phome.setBounds(175,235,285,30);
t_phome.setEditable(false);t_phome.setOpaque(false);
jlabel.add(t_phome);
JLabel