1、 PINGDINGSHAN UNIVERSITY RFID原理与应用 课程设计 题 目: 电影信息管理理系统实现 院(系): 信息工程学院 专业年级: 物联网工程级 姓 名: jjzjcjzc 学 号: csjkkcskl 指引教师: csjklks
2、 6月28日 目 录 1 绪论 1 1.1 课题背景及意义 1 1.1.1 系统功能设计 1 1.1.2 系统设计 1 2 有关技术及工具简介 3 2.1 系统功能设计 3 2.2 顾客信息管理功能实现 4 2.2.1 界面及数据库设计 4 2.2.1 RFID串口设计 6 2.2.1 日记查看功能 7 附 录 9 参照文献 18 致 谢 19 1 绪论 在现实程序开发中,咱们开发最多,最广泛还是某些各类型数据管理系统,固然不同系统有功能上差别,数据库也不同样,但最重要,最常用功能无外乎对数据基本操作(增删改查)。
3、该简易电影记录管理系统可以实现对电影记录各项操作。 1.1 课题背景及意义 近年来随着电影行业迅速发展,需要解决电影信息日趋加大。为了提高电影记录管理管理水平,优化资源,尽量减少管理成本。电影记录管理系统是从电影现状出发,依照电影记录管理新规定进行开发设计,它解决了电影记录管理数据信息量大,修改不以便,对一系列数据进行记录与分析耗费时间长等问题,协助电影管理人员有效管理电影记录信息。 1.1.1 系统功能设计 1:顾客登陆 实现登陆界面 跳转主页面。 2:增删查改 实现电影信息增删查改。 3:连接RFID数据 实现将RFID标签数据读入系统。 4:密码修改 实现顾客密码修
4、改功能,完善管理安全。 5:日记查看 用于记录和查看顾客系统登录和退出历史。 1.1.2 系统设计 该电影信息管理系统所采用技术及开发工具,涉及页面开发技术、采用架构、数据库管理系统、web服务器及开发工具、us、IS015693读写器等。 2 有关技术及工具简介 该电影信息管理系统所采用技术及开发工具,涉及页面开发技术、采用架构、数据库管理系统、web服务器及开发工具等。 2.1 系统功能设计 依照需求分析拟定该系统划分为如下几种功能: (1) 电影记录管理系统登录模块。 1:创立登陆界面,然后再添加一种登录成功后 跳转窗体 nam
5、e:FrmManager.cs 2:创立一种数据库用于存取顾客账户和密码信息,建数据表。 3:设立 列名(字段名) 数据类型 以及 与否容许该字段为空 列名分别为 顾客ID:MId 顾客名:MUserName 顾客密码:MUserPwd 4:设立MId 主键,与否自我增长标记(Identity Specification)也设立一下.将 Identity Specification 中 Is Identity 设立为 Yes(目是让每插入1行新数据 ID数自动+1). 设好了后来保存数据表,表名为MovieAccount. .数据表建完后来,咱们需要手动
6、插入顾客登录系统所需要顾客名和密码 5:设立登陆界面 2.2 顾客信息管理功能实现 2.2.1 界面及数据库设计 顾客信息管理功能重要实现系统顾客对自己注册信息增删查改。 (1) 新增数据表 咱们在之前数据库Movie中创立一种Record数据表,用于存储咱们需要操作电影记录数据,这里Id需要设立为自动增长,手动插入某些数据.数据库创立完毕后,开始实行系统界面. (2)界面设计 窗体name:FrmManager 文本框 电影名称name:txtMovie 导演 name:tx
7、tDirector 发型日期name:txtDate 按钮 查看记录name:btnView 删除记录name:btnDelete 添加记录name:btnAdd 保存记录name:btnSave 2.2.2RFID串口设计 该功能重要是刷进电影数据,通过读卡器对电影光盘之类中RFID标签读取物流信息。 RFID系统在实际应用中,电子标签附着在待辨认物体表面,电子标签中保存有商定格式电子数据。读卡器可无接触地读取并辨认电子标签中所保存电子数据,从而达到自动辨认物体目。读卡器通过天线发送出一定频率射频信号,当标签进入磁场时产生
8、感应电流从而获得能量,发送出自身编码等信息,被读取器读取并解码后送至电脑主机进行有关解决。 2.2.3日记查看功能 1:在登录窗体FrmLogin.cs定义3个全局变量,用于获取登录顾客名,登录状况(登录还是退出)以及相应时间;然后在日记查看窗体调用该全局变量并且通过使用SQ插入语句将其保存到SQL Server中,然后在访问日记查看窗体时候,通过窗体自动加载插入数据和查看数据办法 2:定义3个全局变量: 1:登录成功和退出顾客Uid (public static string Uid;) --在第三章密码修改功
9、能时候已经定义了 2:登录成功和退出时间Time (public static DateTime Time;) 3:登录状况Situation-2种涉及"登录"和"退出" (public static stringSituation;) 附 录 1 登陆界面核心代码: private void btnLogin_Click(object sender,EventArgs e) { using (SqlConnection conn = new SqlConnection(connStr)) {
10、 string sql = "select MUserPwd from MovieAccount where MUserName ='" + txtName.Text + "'"; using (SqlCommand cmd = new SqlCommand(sql,conn)) { conn.Open(); using (SqlDataReader
11、 sdr = cmd.ExecuteReader() { if (sdr.Read()) { string pwd = sdr.GetString(0).Trim(); if (pwd == txtPwd.Text) {
12、 MessageBox.Show("系统登录成功,正在跳转主页面..."); FrmManager manager = new FrmManager(); manager.Show(); this.Hide(); } else
13、 { MessageBox.Show("密码错误!请再次输入!"); RFID串口设计核心代码: 1:读取数据 private void btnRead_Click(object sender,EventArgs e) { //reader.OpenSerialPort("COM1"); //System.Threading.Thread.Sleep(500); Byte[] data = new Byte[8
14、]; int value = reader.GetOne(ref data); //if(value != 0) //int value = 0x01; // Inventory(data,0x27,ref tagCount); if (value != 0) { this.lblState.Text = "读取状态:失败,没有得到任何有效数据。"; this.txt
15、RFIDData.Text = ""; return; } this.txtRFIDData.Text = String.Format("{0:X2}{1:X2}{2:X2}{3:X2}{4:X2}{5:X2}{6:X2}{7:X2}",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]); //String str = String.Format("{0:X2}{1:X2}{2:X2}{3:X2}{4:X2
16、}{5:X2}{6:X2}{7:X2}",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]); this.lblState.Text = "读取状态:成功!"; //reader.CloseSerialPort(); } 2:设立串口参数 public Byte OpenSerialPort(String portName) { try {
17、 //设立串口参数 //serialport = new SerialPort(portName); serialport.PortName = portName; serialport.BaudRate = 115200; serialport.DataBits = 8; serialport.StopBits = StopBits.One; serialport.Parity
18、 = Parity.None; //serialport.ReadTimeout = 500; //serialport.WriteTimeout = 500; serialport.Open(); if (!serialport.IsOpen) { return AllDone; //打开成功 } else
19、 { return SerialPortErr; //打开失败 } } catch { return SerialPortErr;//打开失败 } } 电影记录管理系统界面核心代码: 1:增-添加记录 (添加一条新记录) //添加数据 private void btnAdd_Click(objec
20、t sender,EventArgs e) { int n = 0; stringsql="insertintoRecord(Movie_Name,Movie_Director,Date_Released) values (@Movie_Name,@Movie_Director,@Date_Released)"; if (txtMovie.Text.Trim() == "" || txtDirector.Text.Trim() == "" || txtDate.Text.Trim() == "")
21、 { MessageBox.Show("插入数据不能为空,请按规定插入数据!"); return; } SqlParameter[]param={newSqlParameter("@Movie_Name",txtMovie.Text), new SqlParameter("@Movie_Director",txtDirector.Text),
22、 new SqlParameter("@Date_Released",Convert.ToDateTime(txtDate.Text)) }; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql,conn); conn.Open(); cmd.Parameters.AddRange(pa
23、ram); n = cmd.ExecuteNonQuery(); if (n == 0) { MessageBox.Show("添加失败!"); return; } else if (n > 0) { MessageBox.Show("添加成功!"); } conn.Close();
24、 //调用refresh办法,在添加完毕数据后 自动刷新 显示新数据 Refresh(true); } 2:删-删除记录 (删除已有记录) //删除数据 private void btnDelete_Click(object sender,EventArgs e) { //使用sql删除语句 string sql = "delete from Record where 1=1"; //如果datagridview当前行被选中 if (dgvManager.CurrentRow.Selected)
25、 { //将sql语句 delete from Record where 1=1 + and Id = + 当前选中行第0个单元格号码(即Id号) sql = sql + "and Id=" + Convert.ToInt32(dgvManager.CurrentRow.Cells[0].Value.ToString()); } int n = 0; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql
26、conn); conn.Open(); n = cmd.ExecuteNonQuery(); if (n == 0) { MessageBox.Show("不存在ID!"); return; } else if (n > 0) { MessageBox.Show("删除成功!"); } conn.Close(); //删除完后 刷新一下当前数据 Refresh(); } 3 改-保存记录 (修改一条记录)//将鼠
27、标点击datagridview 上行内容 传递给 文本框 private void dgvManager_CellContentClick(object sender, DataGridViewCellEventArgs e) { //获取字段名为Movie_Name单元格内容 txtMovie.Text = dgvManager.Rows[e.RowIndex].Cells["Movie_Name"].Value.ToString(); //同理 获取当前点击行里 name属性为Movie_Director单元格 获取并将其传至txtDirector
28、 文本框 txtDirector.Text = dgvManager.Rows[e.RowIndex].Cells["Movie_Director"].Value.ToString(); //new一种时间对象 目是将电影发行时间小时,分和秒给去掉 保存到最小单位为日 DateTime datetoDay = new DateTime().Date; //将当前行日期单元格值 赋给 时间对象datetoDay datetoDay = Convert.ToDateTime(dgvManager.Rows[e.RowIndex].Cells["Da
29、te_Released"] .Value); //通过ToShortDateString()办法 将日期后00:00:00 给剔除掉 并赋给 txtDate文本框 txtDate.Text = datetoDay.ToShortDateString(); } 4 保存记录 //更新数据操作 private void btnSave_Click(object sender,EventArgs e) { //在对数据进行修改之前 对文本框内容做一下检查,如果为空 则 提示重新输入 if (txtMovie.Text.Trim() =
30、 "" || txtDirector.Text.Trim() == "" || txtDate.Text.Trim() == "") { MessageBox.Show("文本框输入不能为空!"); return; } //使用SQL update 更新语句 //获取文本框中输入内容,通过Id进行更新(Id为当前鼠标点击行Id) string sqlUpdate = "update Record set Movie_Name ='" + txtMovie.Text + "',Movie_Directo
31、r ='" + txtDirector.Text + "',Date_Released='" + txtDate.Text + "'where Id='" + dgvManager.CurrentRow.Cells[0].Value.ToString() + "'"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmdUpdate = new SqlCommand(sqlUpdate,conn); conn.Open(); int n = cmdUpda
32、te.ExecuteNonQuery(); if (n == 0) { //提示更新失败 MessageBox.Show("更新失败!"); return;// 并且返回 } else if (n > 0) { //否则更新成功 MessageBox.Show("恭喜你!更新成功!"); } //执行完数据更新操作后 需要关闭数据库 节约资源 conn.Close(); //更新完后来 调用刷新办法,将更新后数
33、据 显示在datagridview上面 Refresh(); } 5:查-查看记录 (查看当前所有记录) //查看并刷新所有数据 private void btnView_Click(object sender,EventArgs e) { string sql = "select Id,Movie_Name,Movie_Director,Date_Released from Record"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = ne
34、w SqlCommand(sql,conn); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dgvManager.DataSource = dt; } 6日记查看功能核心代码 if (pwd == txtPwd.Text) { //获取登陆成功后顾客ID Uid = txtName.Text; //获取当前登录时间 Time = DateTime.No
35、w; //获取当前顾客登录状况 Situation = "登录"; //阐明在该账户下 密码对的,系统登录成功 MessageBox.Show("系统登录成功,正在跳转主页面..."); FrmMain main = new FrmMain(); main.Show(); this.Hide(); 参照文献 1:物联网射频辨认技术(RFID)技术与应用 人民邮电出版社 2:《Programming.C#》 3:《Visual J#》
36、 道谢 本课程设计在李永明教师悉心指引下完毕。教师渊博专业知识、严谨治学态度,精益求精工作作风,诲人不倦崇高师德,严于律己、宽以待人崇高风范,朴实无法、平易近人人格魅力对本人影响深远。不但使本人树立了远大学习目的、掌握了基本研究办法,还使本人明白了许多为人处事道理。本次课程设计从选题到完毕,每一步都是在教师悉心指引下完毕,倾注了教师大量心血。在此,谨向教师表达崇高敬意和衷心感谢!在写课程设计过程中,遇到了诸多问题,在教师耐心指引下,问题都得以解决。因此在此,再次对教师道一声:教师,谢谢您!






