综合设计实验成语词典查询系统设计.docx
- 文档编号:9808374
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:56
- 大小:85.08KB
综合设计实验成语词典查询系统设计.docx
《综合设计实验成语词典查询系统设计.docx》由会员分享,可在线阅读,更多相关《综合设计实验成语词典查询系统设计.docx(56页珍藏版)》请在冰豆网上搜索。
综合设计实验成语词典查询系统设计
综合设计实验成语词典查询系统设计
一、实验目的
1.了解SQL语言各语句的语法与使用方法;
2.掌握DataProvider和DataSet两个核心组件的常用属性、方法的含义及使用方法;
3.掌握利用DataProvider和DataSet两个核心组件实现数据库记录的插入、修改、删除的方法;
4.使学生能够通过老师讲过的内容灵活运用多种控件,实现对简单数据库的维护,能够自行调试,显示或保存实验结果。
并使学生更深入的掌握面向对象程序设计这门课程。
二、基本要求
(1)创建成语词典查询系统所需的表(成语词典表),并能连接上数据库。
(2)完成对所建成语词典表的插入、修改、删除功能
(3)完成对成语的精确和模糊查询
(4)完成对成语词典查询结果保存为Word文档及其导入成语词典。
(5)为完成上述功能,还需运用菜单、工具条等多种控件
三、实验步骤:
1.创建数据库:
打开SQLServerManagementStudio,创建数据库”成语字典库“然后新建一个名为成语字典表的表,如图1所示。
图1
2.创建项目:
在MicrosoftVisualStudio2010中创建一个名为“成语字典应用”的Windows窗体应用程序项目。
3.设计界面:
在空白窗体中添加菜单Button、Label、TextBox、ComboBox、RichTextBox、DataGridView、MenuStrip、SqlConnection、SqlDataAdapter、SqlCommand、SaveFileDialog、OpenFileDialog控件,对控件的属性进行修改,如表1所示。
并且对菜单栏上的选项设置快捷键和访问键。
控件名称
属性
属性值
MenuStrip
Items
浏览(查看所有、保存结果、退出)、查询(精确查询、模糊查询)、添加、删除、修改、退出
Label1
Text
选择查询方式:
GroupBox1
Text
操作界面
Label2
Text
设置查询值:
Label3
Text
显示界面:
Label4
Text
拼音:
Label5
Text
成语:
Label6
Text
备注:
Label7
Text
拼音简写:
Label8
Text
label8
button1
Text
精确查询
button2
Text
模糊查询
button3
Text
添加
button4
Text
修改
button5
Text
删除
button6
Text
导出到Word文件
Button7
Text
从Word文件中导入
comboBox1
Items
拼音、成语、备注、拼音简写
表1控件属性及属性值
图二
图二为进行整体布局后窗体效果图。
4.在Form1.h编写菜单、按钮、标签的事件(单击事件)。
(1)在窗体的头文件中引用System:
:
Data:
:
SqlClient命名空间后,才可以使用该命名空间内定义的如SqlConnection等类的对象。
因此需要在窗体的头文件中添加如下语句:
usingnamespaceSystem:
:
Data:
:
SqlClient;
因为要有文件的导出和导入所以要在命名空间部分加上:
usingnamespaceSystem:
:
IO;
并且在窗体类中要定义一个SqlConnection^类型的对象con,并在Form1类的构造函数中进行初始化。
代码如下所示。
Form1(void)
{
InitializeComponent();
//
//TODO:
在此处添加构造函数代码
//
con=gcnewSqlConnection();
con->ConnectionString=L"DataSource=.;InitialCatalog=成语字典库;IntegratedSecurity=True";//用Connection控件链接到服务器名为”.“数据库名为“成语字典库“,用windows身份验证方式登陆
}
SqlConnection^con;//在窗体的头文件中定义一个con
(2)在视图设计器下点击菜单栏“浏览”双击“查看所有”便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void查看所有ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
String^sql="select*from成语字典表";//定义了sql字符串,其内容为sqlsever数据库的查询语句
DataSet^ds=gcnewDataSet();//定义了数据集的对象ds
SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con);
try//后面写可能发生的异常事件
{
ourda->Fill(ds,"zd");
this->dataGridView1->DataSource=ds->Tables["zd"];//dataGridView1中显示表中的内容
con->Open();;
if(con->State==ConnectionState:
:
Open)
{
String^sql="selectcount(*)from成语字典表";
SqlCommand^cmd=gcnewSqlCommand(sql,con);
String^myinformation="表中成语的总数是:
"+cmd->ExecuteScalar()->ToString()+"条";
label8->Text=myinformation;//label8显示表中成语的总数
if(con->State==ConnectionState:
:
Open)
con->Close();
}
}
catch(System:
:
Data:
:
SqlClient:
:
SqlException^ex)//显示异常信息
{
MessageBox:
:
Show("数据的异常信息是:
"+ex->Message,"提示信息");
}
}
(3)在视图设计器下点击菜单栏“查询”双击“精确查询”便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void精确查询ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
String^sql="select*from成语字典表where"+comboBox1->Text+"='"+textBox1->Text+"'";
MessageBox:
:
Show(sql);//显示sql语句
DataTable^ourtable=gcnewDataTable();
SqlDataReader^rd;
SqlCommand^cmd=gcnewSqlCommand(sql,con);
SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con);
if(textBox1->Text=="")
{
MessageBox:
:
Show("请输入要查找成语的相关信息");
return;
}
Try//将查询到的数据添加到富文本框中为导出做准备
{con->Open();
rd=cmd->ExecuteReader();
if(rd->Read())
{
richTextBox1->Text+=rd["拼音"]->ToString()+"\t";
richTextBox1->Text+=rd["成语"]->ToString()+"\t";
richTextBox1->Text+=rd["备注"]->ToString()+"\t";
richTextBox1->Text+=rd["拼音简写"]->ToString()+"\n";
}
}
catch(System:
:
Data:
:
SqlClient:
:
SqlException^ex)
{
MessageBox:
:
Show("数据异常信息是:
"+ex->Errors,"提示信息");
return;
}
finally
{
rd->Close();
if(con->State==ConnectionState:
:
Open)
con->Close();
}
try
{
ourda->Fill(ourtable);
this->dataGridView1->DataSource=ourtable;
}
catch(System:
:
Data:
:
SqlClient:
:
SqlException^ex)
{MessageBox:
:
Show("数据异常信息是:
"+ex->Errors,"提示信息");}
}
(4)在视图设计器下点击菜单栏“查询”双击“模糊查询”便进入此按键的单击事件函数下编写代码。
模糊查询的代码只需将sql查询语句变为String^sql="select*from成语字典表where"+comboBox1->Text+"like'%"+textBox1->Text+"%'";
(5)在视图设计器下双击菜单栏里“添加”项便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void添加ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
if(textBox3->Text=="")
{
MessageBox:
:
Show("添加的对象内容不能为空");
return;
}
try
{con->Open();
if(con->State==ConnectionState:
:
Open)
{
String^sql="insertinto成语字典表(拼音,成语,备注,拼音简写)values('"+textBox2->Text+"','"+textBox3->Text+"','"+textBox4->Text+"','"+textBox5->Text+"')";
MessageBox:
:
Show(sql);
SqlCommand^cmd=gcnewSqlCommand(sql,con);
cmd->ExecuteNonQuery();
MessageBox:
:
Show("添加成功记录");
}
}
catch(SqlException^ex)
{
MessageBox:
:
Show("数据的异常信息是:
"+ex->Message,"提示信息");
}
finally
{
if(con->State==ConnectionState:
:
Open)
con->Close();
}
}
(6)在视图设计器下双击菜单栏里“修改”项便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void修改ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
String^sql="update成语字典表set"+comboBox1->Text+"='"+textBox2->Text+"'where"+comboBox1->Text+"='"+textBox1->Text+"'";;
MessageBox:
:
Show(sql);
DataTable^ourtable=gcnewDataTable();
SqlDataAdapter^ourda=gcnewSqlDataAdapter(sql,con);
try
{ourda->Fill(ourtable);}
catch(System:
:
Data:
:
SqlClient:
:
SqlException^ex)
{MessageBox:
:
Show("数据的异常信息是:
"+ex->Message,"提示信息");}
}
(7)在视图设计器下双击菜单栏里“删除”项便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void删除ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
if(comboBox1->Text==""||textBox1->Text=="")//选择删除方式和设置删除值不能为空
{
MessageBox:
:
Show("删除对象的内容不能为空");
return;
}
if(Windows:
:
Forms:
:
DialogResult:
:
OK!
=MessageBox:
:
Show("确定要删除记录吗?
","删除",MessageBoxButtons:
:
OKCancel))
{
return;//如果点击取消则返回
}
try
{con->Open();;
if(con->State==ConnectionState:
:
Open)
{
String^sql="deletefrom成语字典表where"+comboBox1->Text+"='"+textBox1->Text+"'";
MessageBox:
:
Show(sql);
SqlCommand^cmd=gcnewSqlCommand(sql,con);
cmd->ExecuteNonQuery();
MessageBox:
:
Show("您已经成功删除"+comboBox1->Text+"='"+textBox1->Text+"'"+"的记录");
}
}
catch(SqlException^ex)
{MessageBox:
:
Show("数据的异常信息是:
"+ex->Message,"提示信息");}
finally
{
if(con->State==ConnectionState:
:
Open)
con->Close();
}
}
(8)在视图设计器下双击菜单栏里“退出”项便进入此按键的单击事件函数下编写代码。
private:
System:
:
Void退出ToolStripMenuItem_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
this->Close();
}
(9)在视图设计器下双击“导出到Word文件”按钮便进入此按键的单击事件函数下编写代码,思路是将富文本框中的内容导出到word。
private:
System:
:
Voidbutton6_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
if(saveFileDialog1->ShowDialog()==Windows:
:
Forms:
:
DialogResult:
:
OK)
{
StreamWriter^str=File:
:
CreateText(saveFileDialog1->FileName);
str->Write(richTextBox1->Text);//内容从richTextBox1写入到word
str->Close();
}
}
(10)在视图设计器下双击“从Word文件中导入”按钮便进入此按键的单击事件函数下编写代码。
private:
System:
:
Voidbutton7_Click(System:
:
Object^sender,System:
:
EventArgs^e)
{
openFileDialog1->InitialDirectory="E:
\\";//设置了起始目录
openFileDialog1->Filter="富文本文件(*.rtf)|*.rtf|文本文件(*.doc)|*.doc";//选择文件类型
if(System:
:
Windows:
:
Forms:
:
DialogResult:
:
OK==openFileDialog1->ShowDialog())
{
srtFileName=openFileDialog1->FileName;
StreamReader^sd=File:
:
OpenText(srtFileName);
this->richTextBox1->Text="";
this->richTextBox1->Text=sd->ReadToEnd();//内容添加到richTextBox1中
sd->Close();
}
}
四.窗体运行和调试
按下启动调试(F5)编译成功,如果有错误则应根据错误信息和位置找到错误并改正。
也可以利用设置断点的方式来进行排错。
我在程序调试过程中就遇到以下问题:
控件忘记添加,数据库的链接失败,对象引用有错误等。
在编写从word中导入的功能时遇到导入的内容如果是汉字就有错误,我就改用数据流的方式成功解决问题。
界面上的所有功能都可以使用达到了实验要求。
五.实验小结
本次实验的内容是在学习完C++与Windows窗体应用程序的基础知识数据库SQLServer之后一次各知识点结合的综合性实验。
本次实验运用所学知识对一些概念,一些知识点的理解更进一步加深。
能够通过老师讲的内容灵活运用多种控件,实现对简单数据库的维护,能够自行调试,显或保存实验结果。
对更深入的掌握面向对象程序设计这门课程有很大的帮助。
六.代码清单
Form1.h
#pragmaonce
namespace成语字典应用{
usingnamespaceSystem;
usingnamespaceSystem:
:
ComponentModel;
usingnamespaceSystem:
:
Collections;
usingnamespaceSystem:
:
Windows:
:
Forms;
usingnamespaceSystem:
:
Data;
usingnamespaceSystem:
:
Data:
:
SqlClient;
usingnamespaceSystem:
:
Drawing;
usingnamespaceSystem:
:
IO;
///
///Form1摘要
///
publicrefclassForm1:
publicSystem:
:
Windows:
:
Forms:
:
Form
{
public:
String^srtFileName;
Form1(void)
{
InitializeComponent();
//
//TODO:
在此处添加构造函数代码
//
con=gcnewSqlConnection();
con->ConnectionString=L"DataSource=.;InitialCatalog=成语字典库;IntegratedSecurity=True";
}
SqlConnection^con;
private:
System:
:
Data:
:
SqlClient:
:
SqlConnection^sqlConnection1;
public:
private:
System:
:
Data:
:
SqlClient:
:
SqlCommand^sqlSelectCommand1;
private:
System:
:
Data:
:
SqlClient:
:
SqlCommand^sqlInsertCommand1;
private:
System:
:
Data:
:
SqlClient:
:
SqlCommand^sqlUpdateCommand1;
private:
System:
:
Data:
:
SqlClient:
:
SqlCommand^sqlDeleteCommand1;
private:
System:
:
Data:
:
SqlClient:
:
SqlDataAdapter^sqlDataAdapter1;
private:
System:
:
Data:
:
SqlClient:
:
SqlCommand^sqlCommand1;
private:
System:
:
Windows:
:
Forms:
:
Label^label8;
private:
System:
:
Windows:
:
Forms:
:
Label^label6;
private:
System:
:
Windows:
:
Forms:
:
Label^label5;
private:
System:
:
Windows:
:
Forms:
:
Label^label4;
private:
System:
:
Windows:
:
Forms:
:
Button^button3;
private:
System:
:
Windows:
:
Forms:
:
Button^button4;
private:
System:
:
Windows:
:
Forms:
:
Button^button5;
private:
System:
:
Windows:
:
Forms:
:
Button^button6;
private:
System:
:
Windows:
:
Forms:
:
TextBox^textBox3;
private:
System:
:
Windows:
:
Forms:
:
Label^label7;
private:
System:
:
Windows:
:
Forms:
:
TextBox^textBox5;
private:
System:
:
Windows:
:
Forms:
:
TextBox^textBox2;
private:
System:
:
Windows:
:
For
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 设计 实验 成语词典 查询 系统