当前位置:文档之家› 药品管理系统

药品管理系统

数据库课程设计——药品管理系统学院: 软件学院专业:软件工程班级:软工121班姓名:苟安、黄会刚、崔宇学号:8000112013丶80001120378000112039指导老师:黄旭慧2014年12月目录1.问题描述 (1)1.1背景 (1)1.2业务需求 (2)2.系统设计 (4)2.1概念设计 (4)2.1.1实体ER图 (4)2.1.2总ER图 (5)2.2逻辑设计 (6)2.2.1ER图转换成总关系模式图 (6)2.3物理设计 (7)2.3.1数据字典 (7)3.数据库操作及数据库源代码 (8)4.C#界面以及C#源代码 (9)5.设计心得及总结 (13)6.参考书籍 (14)7.附录 (15)1问题描述1.建立目的医药管理是医药管理工作中不可缺少的一部分,面对众多种类的药品和众多不同需求的顾客,每天都会产生大量的数据信息,以传统的手工方式来处理这些信息,操作比较繁琐,且效率低下。

而一个完善的医药管理系统应提供快递的药品查询功能,能够快速的统计药品信息、销量信息等,从而对药品进行高效的管理以满足消费者的需求。

这样既可以大大减少人员的浪费,也从管理方面减轻了工作人员的工作难度。

1.2业务需求分析我们通过对医药超市简单的观察,从消费者的角度出发,以高效管理、快速满足消费者为原则。

总结出,要求本系统具有以下的特点:1.具有良好的系统性能、友好的用户界面。

2.较高的处理效率,便于使用和维护。

3.较长的生命周期。

4.对药品信息进行统计。

5.系统尽可能地简化药品管理员的重复工作,提高工作效率。

2系统设计2.1概念设计2.1.1实体ER图E-R模型是指直接从现实世界中抽象出实体类型及实体间联系,是一种描述静态数据结构的概念模型。

它的主要成分是实体、联系和属性。

可利用E-R模型进行数据库概念设计。

E-R图是直观表示概念模型的工具,所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。

根据该数据库的设计,我们主要基于业务需求来建立ER实体图,主要是药品信息的增删查改等操作。

1)药品E-R 图药品管理员E-R 图药品管理模块数据流图Field Type Null Key Default Extra id int<11> No PRI NULLMname Varchar<10> No NULLAlias text No NULLLatin_name text No NULL Morphology text No NULLDodder text No NULLMajor_functions text No NULL Resources text Yes NULLCid text Yes NULL3.数据库操作及数据库源代码1)查询源代码如下SELECT XJ学生表.姓名,XJ学生表.性别,XJ学生表.民族,SYS政治面貌.政治面貌名称,SYS班级表.年级,SYS专业表.专业名称,SYS专业表.学制,SYS专业表.培养层次,SYS学院表.院系名称,SYS学院表.院系地址FROM XJ学生表INNER JOINSYS政治面貌ON XJ学生表.政治面貌ID=SYS政治面貌.政治面貌ID INNER JOINSYS班级表ON XJ学生表.班级ID=SYS班级表.班级ID INNERJOINSYS专业表INNER JOINSYS学院表ON SYS专业表.院系ID=SYS学院表.院系ID ON SYS班级表.专业ID=SYS专业表.专业IDWHERE XJ学生表.学生ID=@学生ID or XJ学生表.班级ID=@班级ID2)修改源代码如下UPDATE XJ学生表SET班级ID=@班级ID,学号=@学号,姓名=@姓名,性别=@性别,民族=@民族,政治面貌ID=@政治面貌ID,家庭地址=@家庭地址,身份证号码=@身份证号码WHERE学生ID=@学生ID;3)删除源代码如下DELETEFROM XJ学生表WHERE XJ学生表.学生ID=@学生ID4)新增源代码如下INSERT INTO XJ学生表(班级ID,学号,姓名,性别,民族,政治面貌ID,家庭地址,身份证号码)V ALUES(@班级ID,@学号,@姓名,@性别,@民族,@政治面貌ID,@家庭地址,@身份证号码)4.C#界面以及C#源代码(注代码见附录)1)登录界面2)主界面3)学生数据维护界面4)查询部分结果5)新增界面6)删除界面7)修改界面5.设计心得及总结本系统是在使用Sql Server的前提下,利用基于.NET 开发平台中的C-Sharp 开发工具开发而成的。

C-Sharp语言在设计用户界面方面有着得天独厚的优势,真真切切的体现了界面友好型。

同时也为开发人员节省了大量的时间和精力。

所以开发本系统的重中之重乃是周密的思考如何设计数据库,达到系统最优化。

俗话说:一分耕耘,一份收获。

在这次程序设计中,我付出了许多,也收获了许多。

为了能够高效地完成本次作品,我和队友在黑夜中奋战,不辞辛劳,乐此不疲。

在实践的过程中,遇到的困难也曾让我们素手无策,但是经历了重大的技术与思想的突破之后,伟大的作品便一览无遗的展现在我们面前。

让我不禁感叹道:人类智慧是不可估量的!当然,我们也意识到此作品中存在着许多的不足与缺点,所以在求知的路途上我们永远Keep moving...在此,我们团队真诚的感谢曾经含辛茹苦传授我知识的老师,以及在技术方面帮助我们的同学,谢谢你们!6.参考书籍1)<<C-Sharp 从入门到实践>>2)<<数据库系统概论>>3)<<数据结构>>4)<<精讲>>附录:1)数据库与C#连接public DataTable DAL_SelectDB_Par(string mysqlstr, SqlParameter[] SQLCMDpas) {sqlcn = new SqlConnection(sqlcnnstr);sqlcmd = new SqlCommand(mysqlstr, sqlcn);mandType = CommandType.StoredProcedure;foreach (SqlParameter var in SQLCMDpas){sqlcmd.Parameters.Add(var);}sqlda = new SqlDataAdapter(sqlcmd);this.dt = new DataTable();sqlda.Fill(this.dt);return this.dt;}public int DAL_OPTableDB_Par(string mysqlstr ,SqlParameter[] SQLCMDpas) {sqlcn=new SqlConnection(sqlcnnstr.ToString());sqlcn.Open();sqlcmd=new SqlCommand(mysqlstr,sqlcn);mandType=CommandType.StoredProcedure;foreach(SqlParameter var in SQLCMDpas){sqlcmd.Parameters.Add(var);}int myop=sqlcmd.ExecuteNonQuery();sqlcn.Close();return myop;}2)查询代码public DataTable Select_StudentData(int intStudentID){SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char) ,new SqlParameter("@学生ID",SqlDbType.Int)};SQLCMDpas[0].Value = "Select_StudentData";SQLCMDpas[1].Value = intStudentID;DataTable dt = myDALMethod.DAL_SelectDB_Par("UIL学籍管理_SelectStudentData", SQLCMDpas);return dt;}3)新增代码public int Insert_Student(int intClassID,string strNumber,string strName,string strSex,string strNation,int intPoliticalID,string strAddress,string strPersonalNum){SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char) ,new SqlParameter("@班级ID",SqlDbType.Int),new SqlParameter("@学号",SqlDbType.Char),new SqlParameter("@姓名",SqlDbType.Char),new SqlParameter("@性别",SqlDbType.Char),new SqlParameter("@民族",SqlDbType.Char),new SqlParameter("@政治面貌ID",SqlDbType.Int), new SqlParameter("@家庭地址",SqlDbType.Char),new SqlParameter("@身份证号码",SqlDbType.Char)}; SQLCMDpas[0].Value = "InsertStudent";SQLCMDpas[1].Value = intClassID;SQLCMDpas[2].Value = strNumber;SQLCMDpas[3].Value = strName;SQLCMDpas[4].Value = strSex;4)删除代码public void Delete_Student(int intStudentID)//{SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@学生ID", SqlDbType.Char)};SQlCMDpas[0].Value = "Delete_Student";SQlCMDpas[1].Value = intStudentID;//实例化DAL层对应的类,调用DAL类,传入参数myDALMethod.DAL_OPTableDB_Par("UIL学籍管理_SelectStudentData", SQlCMDpas); //return dt;}5)修改代码public int UpdateStudent(int intStudentID, int intClassID, string strStudentNum, string strName, string strSex, string strNation,int intPolitical, string strAddress, string strPersonnumber){SqlParameter[] SQLCMDpas ={ new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@班级ID",SqlDbType.Int),new SqlParameter("@学号", SqlDbType.Char),new SqlParameter("@姓名",SqlDbType.Char),new SqlParameter("@性别", SqlDbType.Char),new SqlParameter("@民族",SqlDbType.Char),new SqlParameter("@政治面貌ID", SqlDbType.Int),new SqlParameter("@家庭地址",SqlDbType.Char),new SqlParameter("@身份证号码",SqlDbType.Char),new SqlParameter ("@学生ID",SqlDbType.Int)};SQLCMDpas[0].Value = "Update_Student";SQLCMDpas[1].Value = intClassID;SQLCMDpas[2].Value = strStudentNum;SQLCMDpas[3].Value = strName;SQLCMDpas[4].Value = strSex;SQLCMDpas[5].Value = strNation;SQLCMDpas[6].Value = intPolitical;SQLCMDpas[7].Value = strAddress;SQLCMDpas[8].Value = strPersonnumber;SQLCMDpas[9].Value = intStudentID;int OPCount;OPCount=myDALMethod.DAL_OPTableDB_Par("UIL学籍管理_UpdateStudent", SQLCMDpas);return OPCount;}SQLCMDpas[5].Value = strNation;SQLCMDpas[6].Value = intPoliticalID;SQLCMDpas[7].Value = strAddress;SQLCMDpas[8].Value = strPersonalNum;return myDALMethod.DAL_OPTableDB_Par("UIL学籍管理_InsertStudent", SQLCMDpas);}。

相关主题