数据库窗体实验报告:设计与实现 (数据库窗体实验报告)

一、 实验目的

本实验旨在让学生深入理解数据库窗体的设计和实现原理,掌握使用窗体实现数据库操作的技能。

二、 实验环境

本实验使用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的实验报告怎么写?

给你看个参考:

数据库大型作业

——药品进销存系统的数据库设计

一、题目背景

随着我国市场经济的蓬勃发展和人们对医药产品的需求的迅速增加,医药行业正处于

一个高速发展的时期。行业的快速发展必然导致竞争掘圆的加剧,要想在激烈的市场竞争中谋

求发展,客观上要求企业必须加强内部管理,提高运营效率。另外,由于医药产品种类繁

多、进销存模式特殊、业务量大,复杂庞大的帐务管理已远远适应不了企业快速发展的需

求。如何尽快建立和完善现代企业的信息化管理机制,已成为医药企业快速发展的关键所

在。可以说,没有信息化的医药管理几乎是不可想象的。因此,尽快建立和完善现代企业

的信息化管理机制问题,是医药企业发展的关键所在。

目前国内外成熟的进销存管理系统软件拥有强大的功能,但是价格却是相对昂贵,仅

仅适用于大中型规模化的生产企业。对于中小型企业,特别是商业企业来说,购买一套软

件,不仅费用昂贵,而且其中很多信息管理模块对自身来说并不适用,浪费较大。企业更

希望针对自己量身定做符合本企业业务特点、且价廉物美的软件产品。

二、 医药进销存管理系统划分

系统总体功能设计就是对系统的需求进行分析,采用面向对象的设计方法对系统进行

分解,其基本思想就是自顶向下将整个系统划分为若干个子系统,在必要时子系统再划分

成若干功能模块。子系统的划分应满足如下原则:

(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”)。

实验报告要点 

一、扉页 

并非所有的实验报告都有标题页,但是如果讲师想要标题页,那么它应该是一个单独的页面,包括:实验的题目、自己的名字和实验室伙伴的名字、导师的名字、进行实验或提交报告的日期。 

二、标题 

标题写着做了什么。它应该简短,并描述实验或调查的要点。

三、介绍 

通常情况下介绍是解释实验室目标或目的的一个段落。用一句话陈述假设。有时介绍可能包含背景信息,简要总结实验是如何进行的,陈述实验的发现,并列出调查的结论。

四、步骤

描述在调查过程中完成的步骤。要足够详细,任何人都可以阅读这一部分并复制实验。提供一个图表来描述实验设置可能会有所帮助。

五、数据 

从过程中获得的数字数据通常以表格的形式呈现。数据包告蠢括进行实验时记录的内容。 

六、结果 

用语言描述数据的含义。有时“结果”部分会与“讨论”部分结合在一起。 

七、讨论或分析 

数据部分包含数字,“分析”部分包含根据这些数字进行的任何计算。这是解释数据和确定假设是否被接受的地方,也是讨论在进行调查时可能犯的任何错误的地方。

八、结论 

大多数情况下,结论是一个段落,总结启友缺了实验中发生的事情,假设是被接受还是被拒绝,以及这意味着什么。 

九、图形和图表 

图表和图形都必须标有描述性的标题。在图表上标注轴,确保包含测量单位。一定要参考报告正文中的图悄辩和图表。

十、参考 

关于数据库窗体实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 数据库窗体实验报告:设计与实现 (数据库窗体实验报告)