资源描述
数据库课程设计报告
课 题: 药品进销存管理系统
专业班级: 计算机科学与技术
学 号:
姓 名:
指导教师: 老师
学 院: 信息工程学院
2011年6月20日
目 录
目录
摘 要 2
1 课程设计的目的和意义 3
2 需求分析 4
3.总体设计 5
4。详细设计 6
4 系统实现 0
5 系统调试 0
小结 0
参考文献 0
摘 要
信息时代已经来临,信息处理的利器—-计算机,应用于商品的日常管理,为经济管理的现代化带来了从未有过的动力和机遇,为商品销售领域的发展提供了无限的潜力。采用计算机管理信息系统已成为商品管理科学化和现代化的标志,给销售商带来了明显的经济效益和社会效益。
这个数据库系统是一个药品进销存管理系统,包括药品销售界面、库存查询界面以及药品信息查询界面,分别有添加、删除、查阅等功能。药品进销存管理系统其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用visual Studio 2010以及SQL2008开发工具,利用其易于上手和强大的数据库支持,方便我们快速开发出这个系统。
1 课程设计的目的和意义
药品管理是商品管理的一种。一些大中型的医院、药品专卖店或药房,往往存在对药品的进销存管理问题.采用传统的管理方式费工费时、效率低下。因此设计出一款能够满足需要的软件,不仅能使办公效率大大提升,也对管理的科学性、安全性、可预见性方面提供了依据。
这对企业来说节约了成本、提高了可靠性,也更便于操作。
2 需求分析
这个系统是面向销售方的.所以应从他们的角度考虑,系统应方便他们对药品进行日常管理,所以大体上包括以下内容:药品销售的管理、药品入库的管理、库存的管理、药品基本信息的管理,在药品销售窗体中,功能基本上包括基本药品的查询及选购数量和总价,一些简单的计算包括录入销售单价和数量之后自动计算出总额,在入库管理中,功能基本上包括药品添加、删除和修改等等;在库存管理窗体中基本功能包括基本库存信息的浏览和查询等.
数据库方面,和前面的功能相对应的,包括三个表:登录表、、库存表、药品信息表。
登录表中主要存储用户的账号和密码信息,库存表中存储的包括每一种药品的现存量,药品信息表中存储每一种药品的基本信息,包括药品名称、用量等.库存与销售之间的联系时这样的,销售一次药品,库存信息表中的相应的药品的数量减掉销售的数量。
这些功能基本上满足了一个销售方的对日常药品的管理需求,能够在一定程度上加快管理的效率,提高管理的效率和可靠性。
可行性分析
可行性分析是系统分析阶段的第二项活动,它的主要目是进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行了调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性分析是对系统进行全面、概要的分析.通过调查分析,本系统设计主要有以下三个可行性:
。1 操作可行性
本系统操作简单,易于理解,只需通过简单指导,上手较快,运行环境要求低.
技术可行性
本系统在Windows XP Server 开发环境下,利用Visual studio2010开发工具,并使用SQL Server 2008作为数据库管理系统,来实现医院药品进销存系统的各种功能。SQL Server 2008属于主从时式的数据库服务器这也是主从式数据库服务器的特点,服务器本身重在数据的管理,为客户端应用程序提供一致的接口。
3.总体设计
本系统将涉及多个窗体的制作,从而实现多项管理功能。期中包括对药品信息的管理,它专门用于对药品的各种信息的管理;对药品进货的管理;对药品销售的管理;对药品库存的管理。在这些数据管理中,还可以实现一些数据的自动计算功能。
总共11个窗体,分别为登陆窗体、菜单选择窗体和九个功能窗体。登陆窗体要求密码和用户名都正确才能登陆,否则无法使用本系统;菜单选择窗体提示用户进行相应的功能选择;四个功能窗体分别完成药品销售、药品进货、药品信息、库存管理功能。
后台数据库的设计总共有三个表,包括登录表、药品信息表、库存信息表。作为后台的支持,分别和前面的功能界面连接。
C/S模式
本系统事实上是基于C/S模式的信息管理系统,客户机通过服务器去访问所需要的数据库,在这里客户机就是指VB开发应用程序,服务器是指SQL Server 2000所用的服务器,本系统用的是本地服务器,系统模式图如下图2-1所示:
数据库
数据库管理系统
服务器
客户机
(VB)
图2—1 系统模式图
这里VB客户应用程序通过本地服务器连接到SQL Server 2000的数据库,访问所需要的数据信息。在学生学籍管理系统中,从而实现用户对相应的数据信息进行修改、查询和录入等操作,以达到对学生学籍方面工作的各项管理.
C/S模式简介
C /S模式是一种两层结构的系统:第一层是在客户机系统上结合了表示与业务逻辑;第二层是通过网络结合了数据库服务器.C/S模式主要由客户应用程序、服务器管理程序和中间件三个部分组成,以下是C/S模式的一些优点:
l C/S交互性强。因为客户端有一套完整应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。
l C/S模式提供了更安全的存取模式.由于CS配备的是点对点的结构模式,采用适用于局域网、安全性可以得到可靠的保证。
l 响应速度快.由于客户端实现与服务器的直接相连,没有中间环节。
l 操作界面漂亮,形式多样,可以充分满足客户自身的个性化要求。
确保SQL Server 2008服务器正常工作
1. SQL Server 2008安装完毕后,启动【服务管理器】,在如图2-2所示的【SQL Server 服务管理器】界面中可以查看服务器的服务是否正常启动。
图2-2 【SQL Server服务管理器】界面
2。 启动服务器上的【企业管理器】,查看【企业管理器】是否能够正常管理.
测试SQL Server 2008和本地服务器的连接
1. 启动【查询分析器】。由于【查询分析器】首选必须连接服务器,然后才能工作.出现【连接到SQL Server】界面,在【SQL Server】文本框中输入本地服务器的别名,或者单击按钮将客户机能够自动识别的别名添加进来。完成设置后单击按钮。
2. 成功连接到本地数据库服务器界面.表明连接参数配置正确,如果不能出现此界面,则需要仔细检查本地服务器参数是否正确。
其次 Vc与SQL2008建立联系各构成数据源;
4。详细设计
一. 前台应用程序的设计
总共包括11个窗体,其中有登录窗体、菜单选择窗体和九个功能窗体,九个功能窗体包括药品信息查询窗体、药品库存查询窗体、药品销售窗体、药品入库窗体及药品修改窗体等。
登录窗体中包括两个lebel控件、两个按钮控件、两个textbox控件,当然要对相应的控件进行必要的设置,
菜单选择窗体中就是几个简单的MenuStrip控件。分别进入功能子系统。
九个功能窗体如下:
药品销售窗体:
一个datagridview控件和三个button控件,三个textbook控件,三个label控件.
进货记录窗体资源
药品信息窗体
二. 后台数据库的设计
一个数据库,三个基本表,为每一个表建立基本的属性和主键.
流程图如下
开始
登陆
成功与否
否
是
删除记录
信息
修改
药物进出
药品信息
菜单选择
图1。流程图
:
概念结构设计
概念结构设计通常是使用E—R图对它的描述工具进行设计,对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型,设计E—R图
库存
药品信息
库存量
有效期至
价格
名称
生产日期
编号
编号
名称编号
成分
规格
功能
4 系统实现
1. 在药品销售窗体中, 先实现药品查询以便确认,并在datagridview中显示药品信息;
在查询按钮上代码如下
private void button2_Click(object sender, EventArgs e)
{
string userName = Box1。Text;
string password = Box2。Text;
string connString = "Data Source = 。 ;Initial Catalog = 医院药品进销存系统;Integrated Security = true”;
SqlConnection connection = new SqlConnection(connString);
string sql = String。Format("select * from 药品信息 where ypcode = ’{0}' or ypname = '{1}'”, password, userName);
dataAdapter = new SqlDataAdapter(sql, connection);
dataset = new DataSet();
dataAdapter。Fill(dataset);
dataGridView1。DataSource = dataset。Tables[0];
}
2. 在确认交易按钮里添加如下代码:
private void button1_Click(object sender, EventArgs e)
{
string s = textBox3.Text;
string userName = Box1.Text;
string password = Box2。Text;
int i = Int32。Parse(s);
string connString = ”Data Source = . ;Initial Catalog =医院药品进销存系统;Integrated Security = true”;
SqlConnection connection = new SqlConnection(connString);
string sql = String。Format("select kcamount from 库存 where ypcode ='{0}’ or ypname =’{1}'", password, userName);
SqlCommand command = new SqlCommand(sql, connection);
connection。Open();
int num = (int)command.ExecuteScalar();
int d;
d = num - i;
string sqll = String.Format(”update 库存 set kcamount = '{0}' where ypcode =’{1}'”,d, password);
SqlCommand commandl = new SqlCommand(sqll, connection);
int aa = (int)commandl。ExecuteNonQuery();
if (aa 〉 0)
{
MessageBox.Show("出售成功|”);
}
3. 在药品信息检索中的执行查询按钮中添加代码如下:
string userName = Box1.Text;
string password = Box2。Text;
string connString = ”Data Source = . ;Initial Catalog = 医院药品进销存系统Integrated Security = true";
SqlConnection connection = new SqlConnection(connString);
string sql = String。Format("select * from 药品信息 where ypcode = ’{0}' or ypname = '{1}’", password, userName);
dataAdapter = new SqlDataAdapter(sql, connection);
dataset = new DataSet();
dataAdapter.Fill(dataset);
dataGridView1.DataSource = dataset.Tables[0];
4药品入库代码如下:
库存TableAdapter。Update(医院药品进销存DataSet4.库存;
MessageBox.Show("您已成功修改药品信息, ”您已成功修改药品信息", MessageBoxButtons.OK, MessageBoxIcon。Exclamation);
5 修改药品信息代码如下:
tring connString = ”Data Source = . ;Initial Catalog = 医院药品进销存系统Integrated Security = true";
SqlConnection connection = new SqlConnection(connString);
DataTable dt = new DataTable();
string update = ”update 药品信息 set ypname='" + textBox2.Text.ToString() + "’,price='" + textBox7.Text。ToString() + "’,chengfen='” + textBox5。Text.ToString () + ”’,guige='" + textBox3.Text.ToString () + "',yongliang='" + textBox6。Text。ToString () + "',ypcode=’" + textBox1。Text.ToString () + ”' where ypcode = '"+ textBox1 。Text + "'”;
try
{
connection.Open();
SqlCommand cmd = new SqlCommand(update, connection);
int n = cmd.ExecuteNonQuery();
if (n 〉 0)
{
MessageBox。Show("修改药品成功”);
}
else
{
MessageBox。Show(”修改药品失败");
}
}
catch (Exception ex)
{
MessageBox.Show(ex。Message);
}
finally
{
connection.Close();
}
}
6 删除药品代码:
private void button1_Click(object sender, EventArgs e)
{
string bianhao = textBox1.Text;
tring connString = ”Data Source = 。 ;Initial Catalog = 医院药品进销存系统Integrated Security = true”;
try
{
connection。Open();
string sql = String.Format("delete from 药品信息 where ypcode={0}", bianhao);
SqlCommand cmd = new SqlCommand(sql, connection);
int num = (int)cmd。ExecuteNonQuery();
if (num 〉 0)
MessageBox.Show("删除成功”, "");
else
{
MessageBox.Show(”删除失败 ”, "”);
}
}
catch (Exception a)
{
MessageBox.Show(a。Message, "错误”, MessageBoxButtons.OK, MessageBoxIcon。Error);
}
finally
{
connection.Close();
}
}
5 系统调试
系统开始运行界面如图:
图2。登陆
输入账号和密码后(管理员、111111)将进入菜单选择窗体,如下图:
图5.菜单选择窗体
进入第一个进货信息后,执行查询,如下图所示:
查询单个药品
返回后进入第二个功能窗体,同样执行库存查询显示如下:
返回后进入药品销售窗体,
图8.药品销售管理窗体
返回后,进入下一个功能窗体:
新品入库(购买药品药品)
删除药品信息
修改库存信息
小结
在这次课程设计中,是对自己动手能力的一次考验,通过老师的讲解、同学的帮助和自己的课后学习,学到了很多有用的知识,对数据库知识在软件工程的应用中有了初步的了解,为以后自己的学习和工作奠定和坚实的基础.
由于是第一次使用visual studio2010开发软件,在控件的使用上显得的很不足,不断的通过看视屏和资料渐渐的掌握了一些常见控件的用法,在数据库的支持上也学到了很多知识,当然第一次开发出一个较复杂的系统,难免在软件的质量上会有欠完善的地方,由于时间紧迫,没能做到尽善尽美,在功能上,也没什么特别出彩的亮点,这是遗憾。当然在以后的学习中会不断的积累经验和知识,不断提高自己的能力。
针对系统的不足还有以下几个方面需要进一步的完善和补充:
(1)界面有待进一步改进,使其更加美观。
( 2)检测系统错误需进一步完善.
(3)系统的维护功能要更强.
(4)数据备份和恢复更完善。
在软件的美化上,前几个功能窗体基本上还加了点图片,但自己没什么美术功底,所以此软件在外观上还是有很多地方可以改进的。
参考文献
夏邦贵编著。SQL Server数据库开发入门与范例解析。北京:机械工业出版社,
金林樵,唐军芳等编著。SQL Server数据库应用开发技术。北京:机械工业出版社,
C#100个编程实例程序
C#入门经典
Visual C#.net程序设计教程
部分源代码
1 登陆
private void button1_Click(object sender, EventArgs e){
string userName = txtname.Text;
string password = txtpwd.Text;
string connString = "Data Source = . ;Initial Catalog = 医院药品进销存系统;Integrated Security = true”;
SqlConnection connection = new SqlConnection(connString);
string sql = String。Format(”select count(*) from 账户密码表 where username =’{0}'and code ={1}", userName, password);
try
{
connection。Open();
SqlCommand command = new SqlCommand(sql, connection);
int num = (int)command.ExecuteScalar();
if (num 〉 0)
{
MessageBox。Show("”, ”登录医院药品进销存系统̨?成¨¦功|”,
MessageBoxButtons。OK, MessageBoxIcon.Information);
Form2 form = new Form2();
form.Show();
this。Visible = false;
}
else
{
MessageBox。Show("您输入有误", "登录失败 ¹", MessageBoxButtons。OK,
MessageBoxIcon.Exclamation);
}
}
catch (Exception ex)
{
MessageBox。Show(ex.Message, ”操作数据库出错",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
2修改信息
private void button1_Click(object sender, EventArgs e)
{
string connString = ”Data Source = . ;Initial Catalog = 医院药品进销存系统;Integrated Security = true";
SqlConnection connection = new SqlConnection(connectionString);
DataTable dt = new DataTable();
string update = "update 药品信息 set ypname=’" + textBox2.Text.ToString() + ”’,price=’" + textBox7.Text.ToString() + ”',chengfen=’” + textBox5.Text.ToString () + ”’,guige='” + textBox3。Text.ToString () + "’,yongliang='" + textBox6.Text。ToString () + ”’,ypcode='” + textBox1。Text.ToString () + ”’ where ypcode = '”+ textBox1 。Text + ”'”;
try
{
connection。Open();
SqlCommand cmd = new SqlCommand(update, connection);
int n = cmd。ExecuteNonQuery();
if (n > 0)
{
MessageBox.Show(”修改信息成¨¦功|!ê?”);
}
else
{
MessageBox。Show("修改信息?”);
}
}
catch (Exception ex)
{
MessageBox。Show(ex。Message);
}
finally
{
connection.Close();
}
}
3删除
private void button1_Click(object sender, EventArgs e)
{
string bianhao = textBox1.Text;
string connString = "Data Source = . ;Initial Catalog = 医院药品进销存系统;Integrated Security = true";
try
{
connection。Open();
string sql = String.Format("delete from 库存 where ypcode={0}", bianhao);
SqlCommand cmd = new SqlCommand(sql, connection);
int num = (int)cmd.ExecuteNonQuery();
if (num 〉 0)
MessageBox.Show(”删除成功|”, "”);
else
{
MessageBox.Show("删除失败 ", "");
}
}
catch (Exception a)
{
MessageBox.Show(a。Message, ”错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
connection.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1。Text = null;
}
}
查询信息
string userName = Box1。Text;
string password = Box2。Text;
string connString = "Data Source = . ;Initial Catalog = 医院药品进销存系统Integrated Security = true";
SqlConnection connection = new SqlConnection(connString);
string sql = String.Format(”select * from 药品信息 where ypcode = '{0}' or ypname = ’{1}'”, password, userName);
dataAdapter = new SqlDataAdapter(sql, connection);
dataset = new DataSet();
dataAdapter。Fill(dataset);
dataGridView1.DataSource = dataset。Tables[0];
14
展开阅读全文