数据库窗体实验报告:设计与实现 (数据库窗体实验报告)
一、 实验目的
本实验旨在让学生深入理解数据库窗体的设计和实现原理,掌握使用窗体实现数据库操作的技能。
二、 实验环境
本实验使用Visual Studio 2023和Microsoft SQL Server 2023作为开发环境和数据库管理系统。
三、 实验内容
本实验分为两个部分:数据库设计和窗体实现。
1. 数据库设计
数据库设计是整个实验的核心。本实验以学生信息管理系统为例,设计了一个简单的数据库模型。具体包括以下三个表:
学生表(Student):用于存储学生的基本信息,包括学号、姓名、性别、出生日期、入学日期等。
课程表(Course):用于存储课程的基本信息,包括课程号、课程名称、学分、教师等。
成绩表(Score):用于存储学生的课程成绩,包括学号、课程号、成绩等。
2. 窗体实现
本实验以C#语言为基础,设计了一个简单的窗体系统,用于实现对上述数据库的增、删、改、查等操作。具体包括以下功能:
添加学生信息:用户可以输入学生的基本信息,点击“添加”按钮后将信息存储到学生表中。
删除学生信息:用户可以通过输入学号或姓名等信息查询到对应的学生记录,点击“删除”按钮后将该学生信息从学生表中删除。
修改学生信息:用户可以通过输入学号或姓名等信息查询到对应的学生记录,然后对其进行修改,点击“修改”按钮后将新的信息存储到学生表中。
查询学生信息:用户可以通过输入学号或姓名等信息查询到对应的学生记录,系统将该学生的基本信息以及已选课程的成绩显示出来。
选课:用户可以在课程表中选择一个或多个课程,然后将这些课程存储到成绩表中。
查询成绩:用户可以通过输入学号或姓名等信息查询到对应的学生成绩记录,系统将该学生已选课程的成绩显示出来。
四、 实验步骤
1. 数据库设计
根据上述的数据库模型,在SQL Server中创建一个名为“Student”的数据库,然后依次创建三个表。
2. 窗体设计
在Visual Studio中创建一个Windows Form应用程序,然后创建一个MnWindow窗体。接下来,依次往该窗体中添加上述各个功能的控件,在其Click事件中编写相应的代码。
具体的代码实现过程如下:
1)添加学生信息
在MnWindow窗体中添加一些文本框和标签,用于输入和显示学生的基本信息。然后,在该窗体中添加“添加”按钮,单击时将学生信息存储到Student表中。
代码如下:
private void btnAdd_Click(object sender, EventArgs e)
{
string sno = this.txtSno.Text;
string sname = this.txtSname.Text;
string sex = this.cmbSex.Text;
DateTime birthday = this.dtpBirthday.Value;
DateTime enrollment = this.dtpEnrollment.Value;
// 添加到Student表中
string sql = “insert into Student(sno,sname,sex,birthday,enrollment) values(‘” + sno + “‘,'” + sname + “‘,'” + sex + “‘,'” + birthday + “‘,'” + enrollment + “‘)”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show(“添加成功!”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
2)删除学生信息
在MnWindow窗体中添加一个文本框,用于输入要删除的学生学号或姓名。然后,在该窗体中添加“删除”按钮,单击时将对应的学生信息从Student表中删除。
代码如下:
private void btnDelete_Click(object sender, EventArgs e)
{
string condition = this.txtCondition.Text;
// 删除学生信息
string sql = “delete from Student where sno='” + condition + “‘ or sname='” + condition + “‘”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show(“删除成功!”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
3)修改学生信息
在MnWindow窗体中添加一些文本框和标签,用于显示要修改的学生基本信息。然后,在该窗体中添加“修改”按钮,单击时将修改后的学生信息存储到Student表中。
代码如下:
private void btnUpdate_Click(object sender, EventArgs e)
{
string sno = this.txtSno.Text;
string sname = this.txtSname.Text;
string sex = this.cmbSex.Text;
DateTime birthday = this.dtpBirthday.Value;
DateTime enrollment = this.dtpEnrollment.Value;
// 更新学生信息
string sql = “update Student set sname='” + sname + “‘,sex='” + sex + “‘,birthday='” + birthday + “‘,enrollment='” + enrollment + “‘ where sno='” + sno + “‘”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
MessageBox.Show(“修改成功!”);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
4)查询学生信息
在MnWindow窗体中添加一个文本框,用于输入要查询的学生学号或姓名。然后,在该窗体中添加“查询”按钮,单击时将对应的学生信息以及已选课程的成绩显示出来。
代码如下:
private void btnQuery_Click(object sender, EventArgs e)
{
string condition = this.txtCondition.Text;
// 查询学生信息
string sql = “select * from Student where sno='” + condition + “‘ or sname='” + condition + “‘”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
this.txtSno.Text = reader[“sno”].ToString();
this.txtSname.Text = reader[“sname”].ToString();
this.cmbSex.Text = reader[“sex”].ToString();
this.dtpBirthday.Value = DateTime.Parse(reader[“birthday”].ToString());
this.dtpEnrollment.Value = DateTime.Parse(reader[“enrollment”].ToString());
}
reader.Close();
// 查询选课成绩
sql = “select a.cname,b.score from Course a,Score b where a.cno=b.cno and b.sno='” + condition + “‘”;
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
this.dgvScore.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
5)选课
在MnWindow窗体中的课程表中添加一个复选框列,用于选择要选修的课程。然后,在该窗体中添加“选课”按钮,单击时将选择的课程存储到Score表中。
代码如下:
private void btnSelect_Click(object sender, EventArgs e)
{
string sno = this.txtSno.Text;
// 选课
foreach (DataGridViewRow row in this.dgvCourse.Rows)
{
if (row.Cells[0].Value != null && row.Cells[0].Value.ToString() == “True”)
{
string cno = row.Cells[1].Value.ToString();
string sql = “insert into Score(sno,cno) values(‘” + sno + “‘,'” + cno + “‘)”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
MessageBox.Show(“选课成功!”);
}
6)查询成绩
在MnWindow窗体中添加一个文本框,用于输入要查询的学生学号或姓名。然后,在该窗体中添加“查询”按钮,单击时将该学生已选课程的成绩显示出来。
代码如下:
private void btnScore_Click(object sender, EventArgs e)
{
string condition = this.txtCondition.Text;
// 查询成绩
string sql = “select a.cname,b.score from Course a,Score b where a.cno=b.cno and b.sno='” + condition + “‘”;
try
{
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
this.dgvScore.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
五、 实验结论
通过本实验的学习,我们了解了数据库窗体的设计和实现原理,掌握了使用窗体实现数据库操作的技能。同时,我们还深入了解了数据库设计的思想和方法,并学会了如何在C#环境中进行数据库操作。通过本实验,我们不仅提高了自己的实际动手能力,也为今后从事与数据库相关的工作打下了坚实的基础。
相关问题拓展阅读:
- SQL的实验报告怎么写?
SQL的实验报告怎么写?
给你看个参考:
数据库大型作业
——药品进销存系统的数据库设计
一、题目背景
随着我国市场经济的蓬勃发展和人们对医药产品的需求的迅速增加,医药行业正处于
一个高速发展的时期。行业的快速发展必然导致竞争掘圆的加剧,要想在激烈的市场竞争中谋
求发展,客观上要求企业必须加强内部管理,提高运营效率。另外,由于医药产品种类繁
多、进销存模式特殊、业务量大,复杂庞大的帐务管理已远远适应不了企业快速发展的需
求。如何尽快建立和完善现代企业的信息化管理机制,已成为医药企业快速发展的关键所
在。可以说,没有信息化的医药管理几乎是不可想象的。因此,尽快建立和完善现代企业
的信息化管理机制问题,是医药企业发展的关键所在。
目前国内外成熟的进销存管理系统软件拥有强大的功能,但是价格却是相对昂贵,仅
仅适用于大中型规模化的生产企业。对于中小型企业,特别是商业企业来说,购买一套软
件,不仅费用昂贵,而且其中很多信息管理模块对自身来说并不适用,浪费较大。企业更
希望针对自己量身定做符合本企业业务特点、且价廉物美的软件产品。
二、 医药进销存管理系统划分
系统总体功能设计就是对系统的需求进行分析,采用面向对象的设计方法对系统进行
分解,其基本思想就是自顶向下将整个系统划分为若干个子系统,在必要时子系统再划分
成若干功能模块。子系统的划分应满足如下原则:
(1) 子系统之间相对独立,在功能、信息等方面具有较好的凝聚性,便于系统调试和
调用。
(2) 子系统间的联结关系尽可能简单,数据依赖性尽量小,以使数据接口简单、明了,
各子系统具有较高的独立性和可修改性。
(3) 子系统的划分应便于系统分阶段实现。
根据上述原则,要开发一个成功的系统程序,关键是要紧密联系实际,程序的实用性要强。为此要先分析医药行业现行管理工作的内容、流程,并将其优化,最后程序化实现。根据用户的需求,我们将医药进销存管理信息系统划分为
十个功能模块:
①基础信息管理:包括药品信息、员工信息、供应商信息、客户信息。
②入库信息管理:包括入库登记、入库退货、入库查询、入库退货查询。
③销售信息管理:销售入库、销售退货、销售查询、销售退货查询。
④库存信息管理:库存盘点、库存查询、仓库管理。
⑤调货信息管理:调货登记、调货查询。
⑥结帐信息管理:销售结帐、入库结帐、销售退货结帐、入库退货结帐、日结、月结、
供应商往来帐、客户往来帐。
⑦系统信息管理:修改密码、修改权限设置、修改用户、数据备份。
⑧综合查询信息管理:销售查询、销售退货查询、入库查询、入库退货查询、调货查
询、库存查询。
⑨帮助信息管理:关于系统、帮助主题、在线帮助。
⑩辅助信息管理:娱乐游戏。
具体功能模块如图
三、数据库设计流程
数据库设计流程图如图
四世带、数据库概念设计
概念结构是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理,抽
取人们关心判返塌的共同特性,忽略其本质的细节。它独立于机器,独立于特定的DBMS,是
系统中各个用户共同关心的数据结构。概念结构设计一般首先根据系统分析的结果(数据
流图、数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分E-R 图。再将分
E-R 图进行合并成总E-R
药品实体E-R 图
员工实体E-R 图
供应商实体E-R 图
客户实体E-R 图
销售相关E-R 图
采购相关E-R 图
库存实体E-R 图
仓库实体E-R 图
药品、员工、仓库、库存实体关联E-R 图
五、数据库逻辑结构设计
逻辑结构设计的任务是将概念结构(即E-R 图)转换为与选用的DBMS 所支持的数
据模型相符的逻辑数据模型,同时还要进行优化。根据前面分析得到的E-R 图,结合SQL
Server 2023 的特点进行了修正,得到了如下的主要关系数据库表,如表所示
药品信息:
员工信息:
供应商信息:
客户信息:
仓库信息:
库存信息:
权限信息:
权限指派信息:
入库登记信息:
销售登记信息:
六、SQL语言:
(1) 创建药品信息表tabypinfo
CREATE TABLE . (
(10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
(30) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
NULL ,
NULL ,
NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(100) COLLATE Chinese_PRC_CI_AS NULL
) ON
GO
(2) 创建员工信息表tabyginfo
CREATE TABLE . (
(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(5) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
NULL ,
NULL ,
(100) COLLATE Chinese_PRC_CI_AS NULL
) ON
GO
(3) 创建供应商信息表tabgys
CREATE TABLE . (
(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
(30) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(50) COLLATE Chinese_PRC_CI_AS NULL ,
(50) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL
) ON
GO
(4) 创建客户信息表tabkh
CREATE TABLE . (
(10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
(30) COLLATE Chinese_PRC_CI_AS NULL ,
(10) COLLATE Chinese_PRC_CI_AS NULL ,
(50) COLLATE Chinese_PRC_CI_AS NULL ,
(50) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL ,
(20) COLLATE Chinese_PRC_CI_AS NULL
) ON
GO
(5) 创建权限信息表tabpurview
CREATE TABLE . (
(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
(255) COLLATE Chinese_PRC_CI_AS NULL ,
NOT NULL
) ON
GO
(6) 创建权限信息表tabpurviewctrl
CREATE TABLE . (
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL ,
NOT NULL
) ON
GO
数据库的连接方法
在开发基于数据库的MIS 之前,首先要解决与数据库连接问题。不同的数据库开发
环境提供不同的数据库接口。本论文所开发的应用系统采用Visual C++ 6.0 开发工具,使
用SQL Server 2023 建立数据库,采用与数据库建立的接口为ADO。这里对数据库的连接
方法作一下简要说明。
为了方便数据库连接的统一控制和方便对异常的捕捉,需要将ADO 封装到类中,于
是在头文件stdafx.h 中加入下列代码引入ADO 对象。
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace
rename(“EOF”, “adoEOF”)。
实验报告要点
一、扉页
并非所有的实验报告都有标题页,但是如果讲师想要标题页,那么它应该是一个单独的页面,包括:实验的题目、自己的名字和实验室伙伴的名字、导师的名字、进行实验或提交报告的日期。
二、标题
标题写着做了什么。它应该简短,并描述实验或调查的要点。
三、介绍
通常情况下介绍是解释实验室目标或目的的一个段落。用一句话陈述假设。有时介绍可能包含背景信息,简要总结实验是如何进行的,陈述实验的发现,并列出调查的结论。
四、步骤
描述在调查过程中完成的步骤。要足够详细,任何人都可以阅读这一部分并复制实验。提供一个图表来描述实验设置可能会有所帮助。
五、数据
从过程中获得的数字数据通常以表格的形式呈现。数据包告蠢括进行实验时记录的内容。
六、结果
用语言描述数据的含义。有时“结果”部分会与“讨论”部分结合在一起。
七、讨论或分析
数据部分包含数字,“分析”部分包含根据这些数字进行的任何计算。这是解释数据和确定假设是否被接受的地方,也是讨论在进行调查时可能犯的任何错误的地方。
八、结论
大多数情况下,结论是一个段落,总结启友缺了实验中发生的事情,假设是被接受还是被拒绝,以及这意味着什么。
九、图形和图表
图表和图形都必须标有描述性的标题。在图表上标注轴,确保包含测量单位。一定要参考报告正文中的图悄辩和图表。
十、参考
关于数据库窗体实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选后浪云,2H2G首月10元开通。
后浪云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。