ACCPS1使用C#开发数据库应用系统.ppt
构建布局良好的Windows程序,第二章,回顾与作业点评,如何弹出消息框?如何获得消息框的返回值?如何从一个窗体跳转到另一个窗体?如何读取数据库中多行多列的查询结果?,预习检查,本章讲了哪几个控件?控件的Anchor和Dock属性有什么作用?,设计管理员主窗体设计编辑学生窗体实现新增学生功能,本章任务,会使用基本控件设计窗体,并合理布局会实现MDI风格的窗体能将数据库中的数据读取出来显示在窗体上能将窗体中的数据保存到数据库,本章目标,菜单栏和工具栏,.NET提供:菜单栏控件MenuStrip工具栏控件ToolStrip,Windows中的菜单和工具栏,创建管理员菜单,创建管理员菜单,并打开新增学生窗体:普通菜单项:ToolStripMenuItem内容分割线:ToolStripSeparator菜单的快捷键:&+字母,例如:&F“退出”:,Application.Exit();/退出应用程序,可以用this.Close()吗?,命名规范:tsmi前缀,实现带图片的工具栏多控件绑定同一事件处理方法,创建管理员工具栏,练习1设计主窗体,需求说明:设计管理员主窗体设计学生用户主窗体要求有退出功能登录时根据登录的类型,跳转到不同的主窗体,完成时间:15分钟,共性问题集中讲解,常见调试问题及解决办法代码规范问题,共性问题集中讲解,控件进阶,设计编辑学生用户窗体:Label、TextBox、ComboBox、Button单选按钮:RadioButton日期选择控件:DateTimePicker组框:GroupBox面板:Panel,命名规范-前缀,控件命名规范,设计布局良好的窗体,为什么要排列控件?,不美观,不友好,用VS排列窗体的控件,工具:Visual Studio的“格式”菜单按住“Ctrl”键,选择多个控件以第一个控件为基准,教员演示排列窗体的控件,锚定控件,原始窗口,窗口拉大后,使用 Anchor,Achor属性:固定控件与窗体边缘距离,原始窗口,停靠控件,窗口拉大后,Dock属性:将控件停靠在窗体的边缘或填充窗体,使用Dock,MDI窗体,在 MDI 应用程序中可以同时打开多个文件,父窗口,子窗口,构建MDI,MDI关键步骤,创建 MDI 的步骤:1、父窗体的 IsMDIContainer 属性设为true 2、子窗体的 MdiParent 属性设为父窗体,ChildForm childForm=new ChildForm();childForm.MdiParent=this;childForm.Show();,设置子窗体的父窗体,建立子窗体窗口列表步骤:设置父窗体菜单控件的 MdiWindowListItem 属性,选定为“窗口”菜单项,练习2设计编辑学生用户窗体,需求说明:设计编辑学生用户窗体从管理员主窗体打开该窗体实现输入验证,完成时间:15分钟,练习3设计修改密码窗体,需求说明:设计修改密码窗体从管理员主窗体打开该窗体要求有输入验证:两次的新密码一致,完成时间:10分钟,练习4实现修改密码功能,需求说明:将数据库中的旧密码更新为新密码,完成时间:25分钟,共性问题集中讲解,常见调试问题及解决办法代码规范问题,共性问题集中讲解,动态向ComboBox中添加数据,如何读取年级信息添加到年级组合框中?,处理窗体的Load事件使用DataReader读取年级添加ComboBox的项,cboGrade.Items.Add(要添加的项);,练习5填充年级数据,需求说明:从数据库读取年级名称,添加到“编辑学生用户”窗体的年级组合框中,完成时间:20分钟,练习6实现新增学生用户功能,训练要点:获得窗体控件的值ExecuteScalar()方法ExecuteNonQuery()方法需求说明:学生用户信息填写完整后,将信息保存到数据库添加成功在窗体上显示生成的学号,教员讲解需求,指导实现新增学生用户功能,实现思路:1、用户输入验证通过(已经实现)2、根据选中的年级名称,用ExecuteScalar()方法查询年级Id3、用ExecuteNonQuery()方法向数据库中插入数据,性别值定义为常量 4、获得最后生成的标识列值作为学号,完成时间:25分钟,难点指导:获得最后生成的标识列值:,SELECT IDENTITY,共性问题集中讲解,常见调试问题及解决办法代码规范问题,共性问题集中讲解,总结,Dock和Anchor的区别是什么?如何构建MDI父窗体、子窗体?如何利用代码向ComboBox中添加项?如何确定单选按钮是否选中?,作业,课后作业必做教员备课时在此添加内容选做教员备课时在此添加内容提交时间:xxx提交形式:xxx预习作业背诵英文单词教员备课时在此添加内容,