地12C#实习指导书0630(任务1).doc_第1页
地12C#实习指导书0630(任务1).doc_第2页
地12C#实习指导书0630(任务1).doc_第3页
地12C#实习指导书0630(任务1).doc_第4页
地12C#实习指导书0630(任务1).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

地12级C#程序设计与开发实习指导书一、实习目的与任务本实习是地理信息系统专业的一门基础教育限选课。是“C#程序设计与开发”课程的配套教学。主要实践面向对象编程语言进行Windows 可视化开发的思想,基本掌握应用 C#进行应用程序开发的编程方法和技术,为地理信息系统专业的学生从事GIS的开发与应用打下一个良好的语言基础。本实习利用C#设计并实现一个简单的管理信息系统。具体任务如下:(1)掌握C#面向对象的编程基础;(2)学习C#简单的数据库操作方法;(3)学习C#图形基本操作;(4)掌握ADO.net访问数据库;(5)学习利用C#进行C/S模式下的管理数据库系统设计;(6)学习使用Windows的对话框和常用控件制作用户界面及实现其功能。二、内容、要求、进度安排与组织方式2.1实习内容1)基本知识掌握使用Visual C#开发Windows应用程序的一般方法和特点,理解Windows应用程序的基本概念、主要功能和Windows应用程序开发的基本思想,能够根据实际需要自行开发简单的Windows应用程序。2)基本技能(1)系统总体设计。(2)建立数据库:设计数据库的实体关系图,创建物理数据表等。(3)设计管理系统界面包括:用户登录界面设计、管理员操作界面、用户操作界面。(4)管理员模块的实现。(5)用户模块的实现。(6)基本图形操作。3)主要内容(1)学生信息管理系统的设计与实现(2)五子棋游戏设计与实现2.2实习要求(1)通过实习使掌握使用Visual C#开发Windows应用程序的一般方法和特点。(2)理解Windows应用程序的基本概念、主要功能和Windows应用程序开发的基本思想。(3)能够根据要求开发简单的信息管理系统。2.3进度安排 实习进度如下表所示:表 1实习进度安排表19周周一1-8节周二 1-8节周三1-8节周四 1-8节周五 1-6节地点大兴B-305机房大兴B-305机房大兴B-305机房大兴B-305机房大兴B-305机房内容实习动员、实验1-数据库表设计与数据录入。实验1-主界面设计、用户登录界面设计实现。实验1-学生入学模块、学生成绩管理模块设计实现。实验1-学生入学管理模块、系统管理模块设计实现。实验1-学生入学信息查询模块、学生成绩查询模块设计实现。20周周一1-8节周二 1-8节周三1-8节周四 1-8节周五 1-6节地点大兴B-305机房大兴B-305机房大兴B-305机房大兴B-305机房大兴B-305机房内容实验1-学生考勤查询模块设计实现;整理实验1相关资料并总结。实验2-主界面设计,作者信息简介功能实现,五子棋的棋盘绘制。实验2-五子棋2人对战式游戏逻辑设计及程序实现,用户帮助功能。实验2-游戏步骤保存及读取;整理实验2相关资料并总结。成果提交。2.4组织方式以个人为单位,完成以上各项实习内容,并提交实习成果,包括:实验1、实验2的源代码(交电子版)、实习日志(学校发放)、实习报告(包括:系统功能、界面设计及实现后效果截图,实习总结)。注:实习日志的封面填写完整,右上角注明大学号;实习报告包括;纸质版和电子版,格式见实习报告格式_C#程序设计与开发。三、实习步骤:3.1 实验1学生信息管理系统的设计与实现3.1.1数据库表设计1) 学生成绩表结构表 2学生成绩表字段名称类型大小自动编号自动编号长整型班级名称文本50学期名称文本50学籍编号文本50学生姓名文本50课程名称文本50考试成绩数字双精度型设计过程:新建空白Access数据库,使用表设计器设计,如下图所示:图 1空白ACCESS表并将具体信息补充完整图 2填写信息后的ACCESS表2) 操作用户表结构表 3操作用户表字段名称类型大小用户名称文本50用户密码备注用户姓名文本50所在部门文本50联系电话文本50职责说明备注长整型学生管理之学生成绩管理数字长整型学生管理之学生入学管理数字长整型学生管理之学生考勤管理数字长整型查询管理之查询成绩信息数字长整型查询管理之查询课程信息数字长整型查询管理之查询考勤信息数字长整型系统管理之分配用户权限数字长整型3) 学生档案表结构表 4学生档案表字段名称类型大小学生姓名文本50学生性别文本50身份证号码文本50准考证号码文本50通信地址备注50邮政编码文本50联系电话文本50移动电话文本50宿舍编号文本50班级名称文本50基本情况备注学生照片备注补充说明备注4) 课程设置表结构表 5课程设置表字段名称类型大小自动编号自动编号长整型班级名称文本50学期名称文本50课程名称文本50预计课时数字长整型教材名称备注出版社名称备注教师编号文本50教室名称文本50补充说明备注5) 学生考勤表结构表 6学生考勤表字段名称类型大小自动编号自动编号长整型班级名称文本50学期名称文本50学籍编号文本50学生姓名文本50考勤日期日期/时间考勤类型文本50补充说明备注3.1.2主界面与用户登录界面设计与实现 学生信息管理系统主界面(参考)如下图所示:图 3学生信息管理系统主界面(参考)在加载主界面时调用弹出用户登陆界面(参考),具体如下图所示:图 4用户登陆界面主界面加载函数MainForm_Load代码(参考)如下:private void MainForm_Load(object sender, EventArgs e) /添加ThreadException事件关联程序 try /显示登录对话框 LoginForm MyDlg = new LoginForm(); MyDlg.Text = 欢迎使用 + MySlogan; MyDlg.ShowDialog(this); this.MyOperator = MyDlg.用户名称TextBox.Text; /根据用户的操作权限配置系统菜单 SetUserOperateMenu(); /最大化显示系统主窗体 if (MyOperator.Length 0) this.WindowState = FormWindowState.Maximized; /设置系统背景图像信息 this.BackgroundImage = new Bitmap(this.MyBgPhotoShow, true); this.Icon = new Icon(this.MyIcon); /设置系统标题栏显示文字 this.Text = MySlogan; catch this.Close(); public void SetUserOperateMenu() /根据用户的操作权限配置系统菜单 String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = Select * From 操作用户 Where 用户名称= + this.MyOperator + ; OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); DataTable MyTable = new DataTable(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(MySQL, MyConnection); MyAdapter.Fill(MyTable); if (int)MyTable.Rows0学生管理之学生入学管理 = 0) this.学生入学管理ToolStripMenuItem.Visible = false; this.学生入学管理ToolStripSeparator.Visible = false; this.学生入学管理ToolStripButton.Visible = false; if (int)MyTable.Rows0学生管理之学生考勤管理 = 0) this.学生考勤管理ToolStripMenuItem.Visible = false; this.学生考勤管理ToolStripSeparator.Visible = false; this.学生考勤管理ToolStripButton.Visible = false; if (int)MyTable.Rows0学生管理之学生成绩管理 = 0) this.学生成绩管理ToolStripMenuItem.Visible = false; this.学生成绩管理ToolStripSeparator.Visible = false; this.学生成绩管理ToolStripButton.Visible = false; if (int)MyTable.Rows0查询管理之查询学生信息 = 0) this.查询学生信息ToolStripMenuItem.Visible = false; this.查询学生信息ToolStripSeparator.Visible = false; this.查询学生信息ToolStripButton.Visible = false; if (int)MyTable.Rows0查询管理之查询成绩信息 = 0) this.查询成绩信息ToolStripMenuItem.Visible = false; this.查询成绩信息ToolStripSeparator.Visible = false; this.查询成绩信息ToolStripButton.Visible = false; if (int)MyTable.Rows0查询管理之查询考勤信息 = 0) this.查询考勤信息ToolStripMenuItem.Visible = false; this.查询考勤信息ToolStripSeparator.Visible = false; this.查询考勤信息ToolStripButton.Visible = false; if (int)MyTable.Rows0系统管理之分配用户权限 = 0) this.分配用户权限ToolStripMenuItem.Visible = false; this.分配用户权限ToolStripSeparator.Visible = false; this.分配用户权限ToolStripSeparator.Visible = false; if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); 设计用户登录界面代码(参考)如下:/文件名:LoginForm.csusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Security.Cryptography;using System.IO;using System.Security.Principal;using System.Data.OleDb;namespace MySchool public partial class LoginForm : Form public LoginForm() InitializeComponent(); /记录用户登录次数 private int MyTryCount = 0; private void 退出系统Button_Click(object sender, EventArgs e) MainForm MyDlg = (MainForm)this.Owner; MyDlg.Close(); private void 登录系统Button_Click(object sender, EventArgs e) /从app.config文件中读取数据库连接字符串信息 String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = Select COUNT(*) From 操作用户 Where 用户名称=用户名称 AND 用户密码=用户密码; OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); OleDbCommand MyCommand = new OleDbCommand(MySQL, MyConnection); MyCommand.Parameters.Clear(); OleDbParameter MySqlNameParameter = new OleDbParameter(); MySqlNameParameter.ParameterName = 用户名称; MySqlNameParameter.Value = this.用户名称TextBox.Text; MyCommand.Parameters.Add(MySqlNameParameter); OleDbParameter MyOleDbPWParameter = new OleDbParameter(); MyOleDbPWParameter.ParameterName = 用户密码; string MyHashName = SHA1; string MyPassword = this.用户密码TextBox.Text; /创建一个哈希算法 HashAlgorithm MyHashAlgorithm = HashAlgorithm.Create(MyHashName); /转换密码字符串为一个字节数组 byte MyPasswordData = Encoding.Default.GetBytes(MyPassword); /生成密码字符串的哈希码 byte MyHash = MyHashAlgorithm.ComputeHash(MyPasswordData); /显示密码对应的哈希码 string MyPW = BitConverter.ToString(MyHash); MyOleDbPWParameter.Value = MyPW; MyCommand.Parameters.Add(MyOleDbPWParameter); int MyCount = (int)MyCommand.ExecuteScalar(); if (MyCount = 1) this.Close(); else this.MyTryCount += 1; if (this.MyTryCount != 3) int MyDoCount = 3 - this.MyTryCount; MessageBox.Show(用户密码或用户名称有错,还有 + MyDoCount + 次机会!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.用户密码TextBox.Text = ; this.用户名称TextBox.Text = ; else 退出系统Button_Click(null, null); if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); 3.1.3管理相关模块设计与实现学生入学管理模块1. 创建Windows窗体,并设置其界面学生入学模块基本界面(参考)具体如下图所示:图 5学生入学模块基本界面(参考)2. 为DataGridView控件添加数据在其属性中查找DataSource,点击下拉箭头添加项目数据源,具体如下图:图 6从DataGridView数据添加在数据源配置向导中选择数据库并点击下一步,具体如下图:图 7数据配置向导在“选择您的数据连接”对话框中选择“新建连接”,在“数据源选项”中选择Access数据库文件,在“数据库文件名”中点击浏览并选择相应的.mdb文件,最后确定,具体如下图所示。图 8数据连接步骤按照配置要求完成以下步骤,在“选择数据库对象”对话窗口中勾选“表、视图”选项,并完成整个数据源配置过程。3. 控件与数据库的绑定将界面中一个控件选中,如下图所示:图 9界面中一个控件右键属性图 10 控件的Text字段绑定数据库中相应字段依次绑定各个控件。实现查询、新添、删除、保存和浏览图片功能。查询控件代码(参考)如下:this.学生档案BindingSource.Filter = 学籍编号LIKE + this.toolStripTextBox1.Text + ;保存控件代码(参考)如下:this.Validate();this.学生档案BindingSource.EndEdit();this.学生档案TableAdapter.Update(this.dBSchoolDataSet.学生档案);浏览图片控件代码(参考)如下:OpenFileDialog MyDlg = new OpenFileDialog(); MyDlg.Title = 选择照片; MyDlg.Filter = JPEG图像文件(*.jpg)|*.jpg|所有图像文件(JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg; *.gif;*.bmp;*.tif; *.tiff; *.png|所有文件(*.*)|*.*; if (MyDlg.ShowDialog() = DialogResult.OK) string MySrcPath = MyDlg.FileName; string MyGUID = System.Guid.NewGuid().ToString().ToUpper(); string MyExtName = System.IO.Path.GetExtension(MyDlg.FileName); string MyPhotoFile = MyGUID + MyExtName; string MyDestPath = Application.StartupPath + +MyPhotoFile; System.IO.File.Copy(MySrcPath, MyDestPath); /this.pictureBox1.Text = MyPhotoFile; this.pictureBox1.Image = new Bitmap(MyDestPath); this.学生照片TextBox.Text = MyPhotoFile; 学生成绩管理模块模块界面(参考)如下:图 11学生成绩管理模块界面(参考)依次设置各个ComboBox属性:设置控件的事件:Combox选项变化时响应SelectedIndexChanged事件。图 12 设置ToolStripCombox选项变化时响应的SelectedIndexChanged事件图 13设置Combox选项变化时响应的SelectedIndexChanged事件核心部分代码(参考)如下:private void 学生成绩BindingNavigatorSaveItem_Click(object sender, EventArgs e) this.Validate(); this.学生成绩BindingSource.EndEdit(); this.学生成绩TableAdapter.Update(this.dBSchoolDataSet.学生成绩); private void ScoreForm_Load(object sender, EventArgs e)/ TODO: 这行代码将数据加载到表“dBSchoolDataSet.课程设置”中 this.课程设置TableAdapter.Fill(this.dBSchoolDataSet.课程设置); / TODO: 这行代码将数据加载到表“dBSchoolDataSet.学生成绩”中 this.学生成绩TableAdapter.Fill(this.dBSchoolDataSet.学生成绩); String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = SELECT DISTINCT * FROM 班级设置 ; OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); System.Data.DataTable MyTable = new System.Data.DataTable(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(MySQL, MyConnection); MyAdapter.Fill(MyTable); foreach (DataRow MyRow in MyTable.Rows) this.班级名称ToolStripComboBox.Items.Add(MyRow班级名称.ToString(); this.班级名称ComboBox.Items.Add(MyRow班级名称.ToString(); if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); private void 查询ToolStripButton_Click(object sender, EventArgs e) this.学生成绩BindingSource.Filter=班级名称=+this.班级名称ToolStripComboBox.Text+ AND 学期名称=+this.学期名称ToolStripComboBox.Text+; private void 班级名称ToolStripComboBox_SelectedIndexChanged(object sender, EventArgs e) this.学期名称ToolStripComboBox.Items.Clear(); String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = SELECT DISTINCT 学期名称 FROM 课程设置 WHERE (班级名称 = + this.班级名称ToolStripComboBox.Text + ); OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); System.Data.DataTable MyTable = new System.Data.DataTable(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(MySQL, MyConnection); MyAdapter.Fill(MyTable); foreach (DataRow MyRow in MyTable.Rows) this.学期名称ToolStripComboBox.Items.Add(MyRow学期名称.ToString(); if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); private void 班级名称ComboBox_SelectedIndexChanged(object sender, EventArgs e) this.学期名称ComboBox.Items.Clear(); String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = SELECT DISTINCT 学期名称 FROM 课程设置 WHERE (班级名称 = + this.班级名称ComboBox.Text + ); OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); System.Data.DataTable MyTable = new System.Data.DataTable(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(MySQL, MyConnection); MyAdapter.Fill(MyTable); foreach (DataRow MyRow in MyTable.Rows) this.学期名称ComboBox.Items.Add(MyRow学期名称.ToString(); if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); private void 班级名称ComboBox_SelectedValueChanged(object sender, EventArgs e) String MyConnectionString = global:MySchool.Properties.Settings.Default.DBSchoolConnectionString; string MySQL = SELECT * FROM 学生档案 WHERE (学籍编号 NOT IN (SELECT 学籍编号 FROM 学生离校) AND (班级名称 = + this.班级名称ComboBox.Text + ); OleDbConnection MyConnection = new OleDbConnection(MyConnectionString); MyConnection.Open(); System.Data.DataTable MyTable = new System.Data.DataTable(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(MySQL, MyConnection); MyAdapter.Fill(MyTable); this.学生姓名ComboBox.DataSource = MyTable; this.学生姓名ComboBox.DisplayMember = 学生姓名; this.学生姓名ComboBox.ValueMember = 学籍编号; if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); private void 学生姓名ComboBox_SelectedIndexChanged(object sender, EventArgs e) if (this.学生姓名ComboBox.SelectedValue.ToString() != System.Data.DataRowView) this.学籍编号TextBox.Text = this.学生姓名ComboBox.SelectedValue.ToString(); private void 学期名称ComboBox_SelectedIndexChanged(object sender, EventArgs e) this.课程设置BindingSource.Filter=班级名称=+this.班级名称ComboBox.Text+ AND 学期名称=+this.学期名称ComboBox.Text+; 学生考勤管理模块学生考勤管理模块界面(参考)如下图所示:图 14学生考勤模块(参考)系统管理模块 模块界面(参考)如下图所示:图 15 系统管理模块(即用户创建与权限分配)界面(参考)修改用户密码功能界面(参考)如下图所示。图 16 修改用户密码模块(参考)修改用户密码模块代码(参考)如下:private void 返回系统Button_Click(object sender, EventArgs e) this.Close(); private void 修改密码Button_Click(object sender, EventArgs e) if (!(this.新密码TextBox.Text = this.再输一次新密码TextBox.Text) | (this.新密码TextBox.Text.Length = 0) MessageBox.Show(两次密码的输入不一致!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Information); return; string MyHashName = SHA1; /创建一个哈希算法 HashAlgorithm MyHashAlgorithm = HashAlgorith

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论