C#课室管理系统课程设计报告.doc_第1页
C#课室管理系统课程设计报告.doc_第2页
C#课室管理系统课程设计报告.doc_第3页
C#课室管理系统课程设计报告.doc_第4页
C#课室管理系统课程设计报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

C#程序设计课程设计报告(2013 2014学年 第 二 学期)题 目: 课室管理系统 专 业: 通信工程 班 级: 电通5B 姓名学号: 毛晓智20113100159 李俊鹏20113100125 许瑞峰20113100152 指导教师: 唐小煜 成 绩: 目录摘要1第一章 绪论21.1 设计目的21.2 开发工具选择21.3 开发环境21.4 本报告的主要内容2第二章 需求分析32.1系统需求简介32.1.1系统目标32.1.2功能需求分析32.1.3性能需求分析3第三章 总体设计43.1设计概述43.2系统总体结构及功能模块划分43.2.1课室借用系统模块43.2.2管理员课室管理模块53.3系统数据库概念结构设计53.3.1数据库设计框图53.3.2系统数据库的设计63.4安全保密设计73.4.1用户登录安全性7第四章 详细设计84.1概述84.2系统程序流程图84.3系统主要功能模块简介94.3.1系统登录94.3.2学生注册94.3.3学生课室借用模块104.3.4管理员课室管理模块.10第五章 主要功能模块代码125.1 登录界面代码设计125.2 管理员界面代码设计145.3 注册新用户代码设计155.4 学生界面代码设计16第六章 课程设计心得21C#课室管理系统摘要本文描述的是基于Windows环境的学生信息管理系统,主要功能模块包括:学生借用课室,管理员管理课室,主要工具Microsoft Visual Studio 2012 设计窗体, SQL server2008建立数据库,实现课室信息管理的各个功能。第一章 绪论1.1 设计目的本课程设计的目的是使学生能熟练掌握简单的Windows窗体应用程序的设计和数据库的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。1.2 开发工具选择本系统后台数据库采用Microsoft SQL Server 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft 公司的Visual Studio 2012作为主要开发工具,可与SQL Server 2008数据库无缝链接。1.3 开发环境系统开发平台:Microsoft Visual Studio2012系统开发语言:C#数据库管理软件:SQL Server 20081.4 本报告的主要内容本报告详细的介绍了课室信息管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。第二章 需求分析2.1系统需求简介2.1.1系统目标(1) 管理员对课室信息和用户信息的添加、修改、删除和查找(2) 学生能添加、修改借用的课室信息2.1.2功能需求分析本系统的功能需求分析如下:(1) 学生课室借用:学生可以注册用户根据学号姓名借用教学楼课室并能对其进行修改和及时的信息更新;(2) 管理员课室管理:用于管理员对课室和用户的管理,能进行相应的添加、修改、删除和查找,用户信息也能及时更新;2.1.3性能需求分析(1) 登录、注册、用户界面和管理界面需求:简洁、易懂、易用、友好。(2) 安全保密性需求:学生和管理员只有凭借用户名和密码登陆系统,才能对信息进行相应的操作;第三章 总体设计3.1设计概述根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能;3.2系统总体结构及功能模块划分经过对系统的需求分析,学生课室借用系统主要划分为:学生信息和课室信息的填写入三个功能模块。如图3.2.1 系统的总体结构。学生课室借用系统学生对课室借用的添加和修改管理员对课室和学生信息的添加、修改、删除和查找图3.2.1 系统的总体结构3.2.1课室借用系统模块课室借用系统信息添加信息修改课室借用系统:学生可以添加或修改借用的课室的信息。如图3.2.2学生信息查询模块结构。图3.2.2 课室借用系统模块结构3.2.2管理员课室管理模块管理员课室管理:主要是用于管理员对学生信息和课室信息的添加、修改、删除和查找,如图3.2.3管理员课室管理模块结构。管理员课室管理系统对学生信息和课室信息的添加对学生信息和课室信息的修改对学生信息和课室信息的删除对学生信息和课室信息的查找图3.2.3管理员课室管理模块结构3.3系统数据库概念结构设计根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。3.3.1数据库设计框图数据库设计框图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。如图3.3.1数据库设计框图结构。管理员管理课室总表用户注册学生借用课室图3.3.1数据库设计框图结构3.3.2系统数据库的设计综合以上分析,要实现上面的所有功能模块,主要设计表如下: 3.4安全保密设计3.4.1用户登录安全性系统设计了登录界面,每个合法用户和管理员有用户名及一个密码,只有当用户输入正确的用户名及密码组合后才能够对课室信息进行操作。第四章 详细设计4.1概述详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。4.2系统程序流程图程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。它可将整个程序的总体流程清楚明白的显示出来。如图4.2.1系统总流程图结构。登录界面登录注册界面是否注册用户操作界面YN修改返回添加管理员界面查找添加删除串口查找关闭登录界面学生课室借用流程图 管理员课室管理流程图4.3系统主要功能模块简介4.3.1系统登录用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。用户界面如图4.3.1 用户登录界面所示。图4.3.1 用户登录界面4.3.2学生注册用户注册用户名和密码。注册界面如图4.3.2 用户登录界面所示。 图4.3.2 用户注册界面4.3.3学生课室借用模块用户填写相应的信息录入到数据库就可以借用到需要的课室,并能进行所需要的修改。并且能及时查看该信息。用户操作界面如图4.3.3所示。图4.3.3 用户操作界面4.3.4管理员课室管理模块管理员可以根据需要对数据库的数据进行相应的查找、添加和删除,并能利用串口通信来实现数据的查找。管理员界面如图4.3.4所示。图4.3.4 管理员界面图4.3.5 管理员查找功能图4.3.6 管理员添加功能图4.3.7 管理员删除功能图4.3.7 串口查找功能第五章 主要功能模块代码5.1 登录界面代码设计 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige public partial class Form1 : Form public Form1() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlDataAdapter dap = new SqlDataAdapter(SELECT * FROM student WHERE 用户名= + textBox1.Text + and 密码= + textBox2.Text + , con); DataSet ds = new DataSet(student); dap.Fill(ds); if (ds.Tables0.Rows.Count 0 & this.radioButton1.Checked = true) CurrentOperator.UserName = textBox1.Text; this.Hide(); Form4 form4 = new Form4(); form4.Visible = true; else if (textBox1.Text = mao & textBox2.Text = 123 & this.radioButton3.Checked = true) this.Hide(); Form2 form2 = new Form2(); form2.Visible = true; else if (MessageBox.Show(输入错误,请重新输入, Error, MessageBoxButtons.OKCancel) = DialogResult.OK) /delete private void button3_Click(object sender, EventArgs e) this.Close(); private void button2_Click(object sender, EventArgs e) this.Hide(); Form3 form3 = new Form3(); form3.Visible = true; private void Form1_FormClosed(object sender, FormClosedEventArgs e) if (MessageBox.Show(你要退出系统吗?退出请选择确定, Error, MessageBoxButtons.OKCancel) = DialogResult.OK) System.Environment.Exit(0); public static class CurrentOperator private static string _userName; public static string UserName get return _userName; set _userName = value; 5.2 管理员界面代码设计 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;using System.IO.Ports;namespace diyige public partial class Form2 : Form string rstr; public delegate void ReadSptEventHandler(); SerialPort sp = new SerialPort(); DataTable dt = new DataTable(); public static string str = ; public Form2() InitializeComponent(); private void Form2_Load(object sender, EventArgs e) showinf(); comboBox1.DataSource = SerialPort.GetPortNames(); private void showinf() using (SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge) / DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(select * from student, con); da.Fill(dt); this.dataGridView1.DataSource = dt.DefaultView; private void button1_Click_1(object sender, EventArgs e) if (MessageBox.Show(您确定要删除本条信息吗?, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes) if (str != ) using (SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge) con.Open(); SqlCommand cmd = new SqlCommand(delete from student where 学号= + str + , con); cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close(); DataTable ds = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(select * from student, con); da.Fill(ds); this.dataGridView1.DataSource = ds.DefaultView; MessageBox.Show(删除成功); private void dataGridView1_Click_1(object sender, EventArgs e) str = this.dataGridView1.SelectedCells0.Value.ToString(); private void button2_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = INSERT INTO student(学号,姓名,性别,教学楼,课室,用户名,密码) values( + textBox1.Text + , + textBox2.Text + , + textBox3.Text + , + textBox4.Text + , + textBox5.Text + , + textBox7.Text + , + textBox8.Text + ); cmd.Connection = con; cmd.ExecuteNonQuery();/添加记录 MessageBox.Show(添加成功); DataTable dg = new DataTable(); SqlDataAdapter dap = new SqlDataAdapter(select * from student, con); dap.Fill(dg); this.dataGridView1.DataSource = dg.DefaultView; private void button3_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlDataAdapter dap = new SqlDataAdapter(SELECT * FROM student WHERE 学号= + textBox6.Text + , con); DataSet ds = new DataSet(); dap.Fill(ds); dataGridView2.DataSource = ds.Tables0.DefaultView; private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) /打开新串口前,先关闭之前已打开的串口,避免长期占用系统资源 if (spt.IsOpen) spt.Close(); /重新设置选定串口 spt.PortName = comboBox1.Text; /指定要使用的串口号 spt.BaudRate = 9600; /设定波特率 spt.DataBits = 8; /设定字长 spt.StopBits = System.IO.Ports.StopBits.One; /设定停止位 spt.Parity = System.IO.Ports.Parity.None; /设定奇偶验证协议 spt.Encoding = Encoding.UTF8; /设定通信中使用的字符集 spt.DtrEnable = true; /数据终端准备就绪(可以接收数据) spt.ReadTimeout = 1000; /设置数据读取超时为1秒 spt.WriteTimeout = 1000; /设置数据发送超时为1秒 /打开串口 try spt.Open(); if (spt.IsOpen) CloseSpt.Enabled = true; msgshow.Text = 成功打开串口 + spt.PortName; catch (Exception msg) msgshow.Text = msg.Message; private void button4_Click(object sender, EventArgs e) spt.Close(); if (!spt.IsOpen) CloseSpt.Enabled = false; msgshow.Text = 已成功关闭串口 + spt.PortName; private void Serial_Load(object sender, EventArgs e) /将可用的串口名填充到下拉菜单中 comboBox1.DataSource = SerialPort.GetPortNames(); /如果sp/spt对象没有绑定spt_DataReceived事件,则要执行以下语句 /当串口有数据要接收时,将触发该事件,执行绑定到该事件委托的方法 /this.sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.spt_DataReceived); private void spt_DataReceived(object sender, SerialDataReceivedEventArgs e) /当发生串口数据接收事件时,创建一个自定义委托对象,执行该委托所绑定的方法 /在Logs控件所在的句柄上启动该异步委托,允许该线程修改Logs的属性 /IAsyncResult ir = Logs.BeginInvoke(new ReadSptEventHandler(ReadSpt); /等待该委托线程完成 /Logs.EndInvoke(ir); /把BeginInvoke和EndInvoke紧挨着放在一起,相当启动了一个异步线程,又一直等待该线程返回(这不就变成同步方法了吗?) /本例中,可以考虑直接使用同步的方法启动一个委托 /程序会在此处等待,直至全部数据读取完毕,效果与上面BeginInvoke和EndInvoke两句一样 ReadSptEventHandler rse = new ReadSptEventHandler(ReadSpt); Logs.Invoke(rse); /Logs.AppendText(hahahaha); /以下不调用异步委托,而是直接执行处理数据读取和显示任务 /由于spt读取串口数据在一个独立的线程中进行,系统将会抛出“线程安全”问题而报错 /ReadSpt(); /绘图 /DrawC(); void ReadSpt() /以字符的方式读取串口的全部数据 rstr = spt.ReadExisting().Trim(); /读取串口接收到的数据的一个字符(字符的整型值),并以文本显示 /string rstr = spt.ReadChar().ToString(); /将数据添加到Logs控件 Logs.AppendText(rstr); /将Logs控件的光标移到最末尾处 Logs.ScrollToCaret(); /DrawC(); private void button4_Click_1(object sender, EventArgs e) SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlDataAdapter dap = new SqlDataAdapter(SELECT * FROM student WHERE 学号= + rstr + , con); DataSet ds = new DataSet(); dap.Fill(ds); dataGridView2.DataSource = ds.Tables0.DefaultView; private void button5_Click(object sender, EventArgs e) this.Hide(); Form form1 = new Form1(); form1.Show(); private void Form2_FormClosed(object sender, FormClosedEventArgs e) if (MessageBox.Show(你要退出系统吗?退出请选择确定, Error, MessageBoxButtons.OKCancel) = DialogResult.OK) System.Environment.Exit(0); 5.4 注册新用户代码设计 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige public partial class Form3 : Form DataTable dt = new DataTable(); public Form3() InitializeComponent(); private void Form3_Load(object sender, EventArgs e) showinf(); private void showinf() using (SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge) SqlDataAdapter da = new SqlDataAdapter(SELECT * FROM student , con); da.Fill(dt); private void button3_Click(object sender, EventArgs e) this.Hide(); Form form1 = new Form1(); form1.Show(); private void button1_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlDataAdapter da = new SqlDataAdapter(SELECT * FROM student , con); / Add the parameters for the InsertCommand. DataSet ds = new DataSet(student); da.Fill(ds); if (textBox2.Text = textBox3.Text) SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = INSERT INTO student(用户名,密码) values( + textBox1.Text + , + textBox2.Text + ); cmd.Connection = con; cmd.ExecuteNonQuery();/添加记录 MessageBox.Show(注册成功); else MessageBox.Show(输入错误,请重新输入); private void button2_Click(object sender, EventArgs e) this.Close(); private void Form3_FormClosed(object sender, FormClosedEventArgs e) if (MessageBox.Show(你要退出系统吗?退出请选择确定, Error, MessageBoxButtons.OKCancel) = DialogResult.OK) System.Environment.Exit(0); 5.5 学生界面代码设计 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige public partial class Form4 : Form DataTable dt = new DataTable(); public Form4() InitializeComponent(); private void Form4_Load(object sender, EventArgs e) textBox6.Text = CurrentOperator.UserName; SqlConnection con = new SqlConnection(Data Source=(local)sqlexpress; Integrated Security=True;database=maoge); con.Open(); SqlCommand command = new SqlCommand(select*from student where 用户名= + textBox6.Text + , con); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()

温馨提示

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

评论

0/150

提交评论