课程实验报告软件系统结构专业软件工程学生姓名刘辉班级软件151学号********** 指导老师孙莉实验一 C/S结构应用设计(1)一、实验目的设计并实现一个基于多层C/S结构的数据库应用,熟悉多层C/S体系结构及其基本处理流程,了解多层结构表现层、业务逻辑层(功能层)、数据访问层所完成的功能,掌握多层C/S结构的数据库应用设计方法,对这三层进行明确分割,并在逻辑上使其独立。
学生通过本实验的训练能够熟练掌握对小型数据库应用系统三层结构层次划分方法及系统实现技术。
本次实验目的:(1)熟悉并掌握二层C/S软件体系结构的相关知识;(2)掌握二层C/S结构应用系统的分析和设计;(3)掌握一种开发二层C/S结构应用系统的技术线路;(4)实际开发出一个简单的基于二层C/S结构的应用实例——个人通讯录管理系统。
要求:(1)需要预先掌握SQL server 2000数据库基本操作、(用C#语言)编程技术和多层C/S软件体系结构的概念;(2)进行二层C/S结构应用系统的分析和设计,在实验报告中写出个人通讯录管理系统的设计方案;(3)在SQL server 2000数据库系统中建立数据库并输入数据;(4)在中用C#语言编写表现层(UI)程序;(5)在中用C#语言编写业务逻辑层(BLL)程序;(6)完成系统调试,得出正确的实验结果;(7)做完实验后写出本实验的实验报告。
二、实验环境奔腾以上计算机,装有SQL Server 2000数据库系统和Visual Studio 2000软件。
三、实验内容1、分别采用二层C/S结构和多层C/S结构实现个人通讯录系统。
该系统的设计目标是能够轻松地管理个人的联系人信息,包括添加、修改和删除操作。
联系人信息包括姓名、住址、电话。
整个系统的功能图如下图所示:分析系统需求,完成软件体系结构设计及模块划分、数据库设计,采用Visual C#实现系统功能四、实验操作过程在电脑上安装好Microsoft Visual Studio 2010 用于系统的开发需要实际设计开发出一个简单的基于两层C/S结构的应用系统——个人通讯录管理系统,主要步骤和内容如下:1、在 SQL Server 2000中建立数据库Contact,建立表friend。
(1)建立数据库Contact: Create database contact(2)建立数据库表friend//使用contact数据库USE contactGO//是否存在数据库表friend,如果存在则删除If exists(select*from dbo.sysobjects where id=object id(N’[dbo].[friend]’)and OBJECTPROPERTY (id,N’isusertable’)=1)Drop table [dbo].[friend]GO//建立表friendCreate table [dbo].[friend]([fid] [int] identity(1,1) not null,[fname] [varchar] (8) collate Chinese prc ci as not null,[fphone] [varchar] (12) collate Chinese prc ci as null,[faddress] [varchar] (100) collate Chinese prc ci as null)on [primary]表1 friend的结构列名数据类型长度允许空是否标识说明Fid Int 4 否是联系人编号,自动递增型Fname Varchar 8 否否联系人姓名Fphone Varchar 12 否否联系人电话Faddress Varchar 100 是否联系人地址新建完friend表之后向表中插入1条记录。
以便程序调试时使用。
2、在Visual Studio 2000中用C#语言建立用户界面层(UI)程序:Contact 项目,主要呈现用户操作界面。
用户的主要操作界面如下:空间类型Name属性Text属性Enable属性Label lblName 姓名:TrueLabel lblPhone 电话:TrueLabel lblAdress 地址:TrueTextBox txtName FalseTextBox txtPhone FalseTextBox txtAdress FalseButton btnOK 确定FalseButton btnRE 取消FalseButton btnAdd 添加联系人信息TrueButton btnEdit 修改选中联系人信息TrueButton btnDel 删除选中联系人信息TrueButton btnAbout 关于本软件True其中txtAddress控件的Multilane属性为True.最后我们要设置listView属性,将其FullRowSelect属性设置为true,Gridlines属性设置为True,View属性设置为Details,并点开Columns属性,添加一列,设置其Name为fContactID,Text属性为编号,以此方式再为其添加姓名、电话、联系方式。
到此,用户图形界面就设计完成了。
3、编写应用程序层代码,用于实现数据访问、添加、删除和修改等控制,关键代码如下:(1)数据连接数据库连接的代码如下:string connstr = "Data Source=(local);Initial Catalog=contact;user id=sa;password=";本代码的意思是以用户名为sa登录到本地数据库,密码为空。
(2)数据添加、删除和修改等控制的主要代码①显示联系人信息显示联系人信息由主界面的listview显示,其思路是读取数据库中所有的联系人信息,然后通过Lisview显示。
private void getInfo(){string sql = "select Fid,Fname,Fphone,Faddress from friend";SqlConnection conn = new SqlConnection(connstr);conn.Open ();SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);try{this.listView.Items.Clear();while (reader.Read()){string[] subItems = new string[]{reader.GetInt32(0).ToString(),reader.GetString(1),reader.GetString(2),reader.GetString(3)};this.listView.Items.Add(new ListViewItem(subItems));}reader.Close();}catch (Exception ex){MessageBox.Show(ex.ToString());}}②添加联系人信息对联系人信息进行添加的操作并录入数据库public void addInfo(string name, string phone, string address) {string sql="insert into friend(Fname,Fphone,Faddress)values('"+name+"','"+phone+"','"+address+"')";SqlConnection conn=new SqlConnection(connstr);SqlCommand cmd=new SqlCommand(sql,conn);conn.Open();cmd.ExecuteNonQuery();conn.Close();}③修改联系人信息对联系人信息进行修改的操作并录入数据库private void btnEdit_Click(object sender, EventArgs e){if (this.listView.SelectedItems.Count == 0){MessageBox.Show("请单击选择需要修改的联系人!");return;}this.enableInfo();ListViewItem lvi = this.listView.SelectedItems[this.listView.SelectedItems.Count - 1];this.txtName.Text = lvi.SubItems[1].Text;this.txtPhone.Text = lvi.SubItems[2].Text;this.txtAddress.Text = lvi.SubItems[3].Text;Fid = Convert.ToInt32(lvi.SubItems[0].Text);this.isAdd = false;this.btnDel.Enabled = false;this.btnAdd.Enabled = false;}④删除联系人对联系人信息进行删除的操作并录入数据库private void button5_Click(object sender, EventArgs e){int infoID = this.getselectid();if (infoID == 0){MessageBox.Show("请选中信息先!");return;}try{string sql = "delete friend where fid=" + infoID;SqlConnection conn = new SqlConnection(connstr);conn.Open();SqlCommand cmd = new SqlCommand(sql, conn);cmd.ExecuteNonQuery();conn.Close();this.getInfo();}catch (Exception ex){MessageBox.Show(ex.Message);}}五、实验结果及结论。
当我们运行程序时可以看到之前在数据库中插入的数据已经显示在了联系人列表中,我们点击添加联系人信息之后再次插入信息,点击确定后,我们可以看到,新插入的数据已经在联系人列表中了,如下图所示。