同济大学 数据库 大作业

合集下载

数据库大作业

数据库大作业

数据库大作业XXX数据库大作业——学生成绩管理系统学院(系):专业:学生姓名:学号:指导教师:评阅教师:完成日期:1.数据库设计1.1 系统名称学生成绩管理系统1.2 背景介绍1.2.1 概述学生成绩管理系统是学校教学管理系统的一个功能模块,可以方便地对学生成绩进行管理,包括学生成绩录入、查询和修改等。

本系统主要需要实现以下功能:院系信息管理:包括录入、修改和查询院系信息,提供给管理人员和院系管理人员进行查询。

班级信息管理:包括录入、修改和查询班级信息,提供给管理人员和本班级班长进行查询。

学生信息管理:包括录入、修改和查询学生信息,提供给管理人员和学生个人进行查询。

课程信息管理:包括录入、修改和查询课程信息,提供给管理人员和授课教师进行查询。

学生成绩查询:提供给学生个人,能够查询本人的各项成绩,但不能录入和修改。

课程成绩查询:提供给教授本门课程的老师,能够查询、修改、删除成绩,能够对数据进行分析,例如求得平均分、优秀率、不及格人数等。

1.2.2 信息需求分析1)院系信息管理:包括录入、修改和查询院系信息,提供给管理人员和院系管理人员进行查询。

2)班级信息管理:包括录入、修改和查询班级信息,提供给管理人员和本班级班长进行查询。

3)学生信息管理:包括录入、修改和查询学生信息,提供给管理人员和学生个人进行查询。

4)课程信息管理:包括录入、修改和查询课程信息,提供给管理人员和授课教师进行查询。

5)学生成绩查询:提供给学生个人,能够查询本人的各项成绩,但不能录入和修改。

6)课程成绩查询:提供给教授本门课程的老师,能够查询、修改、删除成绩,能够对数据进行分析,例如求得平均分、优秀率、不及格人数等。

1.3 数据库的概念模型设计一个学生属于一个院系,一个院系包含多个学生;一个学生属于一个班级,一个班级包含多个学生;一个学生可以选多门课程,一门课程可以包含多个学生。

1.3.1 实体与属性分析学生:学号、姓名、年龄、性别、地址、系号、班级号课程:课程号、课程名、学分、学时院系:院系号、院系名、电话1.3.2 E-R图班级——班级号、人数、班长学号分数院系——拥有学生、研究课程属于班级关系模型:学生(学号、姓名、性别、地址、系号、班级号)候选码:学号主码:学号外码:系号、班级号课程(课程号、课程名、学时、学分)候选码:课程号主码:课程号2.1.2建立班级表create tableclass(classno char(5) primary key。

同济大学数据库作业lab7,8

同济大学数据库作业lab7,8

同济大学《数据库技术及应用》实验报告实验报告题目:建立与数据库的链接和基于绑定的数据库访问姓名:学号:年级:专业:指导教师:日期: 2014 年 11 月 16 日一.实验目的1.掌握数据库访问模型的主要对象和功能2.掌握SQL和数据库的链接方法3.学习绑定对象的操作方法二.实验内容(实验题目+运行界面截图+实现代码)1.掌握前台和SqlServer后台的链接方法Imports Class Form1Private Sub Form1_Load(sender As Object, e As EventArgs) HandlesDim myconn As New SqlConnection("database=university;data source=jd43\SQLEXPRESS; integrated security=true")Dim mysql As String = "select * from student"Dim myadapter As New SqlDataAdapter(mysql, myconn)Dim mydataset As New DataSet(mydataset, "student")= (0)End SubEnd Class2.在university上用完成如下界面Imports Class Form2Private Sub Form2_Load(sender As Object, e As EventArgs) HandlesDim myconn As New SqlConnection("database=university;data source=jd43\SQLEXPRESS; integrated security=true")Dim mysql As String = "select as '学号',sname as '姓名',count(secnum) as '选修课程门数',avg(score) as '平均成绩',sum(1-score/60) as '不及格门数' from student,sc where = group by ,sname"Dim myadapter As New SqlDataAdapter(mysql, myconn)Dim mydataset As New DataSet(mydataset, "student")= (0)End SubEnd Class3.建立university和student的浏览界面Imports Class Form1Dim mybind As New BindingSourceDim mysql As String = "select * from student"Dim myconn As New SqlConnection("database=university;data source=jd43\SQLEXPRESS;integrated security=true")Dim myadapter As New SqlDataAdapter(mysql, myconn)Dim mydataset As New DataSetPrivate Sub退出系统ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles退出系统EndEnd SubPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles(mydataset, "student")= mydataset= "student"Binding("text", mybind, "snum", True))Binding("text", mybind, "sname", True))Binding("text", mybind, "sex", True))Binding("text", mybind, "dept", True))Binding("text", mybind, "birthday", True))End SubPrivate Sub Button4_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button5_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button6_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button7_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button2_Click(sender As Object, e As EventArgs) Handles ()End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles ()()Dim cm As New SqlCommandBuilder(myadapter)(0))End SubEnd Class4.完成学生成绩浏览功能的设计Imports Class Form2Dim mybind As New BindingSourceDim mysql As String = "select * from shiyan8"Dim myconn As New SqlConnection("database=university;data source=jd43\SQLEXPRESS;integrated security=true")Dim myadapter As New SqlDataAdapter(mysql, myconn)Dim mydataset As New DataSetPrivate Sub Form2_Load(sender As Object, e As EventArgs) Handles(mydataset, "shiyan8")= mydataset= "shiyan8"Binding("text", mybind, "snum", True))Binding("text", mybind, "sname", True))Binding("text", mybind, "cname", True))Binding("text", mybind, "score", True))End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles()End SubPrivate Sub Button2_Click(sender As Object, e As EventArgs) Handles()End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles()End SubPrivate Sub Button4_Click(sender As Object, e As EventArgs) Handles()End SubEnd Class三.实验体会或收获(有感而发,没有体会也可以不写)在用代码进行数据库的链接时发现data source后不能加(local),否则总是显示无法访问。

同济大学数据库-实验一答案

同济大学数据库-实验一答案

同济⼤学数据库-实验⼀答案实验⼀讲解By Zhu Jing12主窗体MainForm 运⾏界⾯0.主窗体项⽬解决⽅案资源管理器主窗体主要属性设置:IsMdiContainer为True(设置主窗体为多⽂档界⾯容器);WindowState为Maximized(运⾏时最⼤化)3主窗体代码:Public Class MainFormApplication.Exit()End SubPrivate Sub 实验1ToolStripMenuItem_Click(…) …Dim f1 As New shiyan1()f1.MdiParent = Mef1.Show()End SubPrivate Sub 实验2ToolStripMenuItem_Click(…) …Dim f2 As New shiyan2()f2.MdiParent = Mef2.Show()End Sub4Private Sub 实验3ToolStripMenuItem_Click(…)…Dim f3 As New shiyan3()f3.MdiParent = Mef3.Show()End SubPrivate Sub 实验4ToolStripMenuItem_Click(…) …Dim f4 As New shiyan4()f4.MdiParent = Mef4.Show()End SubPrivate Sub 实验5ToolStripMenuItem_Click(...) …Dim f5 As New shiyan5()f5.MdiParent = Mef5.Show()End Sub.5Private Sub 实验6ToolStripMenuItem_Click(…) …Dim f6 As New shiyan6()f6.MdiParent = Mef6.Show()End SubDim f7_1As New shiyan7_1()f7_1.Show()End SubPrivate Sub 实验8ToolStripMenuItem_Click(…) …Dim f8 As New shiyan8()f8.MdiParent = Mef8.Show()End SubEnd Class61. 实验1:⽂本框练习7实验1代码:Public Class shiyan1Private Sub Button1_Click(…) …'⾪书按钮TextBox1.Font = New Font("⾪书", 25, FontStyle.Bold Or FontStyle.Italic) End Sub Private Sub Button2_Click(…) …'幼圆按钮TextBox1.Font = New Font("幼圆", 18, FontStyle.Italic Or FontStyle.Underline) End Sub 8Private Sub Button3_Click(…) …'复制按钮TextBox2.Text = TextBox1.SelectedTextTextBox2.Font = TextBox1.FontEnd SubEnd Class92. 实验2:求鸡和兔的个数10实验2代码:Public Class shiyan2Private Sub TextBox2_KeyDown(…) …If e.KeyCode = Keys.Enter ThenDim x, y As Integer 'x--鸡数,y--兔数If Not IsNumeric(TextBox1.Text.Trim) ThenMessageBox.Show("'头数'必须输⼊数字", "警告")TextBox1.Text = ""TextBox3.Text = ""Exit SubEnd If11If Not IsNumeric(TextBox2.Text.Trim) Then MessageBox.Show("'脚数'必须输⼊数字", "警告") Me.TextBox2.Text = "" Me.TextBox3.Text = ""Exit SubEnd IfIf Val(TextBox2.Text.trim) Mod 2 <> 0 Then MessageBox.Show("脚必须是双数", "警告")TextBox2.Focus()Exit SubEnd If12x = Val(4 * TextBox1.Text -TextBox2.Text) / 2y = Val(TextBox2.Text -2 * TextBox1.Text) / 2If x < 0 Or y < 0 Then '若头数是负数MsgBox("荒唐解,请重新输⼊!")Me.TextBox3.Text = ""ElseTextBox3.Text = x & " " & yEnd IfEnd IfEnd SubEnd Class13143. 实验3:求解1元2次⽅程的根实验3运⾏界⾯实验3代码:Imports System.MathPublic Class shiyan3Dim a, b, c, disc, realpart, imagpart As DoublePrivate Sub Button1_Click(…) …'计算按钮If String.IsNullOrEmpty(TextBox1.Text.Trim()) And String.IsNullOrEmpty(TextBox2.Text.Trim()) Then MsgBox("请为a,b赋值")Exit SubEnd IfIf TextBox1.Text.Trim() = "" ThenTextBox1.Text = 0End If15If TextBox2.Text.Trim() = "" ThenTextBox2.Text = 0End IfIf TextBox3.Text.Trim() = "" ThenTextBox3.Text = 0End Ifa = TextBox1.Text.Trimb = TextBox2.Text.Trimc = TextBox3.Text.TrimIf a = 0 Then 'a为0时If b<> 0 Then 'a为0,b不为0时TextBox4.Text = Round(-c / b, 2)TextBox5.Text = ""GroupBox1.Text = "不是2次⽅程,只有⼀个根" Else 'a,b都为0时MsgBox("a,b不能同时为0")End If16Elsedisc = b * b -4 * a * cIf disc = 0 Then ' disc为0时GroupBox1.Text = "有两个相同的实根" TextBox4.Text = Round(-b / (2 * a), 2) TextBox5.Text = Round(-b / (2 * a), 2) ElseIf disc > 0 Then ' disc ⼤于0时GroupBox1.Text = "有两个不同的实根" TextBox4.Text =Round((-b + Sqrt(disc)) / (2 * a), 2) TextBox5.Text =Round((-b -Sqrt(disc)) / (2 * a), 2)Else ' disc⼩于0时GroupBox1.Text = "有两个不同的虚根" realpart = Round(-b / (2 * a), 2)imagpart = Round(Sqrt(-disc) / (2 * a), 2)17TextBox4.Text = realpart & "+" & imagpart & "i" TextBox5.Text = realpart & "-" & imagpart & "i" End IfEnd IfEnd SubPrivate Sub Button2_Click(…) …'结束按钮Me.Close()End SubEnd Class18194. 实验4:⽣成随机数实验4运⾏界⾯。

数据库大作业(全·参考答案)

数据库大作业(全·参考答案)

《数据库原理与应用》综合设计任务书前言《数据库原理与应用》课程的重点知识模块包括:1)数据库设计、2)用SQL实现建库、建表、查询、更新、和创建视图、3)存储过程和触发器设计。

针对这三个应用能力,用一个案例作为背景,布置三次大作业。

在校大学生都能理解“图书管理系统”的应用场合和业务流程。

因此,以图书管理系统作为案例来布置作业,可以降低业务分析难度,让学生将主要精力放在知识消化与技术应用上。

本文档包括四个部分。

第一部分描述系统的需求,第二部分提出E-R模型设计和关系模型设计的任务;第三部分提出在SQL Server中,用SQL语句来建库、建表、查询、更新数据、创建视图的任务;第四部分,根据应用需求、安全需求和数据完整性要求,提出设计存储过程和触发器的任务。

每个任务之前,都给出了完成任务所需要掌握的关键知识点,学生可以在对这些知识点进行复习的基础上完成任务,每个任务是一次大作业。

第一部分案例的需求描述本部分描述“图书管理系统”的需求,学生通过阅读本部分内容,了解系统的功能要求、运行环境,对系统所需的数据有总体认识,作为三次作业的基础。

1.2 需求分析1)功能需求图1-1:功能需求示意图教师信息管理:用于教师基本资料的增删改查。

图书信息管理:用于图书基本信息的增删改查,分类统计图书册数和价值。

借书登记:记录借书时间、所借图书、借书人、办理人。

还书登记:记录还书时间、所还图书、还书人、办理人。

催还:查询借阅逾期的借书信息,给借书人发电子邮件,给借书人的部门打电话。

2)运行环境要求图1-2:运行环境拓扑图系统采用C/S模式,有两台PC和一台服务器,联成一个局域网。

PC上安装图书管理软件的客户端,服务器上安装DBMS,服务器也可由两台PC中的一台来代替。

第二部分作业1——E-R模型与关系模型设计(满分8分)本部分的任务是:在需求分析的基础上,进行E-R图设计,然后将E-R模型转换为关系模型。

任务:1)根据需求描述,绘制E-R图。

2022年同济大学信息管理与信息系统专业《数据库概论》科目期末试卷A(有答案)

2022年同济大学信息管理与信息系统专业《数据库概论》科目期末试卷A(有答案)

2022年同济大学信息管理与信息系统专业《数据库概论》科目期末试卷A(有答案)一、填空题1、在SELECT命令中,______子句用于选择满足给定条件的元组,使用______子句可按指定列的值分组,同时使用______子句可提取满足条件的组。

2、数据仓库是______、______、______、______的数据集合,支持管理的决策过程。

3、在VB 6.0中,已经用Adobel连接到数据库,并已绑定到数据库中的某个关系表,现要通过此控件向表中插入数据,需要用到Adobel.Recordset的_____方法和Update方法,使用Adobel.Recordset的_____方法可以使当前行指针在结果集中向前移动一行。

4、DBMS的完整性控制机制应具备三个功能:定义功能,即______;检查功能,即______;最后若发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

5、设有关系模式R(A,B,C)和S(E,A,F),若R.A是R的主码,S.A是S的外码,则S.A的值或者等于R中某个元组的主码值,或者______取空值,这是规则,它是通过______和______约束来实现的。

6、安全性控制的一般方法有____________、____________、____________、和____________视图的保护五级安全措施。

7、若事务T对数据对象A加了S锁,则其他事务只能对数据A再加______,不能加______,直到事务T释放A上的锁。

8、有两种基本类型的锁,它们是______和______。

9、数据模型是由______________、______________和______________三部分组成。

10、关系规范化的目的是______。

二、判断题11、在综合分E-R图时,会出现属性冲突,结构冲突,命名冲突。

()12、在关系数据库中,属性的排列顺序是可以颠倒的。

【同济大学】数据库技术与应用模拟试题

【同济大学】数据库技术与应用模拟试题

《数据库技术与应用》模拟试题一、 选择题(每题1分,共10分)1、通过SQL SERVER2000的( ),方便实现建立数据库、数据表、设计候选键等操作。

A .企业管理器B .事件跟踪器C .服务管理器D .以上均不是2、从数据库中读取得数据,存放在( C )对象上,它是 的一个重要组件,也被称为一个离线的或内存的数据库。

A .SqlDataAdapterB .SqlConnectionC .DataSetD .SqlCommand3、下面列出的选项中只有( )不是常用的RDBMS 实例。

A .SQL ServerB .SysbaseC .IngresD .IDS/Ⅱ4、( D )是数据库中全部数据的逻辑结构和特征的描述。

A . 模式 B. 外模式 C. 内模式 D. 概念模式5、有了模式/内模式映像,可以保证数据和应用程序之间的( B )。

A . 逻辑独立性 B. 物理独立性 C. 数据一致性 D. 数据安全性6、保护数据库,防止未经授权或不合法的使用造成的数据泄漏、非法更改或破坏。

这是指数据库的数据( )。

A .完整性B .并发控制C .安全性D .恢复7、多用户数据库系统的目标之一是使它的每个用户好像正在使用一个单用户数据库,为此数据库系统必须进行( C )。

A .安全性控制B .完整性控制C .并发控制D .可靠性控制8、设有两个事务T1、T2,其并发操作系列如图所示,下列评价正确的是( )。

A .该操作不存在问题B .该操作丢失修改C .该操作存在不一致分析D .该操作读“脏”数据9、数据库设计过程主要包括需求分析、概念模式设计、逻辑模式设计和物理模式设计四个阶段,关系模式的规范化处理属于 ( B )阶段。

A .需求分析B .概念模式设计C .逻辑模式设计D .物理模式设计10、在某银行的数据库系统,设置只允许员工在上午9:00时至下午5:00可以访问数据库,其他时间全部予以拒绝。

这是数据库的( A )控制功能。

同济大学数据库第3章习题

同济大学数据库第3章习题

第3章习题一、选择题1. 已知“一个老师可带多个研究生,一个研究生只能有一个指导老师”,“指导老师”实体与“研究生”实体之间的联系是 B 。

A. 1:!B. 1:nC. n : mD. 无直接联系,但有间接联系2. 数据库总是基于某种数据模型, D 是基于E-R模型的数据库系统。

A. DBTG系统B. IMS系统C. SQL ServerD. 没有3. 消除了部分函数依赖的1NF的关系模式,必定是 B 。

A. 1NFB. 2NFC. 3NFD. BCNF4. 消除了传递依赖的关系模式。

必定是 C 。

A. 1NFB. 2NFC. 3NFD. BCNF5. 关系模型中的关系模式至少是 A 。

A. 1NFB. 2NFC. 3NFD. BCNF6、设有关系R(S,D,M),其函数依赖集F={S→D,D→M}。

则关系R至多满足( B )。

A. 1NFB. 2NFC. 3NFD. BCNF二、填空题1. 关系模型中,实体之间联系是用二维表来表示和实现。

2. 实体联系模型是对现实世界的第一层抽象,主要用于数据库设计阶段。

3. 有库存管理数据库,含有2个表,零件(编号,名称,规格,数量,仓库),仓库(仓库号,面积,地点,负责人),一种零件只存放在规定的某个仓库中,一个仓库可存放多种零件,零件表的主键是编号,外键是仓库号;仓库表的主键是仓库号,外键是没有。

零件表的外键的取值,要么为空值,要么等于仓库表中某个元组的仓库号值。

4. 1NF、2NF、3NF、BCNF之间包含关系是1NF包含包含包含BCNF 。

5. 对一个不好的关系模式的分解可以有多种,但必须要保证分解后的关系模式与原来等价,为此模式分解必须遵守的基本原则是无损连接性和保持函数依赖。

三. 简答题1. 数据库设计主要有哪几个阶段?说明各阶段的主要工作。

答:1) 需求分析:了解与分析用户需求(包括数据需求和处理需求)。

2) 概念结构设计阶段:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。

数据库设计大作业

数据库设计大作业

数据库设计⼤作业数据库⼤作业1.要求:1)需求分析。

2)数据库设计。

2.1概念结构设计(E-R图)2.2逻辑结构设计(E-R模型转换为关系模式,指明所满⾜的范式并给出理由)。

2.3物理结构设计3)数据库实现。

(录⼊数据,每个表应不少于10条数据)4)数据库运⾏。

(不少于30条sql语句,其中包括查询、更新、删除、插⼊、创建触发器等sql语句)5)19周之前交。

2.可选题⽬:1.机票预定信息系统系统功能的基本要求:航班基本信息的录⼊,包括航班的编号、飞机名称、机舱等级等。

机票信息,包括票价、折扣、当前预售状态及经⼿业务员等。

客户基本信息,包括姓名、联系⽅式、证件及号码、付款情况等。

按照⼀定条件查询、统计符合条件的航班、机票等;对结果打印输出。

2.长途汽车信息管理系统系统功能的基本要求:线路信息,包括出发地、⽬的地、出发时间、所需时间等。

汽车信息:包括汽车的种类及相应的票价、最⼤载客量等。

票价信息:包括售票情况、查询、打印相应的信息。

3.⼈事信息管理系统系统功能基本要求:员⼯各种信息:包括员⼯的基本信息,如编号、姓名、性别、学历、所属部门、毕业院校、健康情况、职称、职务、奖惩等;员⼯各种信息的修改;对转出、辞退、退休员⼯信息的删除;按照⼀定条件,查询、统计符合条件的员⼯信息;教师教学信息的录⼊:教师编号、姓名、课程编号、课程名称、课程时数、学分、课程性质等。

科研信息的录⼊:教师编号、研究⽅向、课题研究情况、专利、论⽂及著作发表情况等。

按条件查询、统计,结果打印输出。

4.超市会员管理系统系统功能的基本要求:加⼊会员的基本信息,包括:成为会员的基本条件、优惠政策、优惠时间等。

会员的基本信息,包括姓名、性别、年龄、⼯作单位、联系⽅式等。

会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等。

会员返利信息,包括会员积分的情况,享受优惠的等级等。

对货物流量及消费⼈群进⾏统计输出。

5.客房管理系统系统功能的基本要求:客房各种信息,包括客房的类别、当前的状态、负责⼈等;客房信息的查询和修改,包括按房间号查询住宿情况、按客户信息查询房间状态等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊同济大学《数据库技术及应用》项目报告项目名称:医院一体化系统小组成员:1350871 倪荫豪1350870 李天扬年级:大二专业:土木工程指导教师:王睿智日期:2014 年12 月30 日┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊目录一、系统概述 (3)1.系统简介..................................................................3 2.功能特色 (3)二、需求分析 (3)1.系统功能需求分析......................................................3 2.数据库需求分析 (4)三、数据库设计 (4)1.概念模式设计............................................................4 2.逻辑模式设计............................................................6 3.物理数据库设计.........................................................6 4.触发器设计...............................................................11 5.存储过程设计 (13)四、系统设计和实现 (14)1.窗体类和功能类统计表................................................14 2.界面设计及其代码实现 (15)五、系统测试 (41)1.触发器测试用例.........................................................41 2.存储过程测试用例......................................................41 3.功能测试用例 (41)六、总结 (52)┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊一. 系统概述1.1系统简介当前医患关系、医院挂号等一直是社会热点问题。

本项目将站在病人,医院医职人员,医院管理者的角度设计一系列 程序和数据库,简化病人挂号、医生看病开药、病人付款和管理者管理的过程,使一个医院的效率大幅度提升,并增加病人满意度。

1.2功能特色①对于医院内工作人员,管理员及非管理员使用统一登陆入口登陆,根据用户名自动判别其拥有的权限。

管理员可查看其他工作人员的工作状态,实时督促,提高工作效率。

②病人通过程序可以在到达医院前挂号,且可以指定什么职称的医生来诊治,并通过程序实现缴纳医药费用。

若病人没有指定医生,则系统自动分配当前待诊人数最少的该科室医生为其看病。

简化看病流程、减少排队时间。

③医生通过程序来实现接纳病人,开药,并写入记录存档,方便后来的医生医治和解决医闹问题。

亦有助于解决现如今大部分医生手写病历,字迹龙飞凤舞、不可辨认的问题。

二. 需求分析2.1 系统功能需求分析用户①——病人:需要通过程序来实现挂号,应该给用户一个输入他信息的窗口和他挂号的类型。

对于新病人,应给予程序实现注册。

用户②——医治人员:需要看到挂号在他名下的待诊病人,查看病人既往病史,对病人实施医治并开药。

这个过程应该要访问数据。

将可能的药品名称展现在医生面前,并提供一个窗口给他写入病人的病情作为记录。

还可修改自身登录系统时的密码。

用户③——收银员:需要看到医生开具的药单,并收费。

还可修改自身登录系统时的密码。

用户④——医院的管理者:能通过程序看到目前有多少职工在工作,并能够查看并编辑修改他们(包括管理员自身)的信息。

此外,还能查看并修改医院所拥有的各种药品及病人注册时的基本信息。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊2.2 数据库需求分析①每个管理员、收银员、医生、药品、病人都有唯一的标识。

②病人可以同时挂多个科室,可以选择想要的医生职称,医生可以医治多名病人,病人可以由多名医生医治。

③每名管理员可以管理多名收银员、医生和多种药品。

④医生可以给病人开不同的药,同一种药可以被开给不同的病人,病人可以向不同的收银员付不同的药单钱,每张药单只需付一遍钱。

三. 数据库设计3.1概念模式设计根据上面的分析,可建立5个实体和4个关系。

5个实体:administrator (管理员)、cashier (收银员)、doctor (医生)、medicine (药品)、patient (病人)5个关系:staff (职员)、prescription (药单、处方)、medicalrecord (病历)、registration (挂号)、管理由于纸张大小限制,我们将E-R 图分解为以下3幅图:实体关系图(不含属性)、实体属性图、关系属性图。

①实体关系图(不含属性)┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊②实体属性图┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊③关系属性图3.2逻辑模式设计Administrator (工号,姓名,性别,职务,出生日期,密码) Cashier (工号,姓名,性别,出生日期,密码)Doctor (工号,姓名,性别,出生日期,职称,科室,待诊人数,房间号,密码) Medicine (药品编号,名称,单价,医保折扣,制造厂商,处方药) Patient (医保卡号,姓名,性别,出生日期,籍贯,密码,照片) Medicalrecord (医保卡号,科室,医生工号,描述,就诊日期)Prescription (医保卡号,药品编号,数量,就诊日期,医生工号,是否付款) Registration (医保卡号,科室,工号,挂号费) Staff (工号,职务,是否在上班)3.3物理数据库设计┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊use mastergocreate database Hospitalon primary (name='Hospital',filename='F:\Hospital.mdf')log on (name='Hospital-log',filename='F:\Hospital.ldf')gouse Hospitalgo①staff表创建sql代码create table staff( 工号CHAR(4),职务V ARCHAR(10),是否在上班CHAR(2) CHECK(是否在上班in ('是','否')) )②patient表创建sql代码create table patient(医保卡号CHAR(4) NOT NULL PRIMARY KEYCHECK(医保卡号like 'y[0-9][0-9][0-9]'), 姓名V ARCHAR(20),性别CHAR(2) CHECK(性别in('男', '女')),出生日期DATE,籍贯V ARCHAR(20),密码V ARCHAR(20),照片V ARINARY(MAX))③cashier表创建sql代码create table cashier(工号CHAR(4) NOT NULL PRIMARY KEYCHECK(工号like 'c[0-9][0-9][0-9]'),┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊姓名 V ARCHAR(20),性别 CHAR(2) CHECK(性别 in('男', '女')), 出生日期 DATE, 密码 V ARCHAR(20) )④administrator 表创建sql 代码create table administrator (工号 CHAR(4) NOT NULL PRIMARY KEY CHECK(工号 like 'a[0-9][0-9][0-9]'), 姓名 V ARCHAR(20),性别 CHAR(2) CHECK(性别 in('男', '女')), 职务 V ARCHAR(20), 出生日期 DATE, 密码 V ARCHAR(20) )⑤doctor 表创建sql 代码create table doctor( 工号 CHAR(4) NOT NULL PRIMARY KEY CHECK(工号 like 'd[0-9][0-9][0-9]'), 姓名 V ARCHAR(20),性别 CHAR(2) CHECK(性别 in('男', '女')), 出生日期 DATE, 职称 V ARCHAR(10) CHECK (职称 in ('助理医师','医师','主治医师','副主任医师','主任医师')), 科室 V ARCHAR(20), 待诊人数 int, 房间号 CHAR(7) CHECK(房间号 like 'door[0-9][0-9][0-9]'), 密码 V ARCHAR(20) )⑥medicalrecord 表创建sql 代码create table medicalrecord( 医保卡号 CHAR(4) FOREIGN KEY REFERENCES patient, 科室 V ARCHAR(20), 医生工号 CHAR(4) FOREIGN KEY REFERENCES doctor, 描述 V ARCHAR(100), 就诊日期 DA TE )⑦medicine 表创建sql 代码create table medicine(药品编号 CHAR(4) PRIMARY KEY CHECK (药品编号 like 'm[0-9][0-9][0-9]'), 名称 V ARCHAR(30), 单价 float , 医保折扣 float,┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊制造厂商 V ARCHAR(100), 处方药 CHAR(2) CHECK(处方药 in ('是', '否')) )⑧registration 表创建sql 代码create table registration(医保卡号 CHAR(4) FOREIGN KEY REFERENCES patient, 科室 V ARCHAR(20), 工号 CHAR(4) FOREIGN KEY REFERENCES doctor, 挂号费 float PRIMARY KEY(医保卡号,科室))⑨prescription 表创建sql 代码create table prescription( 医保卡号 CHAR(4) FOREIGN KEY REFERENCES patient, 药品编号 CHAR(4) FOREIGN KEY REFERENCES medicine, 数量 int, 就诊日期 DATE, 医生工号 CHAR(4) FOREIGN KEY REFERENCES doctor, 是否付款 CHAR(2) CHECK(是否付款 in ('是','否')) )关系图:见下页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊3.4触发器设计①use Hospital gocreate trigger DelAdm on administrator for delete asdeclare @工号 CHAR(4)select @工号=i.工号 from deleted i delete from staff where 工号=@工号②use Hospital gocreate trigger DelCas on cashier for delete asdeclare @工号 CHAR(4)select @工号=i.工号 from deleted i delete from staff where 工号=@工号③use Hospital gocreate trigger DelDoc on doctor for delete asdeclare @工号 CHAR(4)select @工号=i.工号 from deleted i delete from staff where 工号=@工号 ④use Hospital gocreate trigger DelRes on registration┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊for delete asdeclare @工号 CHAR(4)select @工号=d.工号 from deleted d update doctor set 待诊人数=待诊人数-1 where 工号=@工号⑤use Hospital gocreate trigger IstAdm on administrator for insert asdeclare @工号 CHAR(4)select @工号=i.工号 from inserted iinsert into staff values(@工号,'行政人员','否')⑥use Hospital gocreate trigger IstCas on cashier for insert asdeclare @工号 CHAR(4)select @工号=i.工号 from inserted i insert into staff values(@工号,'收银员','否')⑦use Hospital gocreate trigger IstDoc on doctor for insert asdeclare @工号 CHAR(4)select @工号=i.工号 from inserted i insert into staff values(@工号,'医生','否')⑧use Hospital gocreate trigger IstRes on registration for insert asdeclare @工号 CHAR(4)select @工号=i.工号 from inserted iupdate doctor set 待诊人数=待诊人数+1 where 工号=@工号┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊3.5存储过程设计①use Hospital gocreate proc IstDis @pid CHAR(4),@dpt V ARCHAR(20), @fee int asdeclare @did CHAR(4) select @did=c.工号 from(select a.工号 from(select 工号,待诊人数 from doctorwhere 科室=@dpt ) as awhere 待诊人数=(select min(b.待诊人数) from (select 工号,待诊人数 from doctorwhere 科室=@dpt) as b)) as cinsert into registrationvalues(@pid,@dpt,@did,@fee)②use Hospital gocreate proc IstDis1 @pid CHAR(4),@dpt V ARCHAR(20), @fee int,@class V ARCHAR(10) as┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊declare @did CHAR(4) if exists(select a.工号 from(select 待诊人数,工号 from doctor where 职称=@class and 科室=@dpt) as awhere 待诊人数 in (select min(b.待诊人数) from (select 待诊人数,工号 from doctor where 职称=@class and 科室=@dpt) as b)) beginselect @did=a.工号 from(select 待诊人数,工号 from doctor where 职称=@class and 科室=@dpt) as awhere 待诊人数 in (select min(b.待诊人数) from (select 待诊人数,工号 from doctor where 职称=@class and 科室=@dpt) as b) insert into registrationvalues(@pid,@dpt,@did,@fee) end四. 系统设计和实现4.1窗体类和功能类统计表┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊4.2界面设计及其代码实现模块:Imports System.Data.SqlClient Module m_slcDim constr As String = "Data Source=倪荫豪\SQLEXPRESS;Initial Catalog=Hospital;Integrated Security=True"Public Function GetVal(ByRef ds As DataSet , row As Integer , col As Integer , table As String ) As String'取数据 如果在该处无数据 返回空字符串 TryGetVal = ds.Tables(table).Rows(row).Item(col) Catch ex As Exception MsgBox(ex.Message) GetVal = "" End Try End FunctionPublic Function slc(sql As String , table As String ) As DataSet Debug .Print(sql) TryDim conn As New SqlConnection (constr) conn.Open()Dim da As SqlDataAdapter = New SqlDataAdapter (sql, conn) '创建适配器 ' Dim ds As DataSet = New DataSet() '创建数据集 slc = New DataSet ()da.Fill(slc, table) '填充数据 Exit Function Catch ex As Exception slc = New DataSet () MsgBox(ex.Message) End Try End FunctionPublic Function slc(goal As String , condition As String , table As String , dtable As String ) As DataSetDim sql As Stringsql = "select " & goal & " from " & table If condition <> "" Thensql = sql & " where " & condition End IfDebug .Print(sql) Try┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊Dim conn As New SqlConnection (constr) conn.Open()Dim da As SqlDataAdapter = New SqlDataAdapter (sql, conn) '创建适配器 ' Dim ds As DataSet = New DataSet() '创建数据集 slc = New DataSet ()da.Fill(slc, dtable) '填充数据 Exit Function Catch ex As Exception slc = New DataSet () MsgBox(ex.Message) End TryEnd FunctionPublic Function Upt(sql As String ) As Integer '执行插入 修改命令 返回受影响的行数 Debug .Print(sql)Dim conn As New SqlConnection (constr) Upt = 0 TryDim cmd As New SqlCommand (sql, conn) conn.Open()Upt = cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try conn.Close() End FunctionPublic Function GetFisrtCell(sql As String ) As String Debug .Print(sql)Dim conn As New SqlConnection (constr) GetFisrtCell = "" TryDim cmd As New SqlCommand (sql, conn) conn.Open()GetFisrtCell = cmd.ExecuteScalar() Catch ex As Exception MsgBox(ex.Message) End Try conn.Close() End Function End Module┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊①登陆功能实现代码Module 全局变量Public 工号 As String = "d003" Public 科室 As String Public 医保卡号 As String End ModulePublic Class 登录Private Sub Cancel_Click(sender As Object , e As EventArgs ) Handles Cancel.Click Me .Close() End SubPrivate Sub OK_Click(sender As Object , e As EventArgs ) Handles OK.Click If UsernameTextBox.Text = "" Or PasswordTextBox.Text = "" Then MsgBox("用户名或密码不能为空") Return End IfDim sql As Stringsql = "select 职务 from staff where 工号='" & UsernameTextBox.Text & "'" Dim s As String = GetFisrtCell(sql) If "" = s ThenMsgBox("用户名或密码错误") End IfDim d As String If s = "医生" Then d = "doctor"科室 = GetFisrtCell("select 科室 from doctor where 工号='" & UsernameTextBox.Text & "'")┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊┊ ┊ElseIf s = "收银员" Then d = "cashier" 科室 = ""ElseIf s = "行政人员" Then d = "administrator" 科室 = "" End IfIf PasswordTextBox.Text = GetFisrtCell("select 密码 from " & d & " where 工号='" & UsernameTextBox.Text & "'") Then Dim startuptxt As Stringstartuptxt = System.Windows.Forms.Application .StartupPath & "\" If s = "医生" Thenstartuptxt = startuptxt & "就诊.exe " & UsernameTextBox.TextElseIf s = "收银员" Thenstartuptxt = startuptxt & "收费.exe " & UsernameTextBox.Text ElseIf s = "行政人员" Thenstartuptxt = startuptxt & "管理.exe " & UsernameTextBox.Text End IfShell(startuptxt, AppWinStyle .NormalFocus, False ) Me .Close() ElseMsgBox("用户名或密码错误") End If End Sub End Class②挂号功能实现代码:Public Class Form1┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊Private Sub Form1_Load(sender As Object , e As EventArgs ) Handles MyBase .Load ComboBox1.SelectedIndex = 0End SubPrivate Sub CheckBox1_CheckedChanged(sender As Object , e As EventArgs ) Handles CheckBox1.CheckedChangedIf True = CheckBox1.Checked Then ComboBox1.Enabled = True ElseComboBox1.Enabled = False End If End SubPrivate Sub Button1_Click(sender As Object , e As EventArgs ) Handles Button1.Click If TextBox.Text <> GetFisrtCell("select 密码 from patient where 医保卡号='" & TextBox1.Text & "'") Or Len(TextBox.Text) = 0 Then MsgBox("密码错误", MsgBoxStyle .Information) Exit Sub End IfDim sql As Stringsql = "'" & TextBox1.Text & "','" & TextBox2.Text & "'," If CheckBox1.Checked = False Then sql = "exec IstDis " & sql & "100" Elsesql = "exec IstDis1 " & sql & "150,'" & ComboBox1.Text & "'" End IfIf 2 = Upt(sql) Thensql = "select 工号 from registration where 医保卡号='" & TextBox1.Text & "' and 科室='" & TextBox2.Text & "'"Dim gh As String = GetFisrtCell(sql)sql = "select 房间号 from doctor where 工号='" & gh & "'"MsgBox("请前往" & GetFisrtCell(sql) & "就诊。

相关文档
最新文档