中南大学
本科生课程设计(实践)任务书、设计报告
(SQL数据库程序设计)
计算机基础教学实验中心
20##年 6月 17 日
就诊管理系统
摘要为了方便病人问诊管理,通过VB开发数据库系统,实现挂号登记,已登记信息的修改、查询,药品费用登记、总计、查询,以及病人的分类统计等功能。本文记录了任务内容,系统开发设计思想,系统功能与详细设计及设计过程中遇到的问题和解决方案。
关键字 就诊管理系统 设计 功能 问题 总结
1.就诊管理系统开发设计思想
(1)任务内容
开发病人就诊管理系统是为了方便医院管理就诊病人信息,主要任务是实现病人在医院挂号时信息录入与修改,删除,查询功能,与药品费用登记,用药费用总计功能,以及多条件的病人信息查询功能。通过VB 与数据库相连接,实现在VB中对数据库的表进行数据添加、修改、查询、维护的功能。
(2)系统设计流程
1确立系统主题:结合专业的特点,通过自身就医经历了解了问诊流程,为了使得就医问诊的病人信息管理一体化,设计了病人就诊管理系统,实现简易管理功能。
2设计流程图:设计流程首先是构建就诊流程图,然后根据就诊流程设计窗体模块结构和数据库表结构,之后建立数据库,逐个对窗口进行外观设计及代码编写,以实现分功能,通过运行检查功能,实现窗体成功运行。
设计流程图表示如下:
(3)系统环境
Microsoft Visual Basic 6.0 中文版;SQL Server Management Studio
2.系统功能及系统详细设计
(1)系统详细功能
本系统面向医院管理人员,一方面,挂号管理人员通过对系统进行登录可以进入挂号管理系统,在此系统内,通过挂号窗体对挂号病人的信息进行录入,保存到数据库中,同时可以对刚保存的病人信息进行修改、删除操作;通过另一个挂号信息查询窗口,可查询之前添加的所有病人信息进行,并且对信息修改与删除。
另一方面,问诊医生可以通过收费管理系统对病人看诊后所需用药进行登记以及费用总计:通过用药处方窗体,医生对病人挂号的编号进行选择,接着在药品的下拉列表框中对已有药品进行选择,输入药品数量后,自动统计费用。若需添加多个药品,进行多次添加操作即可。通过用药费用查询及统计窗体,可以查询所有病人的用药信息,只需选择病人编号即可,同时病人其他信息也会在窗口中显示(包括已登记的所有信息:性别,挂号科室等)。最后,点击费用总计按钮即可对某一病人所用药品的所有费用进行总计并显示。
问诊医生还可以通过医生诊治记录查询系统,根据不同的条件查询病人信息,如选择性别男,年龄为10-20,则可显示所有符合条件的病人信息。
(2)模块设计与模块实现
1登陆窗体
登陆窗体主要由用户名、登陆密码文本框和登陆按钮组成,可以实现用户的登陆与主窗体的跳转。输入正确的用户名和密码,才能进入系统。
2主窗体
主窗体包含了本系统所有窗体的入口,每个窗体关闭后都会回到主窗体。添加菜单栏,并在菜单栏中添加所有窗体名称,实现以上功能。
3挂号窗体
挂号窗体包含了挂号病人的基本信息,如姓名、性别、挂号科室,主治医生,挂号时间等文本框,通过ADO控件将VB 与数据库连接,将输入的信息加入到数据库中。“添加”实现对文本框中数据的清除工作。在“保存”按钮的Click事件中添加代码,对相关表中不能为空的属性值,若文本框内未输入数据,选择保存时就显示“请输入**信息”的提示框。只有信息正确输入后,才能保存。“修改“与”删除“按钮可以对刚保存的记录进行修改与删除。
4挂号信息查询窗体
该窗体大体与挂号窗体相同,新增了一个“查询”按钮,删除了“添加”与“保存”按钮。输入病人编号,点击查询,则可显示病人信息,进行修改、删除操作。
⑤用药处方窗体
本窗体设置了“病人编号”与“药品名称”两个datacombo控件,方便选择。“病人姓名”、“挂号科室”、“药品编号”“单价” “数量” “费用总计”等文本框,以显示相关信息。“添加” “保存” “修改” “删除”等按钮执行特定操作。另外,还有5个adodc 控件与数据库连接。
6费用查询窗体
为了便于查询,用一个datacombo控件,显示病人编号,一个datagrid,存放从数据库中查询到的病人用药信息,一个“总计”安按钮,还有一个datagrid控件显示总费用
3.遇到的问题和解决方法
(1)数据表与VB连接起来后,不能对表中已存在字段的属性值进行修改。
前期建表过程中对表记性了大概设计,后期想要修改相关字段的NULL 属性和字段类型时,sql sever不允许修改。经过多次尝试后,我将想要修改的列删除,重新添加该列,并设置相关属性。这样做可以实现目的,但是也导致了相关数据的丢失。
(2)选择病人编号后,如何实现病人姓名等信息的自动出现
设计好datacombo控件作为下拉列表,来实现选择病人编号的功能后,为了让病人姓名能在文本框中自动显示出来,起先,我搜索了百度,采取了以下方法:用一个adodc控件同时控制datacombo与text,在datacombo的change事件里,填写代码使得adodc控件的数据源只有该病人的信息,设置text的datafield为“病人姓名”,那么病人姓名随着病人编号被选择后就会自动显示。但是,我发现,每当选择一个病人编号后,下拉列表里只剩下这一个,导致了无法选择其他病人编号。为了解决这个问题,我想了很多办法,因为专业储备不够丰富,通过代码编写解决这一问题行不通,最终我选择了设置多个adodc控件分别控制datacombo与text,让控制text的adodc数据源随着datacombo的内容改变。这个问题就圆满解决了。
(3)如何从两张表中选取数据并添加到第三张表中
因为要对病人进行用药登记,现有了两张表:“病人”与“药品”,病人与药品是多对多的关系,所以要另建一个“病人-药品”表。药费登记窗体里病人与药品信息都是直接从“药品”与“病人”表中选取,要想将信息加入到“病人-药品”表中必须再设置一个adodc 将表与包含所需信息的datacombo控件连接,
但是这些控件都已经分别与“病人”,“药品”表连接了,在这样的情况下,我灵机一动,设置了不可见的text控件,用来与datacombo同步显示所需信息,再将text与“病人-药品”表相连接,最终成功实现了数据的添加。
4.总结
这次数据库实践结束了,从刚开始对所要设计主题的茫然,到确立大体框架,到一步步的修改实现,直至最终的完成,我遇到了许许多多的问题,通过向老师同学求助,以及自己的不懈思考,最终完成了这个工程,虽然功能不是十分完善,但是面对自己第一次做出来的类似于应用的东西,我还是感到了从所未有的满足与成就感。这次实践对我而言,是一个不小的挑战。我学会了规划设计,学会了灵活运用所学知识,学会了独立思考。我明白的更多的是:解决问题的方法不止有一个,开阔思路,就会发现实现目的的方法。同样,遇到问题但是解决不了时,不要钻牛角尖,不妨先放下,回过头来再看,很有可能会找到另一条捷径。与同学、老师交流也是必须的。独立思考并不意味着所有的问题都要自己解决,如果向他人求助能又快又好地解决问题,当然要求助了。只是要注意从这次帮助中学习经验,下次遇到类似问题就有能力解决了。
最后,我要特别感谢我的同学和老师,感谢他们在我遇到困难时给予我的帮助,使我能够顺利地完成本次课程设计。
5.参考文献
(1)《数据库技术与应用》
(2)《数据库技术与应用实践教程》
(3)百度百科 www.baidu.com
第二篇:数据库课程设计报告(已经是免费的了,下完评价一下,谢谢)
西安郵電學院
题 目:
系部名称 专业名称 班 级 学号 学生姓名 指导教师 时间
数据库课程设计报告 : 计算机学院 : 计算机科学与技术 : 计科0703 : 12 : 李国强 : 乔平安 : 20xx年3月16日 至20xx年5月25日
一、 课程设计目的
课程设计的目的是为了巩固复习曾经学习过的数据库课程,并通过实际的实验对所学的知识加以巩固以达到模拟现实生活中实际用例的目的,并增加同学们适应以后工作中的团队工作中的合作互助的团队精神。
二、 课程设计内容
三、
网上书店主要由前台会员管理模块和后台管理员模块两部分组成。
前台功能模块主要用于实现会员注册,登录,修改个人信息,分类查看书目信息、购书、管理购物车、结帐、查看各种服务条款等功能。
后台管理模块主要用于实现后台管理人员对会员,商品,物流,订单和系统的管理等功能。
通过对网上书店工作过程的内容和数据流图分析,设计如下面的数据项和数据结构。
1、管理员信息,包括数据项有:管理员编号、管理员账号、管理员密码。
2、会员信息,包括数据项有:会员账号、会员密码、会员昵称、会员E-mail、会员级别(管理员设定)。
3、图书信息,包括数据项有:图书编号、图书名称、作者、出版社编号、出版日期、图书类别编号、图书简介。
(⑴出版社信息,包括数据项有:出版社编号、出版社名称。
⑵图书类别信息,包括数据项有:图书类别编号、图书类别名称。)
4、图书订单,包括数据项有:会员账号、下定单日期、收货地址、收货地址邮编、收货人姓名、收货人联系方式、送货方式编号、总费用、图书名称、现已售出量情况。
5、购物车,包括数据项有:会员账号、每种图书名称、每种图书市场价格、每种图书网站价格、每种图书数量、每种图书的价格、图书总价。
三、软硬件环境及系统所采用的体系结构
Access数据库和java所做的前台开发
四、需求分析
通过实际调查,要求本网站具有以下功能:
? 系统具有良好的人机界面。
? 如果系统的使用对象较多,则要求有较好的权限管理。 ? 全面展示网上书店内的交易信息。
? 书目分类显示,方便顾客了解本网上书店内的图书
? 查看网上书店内的交易信息。
? 系统最大限度地实现易维护性和易操作性。
? 系统运行稳定、安全可靠。
? 支持图书检索显示,可以通过查找图书的模糊信息查找图书。
五、系统设计
1.系统结构图(功能模块图)
网站业务流成分析:
网上书店系统业务流程图:
网上书店系统业务流程:
网上书店前台管理功能结构图:
2.数据库设计
数据库中的E-R图:(列出其中一个关系进行说明)该系统中的注册会员的信息表如下所示
六、系统的实施
购物车的设计,有添加,更改,结算,提交功能的实现:
ackage cart;
import java.util.Vector;
public class Cart {
Vector v = new Vector();
String act = null;
String item = null;
private void addItem(String id) {
v.addElement(id);
}
private void removeItem(String id) {
v.removeElement(id);
}
public void setItem(String id) {
item = id;
}
public void setAct(String s) {
act = s;
}
public String[] getItems() {
String[] s = new String[v.size()];
v.copyInto(s);
return s;
}
public void processRequest() {
if (act.equals("add"))
addItem(item);
else if (act.equals("remove"))
removeItem(item);
// reset at the end of the request
reset();
}
// reset
private void reset() {
act = null;
item = null;
}
public void clearAll(){
v.removeAllElements();
}
}
现实页面信息,提示等操作的设计:
package spage;
import java.sql.*;
public class ShowPage
{
private String str = "";
//显示页号为p的一页(user)
public String printPage(ResultSet rs, int p, int size)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置 try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += printRow(rs,iPage,p);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(user)
public String printRow( ResultSet rs ,int i,int p)
{
String temp = "";
try {
int id=rs.getInt("userid");
temp+="<tr align='center' bgcolor='#FFFAF7'>";
temp+="<td><a
href='javaScript:seeUser("+id+")'>"+rs.getString("name")+"</a></td>";
temp+="<td>"+rs.getString("sex")+"</td>";
temp+="<td>"+rs.getString("phone")+"</td>";
temp+="<td>"+rs.getString("address")+"</td>";
temp += "<td><a href='updateuser.jsp?updateid="+id+"'>修改</a></td>";
temp += "<td><a href='dealdeleteuser.jsp?delid="+id+"'>删除</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(book)
public String bookPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置 try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += bookRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(book)
public String bookRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
int id=rs.getInt("bookid");
temp+="<tr align='center'>";
temp+="<td><a
href='detail.jsp?detailid="+id+"'>"+rs.getString("bookname")+"</a></td>";
temp+="<td>"+rs.getString("author")+"</td>";
temp+="<td>"+rs.getString("pubhouse")+"</td>";
temp+="<td>"+rs.getString("price")+"</td>";
if(f)
{
temp+="<td>"+rs.getString("salenum")+"</td>";
temp+="<td><a href='updatebook.jsp?updateid="+id+"'>修改</a></td>";
temp+="<td><a href='dealdeletebook.jsp?delid="+id+"'>删除</a></td>";
}
else
temp+="<td><a href='dealcart.jsp?dealid="+id+"&act=add'>加入购物车</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(order)
public String orderPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置 try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += orderRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(order)
public String orderRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
String orderid=rs.getString("orderid");
temp+="<tr align='center'>";
temp+="<td><a
href='detailorder.jsp?detailid="+orderid+"'>"+orderid+"</a></td>";
temp+="<td>"+(rs.getString("orderdate")).substring(0,10)+"</td>";
temp+="<td>"+rs.getString("orderstate")+"</td>";
if(f)
{
temp += "<td><a href='javaScript:seeUser("+rs.getString("userid")+")'>"+rs.getString("username")+"</a></td>";
temp += "<td><a href='dealdeleteorder.jsp?delid="+orderid+"'>删除</a></td>";
}
temp+="</tr>";
}
catch(SQLException e) { }
return temp;
}
}
七、系统评价及心得体会
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
本次的设计总体来书设计的比较简单,没有考虑的详细,好些地方没有考虑进去。也有些地方是做的比较满意的,有可圈点的地方。
首先,比如书店里各种书的现有库存量。所以自己再设计时将库存量默认为是无限大,所以不存在在购买时,书已经卖完的情况。这种情况显然是与现实不符合的,这算是一个不足之处。
其次,在数据库的设计中,三个表之间没有什么较大的联系与约束,所以增加了在编程方面的工作量。
合理之处有:在界面的设计方面设计的比较简单而且人性化,对买书的操作流程设计的比较合理,可以对所有书进行分类查询,以及将所选书先放在虚拟的购物车中,最后在结算。这些都比较让客户刚觉到方便,和现实没有太大差别,再者还对每种卖出的书的数量做了统计,可以看出那些书是畅销书
其实在设计的时候可以根据书的销量标记那些书是畅销书,让消费者一目了然。
2、在学习过程中的感受。
在本次课程设计中,好些东西都不会,所以数据库方面的东西比较好做,但是由于对Access数据库使用不太了解,所以花了一部分时间去看。所以在无形之中,学会了Access数据库的使用,也算是一个收获吧。其次是感觉到会的东西太少,做的时候,最好的帮手其实是图书馆,不会的时候可以去图书馆去借阅相关的图书,不仅可以解决问题,也可以学到相应的知识。再者就是团队之间的合作是很重要的,和组员之间的合理合作与分工可以大大节约时间,与组员的讨论则可以使自己的作品更加完善,发现更多的不足之处。
八、参考文献
PHP+MySQL动态网站开发 ————《清华大学出版社》
PHP5与MySQL5网络程序-开发原理与实践教程————《电子工业出版社》
九、附录:源代码
(略,详见电子版实验报告)