软件开发实例开发实例日.ppt

上传人:b****2 文档编号:2197647 上传时间:2022-10-27 格式:PPT 页数:40 大小:1.76MB
下载 相关 举报
软件开发实例开发实例日.ppt_第1页
第1页 / 共40页
软件开发实例开发实例日.ppt_第2页
第2页 / 共40页
软件开发实例开发实例日.ppt_第3页
第3页 / 共40页
软件开发实例开发实例日.ppt_第4页
第4页 / 共40页
软件开发实例开发实例日.ppt_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

软件开发实例开发实例日.ppt

《软件开发实例开发实例日.ppt》由会员分享,可在线阅读,更多相关《软件开发实例开发实例日.ppt(40页珍藏版)》请在冰豆网上搜索。

软件开发实例开发实例日.ppt

第六章第六章开发实例开发实例

(1)学生管理1.系统的需求为简单起见,假设选课系统有两类参与者:

教务员和学生教务员:

教务员:

可以输入一个新学生;更新、查询学生的信息。

可以输入一个新学生;更新、查询学生的信息。

可以输入一门新课程;更新、查询课程的信息。

可以输入一门新课程;更新、查询课程的信息。

可为指定教师开一门课程;查询已开课程的选课学生名单。

可为指定教师开一门课程;查询已开课程的选课学生名单。

可为指定的学生选课;输入学生成绩。

可为指定的学生选课;输入学生成绩。

学生:

学生:

可以查询自己所有的选课信息,包括:

自己的已选课列表可以查询自己所有的选课信息,包括:

自己的已选课列表和待选课列表;和待选课列表;可以选课。

可以选课。

可以输入自己对某门课程任课教师的评价。

可以输入自己对某门课程任课教师的评价。

应用开发实例应用开发实例-选课系统选课系统2.系统模块划分3.开发过程(以学生管理为例)分析:

从系统模块划分的角度看,解决该问题需要一个主窗体和三个子窗体。

在主窗体的子菜单中完成对各子窗体的调用。

其中:

主窗体(Form1)包括一个主菜单和若干子菜单输入子窗体(InputStudentForm)实现学生信息输入查询子窗体(SearchStudentForm)实现学生选课查询更新子窗体(UpdateStudentForm)实现学生信息的更新、删除从软件体系结构的角度看,学生管理程序可分三层部署。

数据存储层:

创建学生管理所需数据库studentmanage,并将其部署在SQLServer2005数据库服务器端。

数据访问层:

是客户端应用程序的重要组成成份之一。

实现数据库连接和访问功能。

因此,要设计一个数据链接类DbConnection类:

实现对服务器端数据库(如studentmanage)的连接功能。

一个实体类Student类:

控制类中逻辑操作的主体一个控制类StudentManagerAction类:

实现对studentmanage库中学生信息的输入、查询、更新与删除功能,其中学生信息输入、查询、更新与删除将以该类方法的形式出现。

数据表示层:

即界面表达,是客户端应用程序的重要组成部分。

需设计以下三个窗体边界类:

InputStudentFormSearchStudentFormUpdateStudentForm选择菜单“开始”|“所有程序”|“MicrosoftVisualStudio2005”|“MicrosoftVisualStudio2005”,进入“起始页-MicrosoftVisualStudio”。

在菜单栏中选择“文件”|“新建”|“项目”,打开【新建项目】对话框,在此对话框中选择项目类型为VisuanlC#|Windows。

(1)创建项目NTier输入项目名称NTier在NTier下,创建CourseManager、StudentManager、TeacherManager、UserManager四个文件夹。

具体做法:

在解决方案资源管理器的树形目录中,右击NTier节点,在弹出的快捷菜单中选择“添加”|“新建文件夹”命令。

(2)创建主窗体界面(Form1)拖入窗体(3)在Ntier下创建数据连接类DbConnectionusingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data.OleDb;usingSystem.Xml;/XmlDocument类等需要此引用语句类等需要此引用语句usingSystem.Windows.Forms;/ApplicationApplication类需要此引用语类需要此引用语句句namespaceNTierclassDbConnectionprotectedstaticOleDbConnectionconn=newOleDbConnection();staticDbConnection()/静态构造函数前不允许加访问权限修饰符静态构造函数前不允许加访问权限修饰符strings=Application.ExecutablePath;/获得完整的应用程序路径获得完整的应用程序路径intdotPos=s.IndexOf(.);s=s.Substring(0,dotPos);s+=.xml;/将后缀名从将后缀名从exe改成改成xmlXmlDocumentdoc=newXmlDocument();doc.Load(s);/加载加载xml文件文件XmlNoderoot=doc.DocumentElement;XmlNodesetttingNode=root.SelectSingleNode(setting);stringserver=setttingNode.SelectSingleNode(server).InnerText;stringdb=setttingNode.SelectSingleNode(db).InnerText;stringconStr=Provider=SQLOLEDB.1;conStr+=IntegratedSecurity=SSPI;conStr+=InitialCatalog=+db+;DataSource=+server;conn.ConnectionString=conStr;LENOVO-2A3D3E14LENOVO-2A3D3E14studentmanage在DbConnection对象定义中,连接字符串conStr中参数“数据库名”和“服务器名”取值来自于我们为该项目创建的xml配置文件。

可将该配置文件保存在项目Ntier所在目录的bindebug文件夹中,xml配置文件的文件名与项目名相同,扩展名为.xml。

使用该配置文件可以动态生成数据库连接串,在不修改程序代码的前提下方便对不同服务器,不同数据库的访问,增强了程序的适应性。

关于DbConnection类的配置文件.xml(4)在StudentManager目录下创建实体类StudentclassStudentclassStudentpublicpublicstringno,name,sex,birthday,deptId;stringno,name,sex,birthday,deptId;publicStudent(stringno,stringname,stringsex,stringpublicStudent(stringno,stringname,stringsex,stringbirthday,stringdeptId)birthday,stringdeptId)this.no=no;this.no=no;this.name=name;this.name=name;this.sex=sex;this.sex=sex;this.birthday=birthday;this.birthday=birthday;this.deptId=deptId;this.deptId=deptId;classStudentManagerAction:

DbConnection/StudentManagerActionStudentManagerAction继承继承DbConnectionDbConnectionprivateStudentstudent;publicvoidsetStudent(Studentst)/将被管理的学生传递进来将被管理的学生传递进来this.student=st;publicboolsave()/把被管理的学生保存到数据库中。

把被管理的学生保存到数据库中。

boolsaved=true;/先假设能保存成功先假设能保存成功stringsql;sql=insertintotblStudent(studentNo,studentName,birthday,sex,deptId)values(+student.no;sql+=,+student.name+,+student.birthday+,+student.sex;sql+=,+student.deptId+);(5)在StudentManager目录下创建控制类StudentManagerActiontryconn.Open();/打开数据库连接,父类里的静态变量,已经被初始化打开数据库连接,父类里的静态变量,已经被初始化OleDbCommandcmd=newOleDbCommand(sql,conn);cmd.ExecuteNonQuery();/插入数据库插入数据库catch(OleDbExceptionex)strings=ex.Message;MessageBox.Show(s);saved=false;/保存失败保存失败finallyconn.Close();/不管数据库操作结果如何,执行完毕都关闭数据库联接不管数据库操作结果如何,执行完毕都关闭数据库联接returnsaved;其中其中usingSystem.Windows.Forms;usingSystem.Windows.Forms;是使用是使用MessageBoxMessageBox等等对象需要的。

对象需要的。

上述代码需要如下的引用语句部分:

(选中部分为用户添加)上述代码需要如下的引用语句部分:

(选中部分为用户添加)说明:

说明:

以上以上savesave方法的逻辑分析:

方法的逻辑分析:

要将新数据添加到数据库中,需要定义一条嵌入式要将新数据添加到数据库中,需要定义一条嵌入式insertinsert命令;命令;打开数据库连接,执行打开数据库连接,执行insertinsert命令时,进行异常处理。

命令时,进行异常处理。

若无异常,则将新记录写入数据库,同时返回若无异常,则将新记录写入数据库,同时返回truetrue;否则若捕捉到错误,则返回否则若捕捉到错误,则返回falsefalse将将DbConnectionDbConnection类说明为该类的父类,作用有二:

类说明为该类的父类,作用有二:

在父类中定义的保护成员在父类中定义的保护成员(conn)(conn)可直接在该类中使用可直接在该类中使用创建该类对象时不仅自动调用其构造函数,同时还要创建该类对象时不仅自动调用其构造函数,同时还要调用父类调用父类DbConnectionDbConnection的构造函数。

的构造函数。

(6)添加“增加”子窗体(InputStudentForm)“增加”子窗体名在解决方案资源管理器中展开树形目录,找到并右击StudentManager节点,在弹出的快捷菜单中选择“添加”|“Windows窗体”。

“增加增加”子窗体界面设计子窗体界面设计控件属性设置:

控件控件属性名属性名属性值属性值label1Text学号学号label2Text姓名姓名label3Text性别性别label4Text生日生日label5Text所在院系所在院系label6Text新增学生信息新增学生信息TextBox1NameTexttbStudentNo(空空)TextBox2NameTexttbStudentName(空空)ComboBox1NamecbSexTextBox3NameTexttbBirthday(空空)ComboBox2NamecbDeptButton1TextText增加增加listView1见下页见下页listView控件listView控件属性设置:

控件名属性名属性值lvStudentListFullRowSelGridLinesViewMultiSelectColumnsTrueTrueDetailsFalse单击该按钮单击该按钮编写主窗体调用InputStudentForm窗体的代码(双击增加,进入该段代码的编辑)privatevoid增加增加ToolStripMenuItem_Click(objects

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1