个人日程管理系统_第1页
个人日程管理系统_第2页
个人日程管理系统_第3页
个人日程管理系统_第4页
个人日程管理系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

PowerDesigner15 系统分析与建模实战 课程设计报告 题目:个人日程管理 院 系: 专 业: 班 级: 学 号: 姓 名: 指导老师: 2013 年 11 月 10 日 目录 1 项目. 1.1 项目背景 1.2 项目目标 2 系统需求分析. 2.1 用户需求. 2.2 功能分析. 2.3 开发环境 . 3 系统设计 3.1 设计目标. 3.2 系统角色. 3.3 系统流程图. 4 数据库设计. 4.1 ER 图和表结构设计. 4.2 创建数据库表代码 4.3 存储过程计. 4.4 创建视图 5 系统实现. 5.1 模块设计和实现 6 总结 参考文献. 1 项目 1. 1 项目背景 随着计算机技术的飞速发展,计算机应用的迅速推广,计算机及技术给人们的日常生 活、工作、学习带来了十分巨大的影响,计算机改变了人们的生活,工作的方式。而在使 用计算机时有一些好的、实用的软件,将会给使用者提供非常便利的环境。因此我们采用 C#和 SQL Sever 技术开发一个实用的个人日程管理系统。 1.2 项目目标 1. 通过关于本系统管理系统的实现,是个人的日程管理更加完善。 2. 可以编辑日程事务,了解行程。 3. 可以提醒备忘事项,大大提高了办事效率。 2 系统分析 2. 1 用户需求 (1)功能需求:本系统完成对自己昨天的日程进行记录,今天、明天的日 程安排以及查看修改工作。 (2)权限需求:用户管理员拥有最高的权限,可以对系统中所有的数据进 行查看、添加、修改和删除等操作;普通用户只可以对自己的行程进行查看、 修改、删除和删除等操作。 (3)系统安全性需求:一是用户进入系统时必须进行口令校验;二是连接 数据库是使用 windows 身份验证。 2. 2 功能需求 (1)用户登录、用户注册:用户通过登录的方式进行口令校验安全进入在线日程管理 系统:用户注册是用户为进入该系统时将个人信息提交到数据库中。 (2)人员管理:系统管理员可以对用户进行修改,其中对用户密码进行修改,对一些 长期没有用的人员进行删除操作,以减少系统压力。 (3)个人日程管理:其中使用 TabControl 控件,对某一天或某段时间的日程进行查 看,和对某个日程的地点、开始时间、重要性及联系电话进行修改,更新等操作。 2. 3 开发环境 操作系统:Windows 7 开发软件:Microsoft Visual Studio 数据库: SQL Server 2008 3 系统设计 3.1 设计目标 个人日程管理系统是对已完成的工作进行记录,对未完成的工作进行有效、合理的安 排,提高工作效率。 3.2 系统角色 本系统的角色主要包括有:系统管理员(拥有整个系统 的访问权限,可以对本系统的 所有数据进行查看、添加、修改、删除的操作) ,普通用户(拥有次级管理权限,可以进行 本人日程管理) 。 3. 3 系统流程图 用户信息 系统简介 登 录 用户注册 找回密码 日程管理 所有日程 已完成日程 未完成日程 4 数据库设计 4. 1 ER 图和表结构设计 (1) ER 图 用户 记录 事件 用 户 名 标 题 内 容权 限 联 系 人 电 话 开 始 时 间 密 码 性 别 用 户 名 邮 箱 重 要 性 问 题 地点 答 案 创 建 时 间 结 束 时 间 备 注 (2) 表结构设计 根据系统功能设计的要求以及功能模块的划分,对于系统用户信息数据库,可以列出 以下数据项和数据结构: 表 4-1 用户信息表(tbl_user ) 字段名 字段类型 长度 主/外键 字段值约束 对应中文名 username varchar 20 主键 Not null 用户姓名 userpassword varchar 20 Not null 用户密码 userpurview varchar 10 Not null 用户权限 usere_mail varchar 50 邮 箱 usersex char 4 性 别 question varchar 50 问 题 answer varchar 50 答 案 表 4-2 所有日程表(tbl_message) 字段名 字段类型 长度 主/外键 字段值约束 对应中文名 username varchar 20 外键 Not null 用户姓名 messagename varchar 20 Not null 事件标题 content varchar 50 主键 Not null 内 容 location varchar 50 Not null 地 点 relatedphone bigint 12 Not null 联系电话 begintime datetime 10 Not null 开始时间 createtime datetime 10 创建时间 priority varchar 20 Not null 重 要 性 endtime datetime 10 结束时间 remarks varchar 100 备 注 创建 PDM 4.2 创建数据库表代码 创建 tbl_user alter table “tbl_message“ drop constraint FK_TBL_MESS_REFERENCE_TBL_USER; drop table “tbl_user“ cascade constraints; /*=*/ /* Table: “tbl_user“ */ /*=*/ create table “tbl_user“ ( “username“ char(20) not null, “userpassword“ char(20), “userpurview“ char(10), “usere_mail“ char(50), “usersex“ char(4), “question“ dec(50), “answer“ binary(50), constraint PK_TBL_USER primary key (“username“) ); 创建 tbl_message alter table “tbl_message“ drop constraint FK_TBL_MESS_REFERENCE_TBL_USER; drop table “tbl_message“ cascade constraints; /*=*/ /* Table: “tbl_message“ */ /*=*/ create table “tbl_message“ ( “username“ char(20), “messagename“ char(20), “content“ char(50) not null, “location“ char(50), “relatedphone“ bigint(12), “begintime“ datetime(10), “createtime“ datetime(10), “priority“ char(20), “endtime“ datetime(10), “remarks“ char(100), constraint PK_TBL_MESSAGE primary key (“content“) ); alter table “tbl_message“ add constraint FK_TBL_MESS_REFERENCE_TBL_USER foreign key (“username“) references “tbl_user“ (“username“); 4.3 存储过程设计 用来删除某个用户: CREATE PROCEDURE Deleteusername Username varchar (20) AS delete from tbl_user where username = Userna 4.4 创建视图 drop view “VIEW_message“; /*=*/ /* View: “VIEW_message“ */ /*=*/ create or replace view “VIEW_message“ as select username as 用户名, MESSAGENAME as 标题, content as 内容, location as 地点, priority as 重要性, begintime as 开始时间, relatedphone as 联系电话, createtime as 创建时间 from tbl_message with read only; 51 登录模块的设计和实现 5.1.1 用户登录模块的窗体设计 1用户身份验证 输入:用户名和密码,选择权限 处理: (1) 用户登录窗体启动。 (2) 输入用户名和密码。 (3) 从用户信息表中检查是否有相应的用户名和密码。 (4) 如果用户名或密码为空或者错误,进行提示。如果忘记密码可以单击“忘记密码? ”字样,进入找回密码窗体。 (5) 如果输入的用户名和密码正确,则允许该用户进入系统。 (6) 进入主控制平台。 输出:主控制平台。 2用户登录模块的窗体设计,如下图所示: 主要代码如下: (1)登录按钮代码: private void bt_OK_Click(object sender, EventArgs e) try DataSet ds = new DataSet(); database db = new database(); string sqlStr = “select userPassword,userPurview from tbl_user where username=“ + text_name.Text.Trim() + “; ds = db.GetDataFromDB(sqlStr); if (ds.Tables0.Rows0.ItemArray0.ToString() = text_password.Text.Trim() database.userInfo0 = text_name.Text.Trim(); database.userInfo1 = ds.Tables0.Rows0.ItemArray1.ToString(); ob_FrmMain.Show(); this.Hide(); else MessageBox.Show(“用户名或密码或权限错误,请重新输入!“, “提示“); text_name.Text = “; text_password.Text = “; text_name.Focus(); catch (Exception ex) MessageBox.Show(“用户名或密码错误,请重新输入!“ + ex.Message, “提示“); (2) 取消按钮代码: private void bt_close_Click(object sender, EventArgs e) Application.Exit(); (3)注册按钮代码: private void bt_register_Click(object sender, EventArgs e) fregister obj_fregister = new fregister(); obj_fregister.iform = this; obj_fregister.Show(); this.Hide(); (4)按回车直接跳入下一个编辑框代码: private void text_name_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode = Keys.Enter) text_password.Focus(); private void text_password_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode = Keys.Enter) combo_register.Focus(); private void combo_register_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode = Keys.Enter) bt_OK_Click(sender, e); public void Getusername(string name) text_name.Text = name; 52 找回密码设计界面如下: (1)确定按钮代码如下: private void bOK_Click(object sender, EventArgs e) try DataSet ds = new DataSet(); database db = new database(); string sqlStr = “select userPassword,answer from tbl_user where username=“ + tuser.Text.Trim() + “; ds = db.GetDataFromDB(sqlStr); database.user0 = ds.Tables0.Rows0.ItemArray0.ToString(); database.user1 = ds.Tables0.Rows0.ItemArray1.ToString(); if (database.user1.Trim () = tanswer.Text.Trim() MessageBox.Show(“您的密码是: n“ + database.user0 + “, “提示“); flogin oomain = new flogin (); oomain.Show(); this.Close(); else MessageBox.Show(“你输入的问题或答案有错,请重新输入!“, “提示“); tanswer.Text = “; tquestion.Focus(); catch (Exception ex) MessageBox.Show(“问题或答案错误,请重新输入!“ + ex.Message, “提示“); (2)显示问题按钮代码: private void bshow_Click(object sender, EventArgs e) DataSet ds = new DataSet(); database db = new database(); string sqlStr = “select question from tbl_user where username=“ + tuser.Text.Trim() + “; ds = db.GetDataFromDB(sqlStr); database.user10 = ds.Tables0.Rows0.ItemArray0.ToString(); tquestion.Text = database.user10; 53 用户注册界面设置如下图: (1) 检测用户名是否可用按钮代码: private void bt_check_Click(object sender, EventArgs e) string connStr = “Data Source=(local);Initial Catalog=schedule;Integrated Security=True“; SqlConnection dConnection = new SqlConnection(connStr); dConnection.Open(); SqlCommand mycom = new SqlCommand(); mycom.CommandType = CommandType.Text; string comstr=“select username from tbl_user where username=“ + text_name.Text.Trim() + “; mycom.CommandText = comstr; mycom.Connection = dConnection; SqlDataReader myreader = mycom.ExecuteReader(); bool isture = myreader.Read(); if (text_name .Text =“ ) MessageBox .Show (“请输入用户名!“,“提示“); else if (isture =false ) MessageBox.Show(“用户名可用!请继续填写!“, “注册信息“); text_password.Focus(); else MessageBox.Show(“该用户名已存在,请重新填写用户名!“); text_name.Text = “; text_name.Focus(); (2)检测用户名、密码是否为空和两次输入的密码是否一致的代码: private bool CheckEmpty() bool result = true; if (text_name.Text.Trim() = string.Empty) label1.Visible = true; result = false; else label1.Visible = false; if (text_password.Text.Trim() = string.Empty) label8.Visible = true; result = false; else label8.Visible = false; if (text_repassword.Text.Trim() = string.Empty) label9.Visible = true; result = false; else if (text_password.Text.Trim() != text_repassword.Text.Trim() label9.Text = “ 两次输入的密码不一致“; label8.Visible = true; label9.Visible = true; result = false; text_password.Text = “; text_repassword.Text = “; text_password.Focus(); else label9.Visible = false; return result; (3)注册按钮的代码: public flogin iform; private void button1_Click(object sender, EventArgs e) bool isempty = CheckEmpty(); if (isempty = true) string connStr = “Data Source=(local);Initial Catalog=schedule;Integrated Security=True“; SqlConnection dConnection = new SqlConnection(connStr); dConnection.Open(); if (text_question.Text = “ | text_answer.Text = “) if (MessageBox.Show(“你确定不设置密码找回问题和答案吗? 那么你忘记密码 后将无法进入系统!“, “提示“, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sql = string.Format(“insert into tbl_user(username,userpassword,userpurview,usere_mail,usersex,question,answer) values(0,1,2,3 ,4,5,6)“, text_name.Text.Trim(), text_password.Text.Trim(), text_priority.Text.Trim(), text_e_mail.Text.Trim(), combo_sex.Text.Trim(), text_question.Text.Trim(), text_answer.Text.Trim(); SqlCommand cmd = new SqlCommand(sql, dConnection); Object obj = cmd.ExecuteScalar(); MessageBox.Show(“成功注册了一个用户“); flogin f_login = new flogin(); f_login.Show(); this.Hide(); else string sql = string.Format(“insert into tbl_user(username,userpassword,userpurview,usere_mail,usersex,question,answer) values(0,1,2,3 ,4,5,6)“, text_name.Text.Trim(), text_password.Text.Trim(), text_priority.Text.Trim(), text_e_mail.Text.Trim(), combo_sex.Text.Trim(), text_question.Text.Trim(), text_answer.Text.Trim(); SqlCommand cmd = new SqlCommand(sql, dConnection); Object obj = cmd.ExecuteScalar(); MessageBox.Show(“成功注册了一个用户“); iform.Getusername(text_name.Text.Trim(); flogin f_login = new flogin(); f_login.Show(); this.Hide(); text_question.Focus(); 54首页(主窗体)设计如下: 5.4.1 管理员主界面: 5.4.2 普通用户界面如下: 主要代码: private void fmain_Load(object sender, EventArgs e) if (database.userInfo1.Trim() = “普通用户“) bt_userinfor.Visible = false; toolStripStatusLabel1.Text = “当前用户是:“ + database.userInfo0.Trim() + “ 其级别是:“ + database.userInfo1.Trim(); (1)退出本系统按钮代码: private void bt_close_Click(object sender, EventArgs e) if (MessageBox.Show(“准备退出系统!确定要退出系统吗?nn退出之后就只能重新登录! !“, “退出系统“, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes) Application.Exit(); (2)关于本系统按钮代码:(其他按钮的代码相似) private void bt_about_Click(object sender, EventArgs e) fabout obj_FrmAbout = new fabout(); obj_FrmAbout.Show(); this.Hide(); 55 日程管理界面 此界面有管理员界面和普通界面之分,当是管理员时,窗体的用户姓名label 及其 对应的 textbox 为不可见 ,还有就是在查询中管理员多了一项按用户姓名查询。导航条、 网格和文本框之间进行了绑定;相关的代码如下: BindingSource bs = new BindingSource(); SqlDataAdapter sda; DataSet ds = new DataSet(); database db = new database(); public Frmschudule() InitializeComponent(); t_name.Enabled = false; t_content.Enabled = false; tbbegintm.Enabled = false; text_content.Enabled = false; text_location.Enabled = false; text_priority.Enabled = false; text_begintime.Enabled = false; text_phone.Enabled = false; tsb_xg.Enabled = false; tsb_shch.Enabled = false; name.Enabled = false; content.Enabled = false; if (database.userInfo1.Trim() = “用户管理员“) text_name1.Enabled = false; text_name2.Enabled = false; text_name3.Enabled = false; else label32.Visible = false; label36.Visible = false; label37.Visible = false; label38.Visible = false; label39.Visible = false; label21.Visible = false; text_name1.Visible = false; text_name2.Visible = false; text_name3.Visible = false; text_name4.Visible = false; textBox1.Visible = false; textBox2.Visible = false; button1.Visible = false; button2.Visible = false; if (database.userInfo1.Trim() = “用户管理员“) sda = new SqlDataAdapter(“select username as 用户姓名,messagename as 标题, content as 内容,location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话, createtime as 创建时间 from tbl_message order by begintime DESC “, database.connStr); sda.Fill(ds, “tblmessage“); bs.DataMember = “tblmessage“; else sda = new SqlDataAdapter(“select messagename as 标题,content as 内容, location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建时间 from tbl_message where username=“ + database.userInfo0.Trim() + “ order by begintime DESC“, database.connStr); sda.Fill(ds, “tbl_message“); bs.DataMember = “tbl_message“; bs.DataSource = ds; bs.ResetBindings(true); bdngt_message.BindingSource = bs; dgv_message.DataSource = bs; 5.5.1 所有事件设计窗体如下:(管理员窗体) (1)姓名查询主要代码:此处调用了视图(VIEW_message) private void button2_Click(object sender, EventArgs e) try /调用视图 string sqlStr = “select 用户名, 标题,内容,地点,重要性, 开始时间,联系电话 ,创 建时间 FROM VIEW_message where 用户名=“ + textBox2.Text.Trim() + “; database db = new database(); DataSet ds = new DataSet(); ds = db.GetDataFromDB(sqlStr); bs.DataSource = ds; bs.DataMember = ds.Tables0.ToString(); bs.ResetBindings(true); if (bs = null) MessageBox.Show(“没有符合条件的日程记录!“); else dgv_message.DataSource = bs; dgv_message_RowHeaderMouseClick(null, null); bdngt_message.BindingSource = bs; catch MessageBox.Show(“没有符合条件的日程记录!“); (2)按时间段查询代码: private void bt_check_Click(object sender, EventArgs e) try string sqlStr = “select messagename as 标题,content as 内容,location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建时间 FROM tbl_message where username=“ + database.userInfo0.Trim() + “ and begintime between “ + dtp_begin.Value.Date.ToString() + “ and “ + dtp_end.Value.AddDays(1).Date.ToString() + “ order by begintime DESC“; database db = new database(); DataSet ds = new DataSet(); ds = db.GetDataFromDB(sqlStr); bs.DataSource = ds; bs.DataMember = ds.Tables0.ToString(); bs.ResetBindings(true); if (bs = null) MessageBox.Show(“没有符合条件的日程记录!“); else dgv_message.DataSource = bs; dgv_message_RowHeaderMouseClick(null, null); bdngt_message.BindingSource = bs; catch MessageBox.Show(“没有符合条件的日程记录!“); (3)刷新代码: private void tsbupdate_Click(object sender, EventArgs e) this.Validate(); this.bs1.EndEdit(); BindingSource bs2 = new BindingSource(); SqlDataAdapter sda2; DataSet ds2 = new DataSet(); database db2 = new database(); try if (database.userInfo1.Trim() = “用户管理员“) sda2 = new SqlDataAdapter(“select username as 用户姓名, messagename as 标题,content as 内容,location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建时间 from tbl_message order by begintime DESC“, database.connStr); sda2.Fill(ds2, “tbl_message“); bs2.DataMember = “tbl_message“; else sda2 = new SqlDataAdapter(“select messagename as 标题,content as 内容, location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建时间 from tbl_message where username=“ + database.userInfo0.Trim() + “ order by begintime DESC“, database.connStr); sda2.Fill(ds2, “tbl_message“); bs2.DataMember = “tbl_message“; bs2.DataSource = ds2; bs2.ResetBindings(true); bdngt_message.BindingSource = bs2; dgv_message.DataSource = bs2; catch (System.Exception ex) MessageBox.Show(ex.ToString(); return; 5.5.2 未完成事件窗体:(管理员窗体) (1)按用户名查询代码: private void button1_Click(object sender, EventArgs e) try string sqlStr = “select username as 用户名,messagename as 标题,content as 内 容,location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建时间 from tbl_message where username=“ + database.userInfo0.Trim() + “and begintime “ + DateTime.Now.ToString() + “ order by begintime DESC“; database db1 = new database(); DataSet ds1 = new DataSet(); ds1 = db1.GetDataFromDB(sqlStr); bs1.DataSource = ds1; bs1.DataMember = ds1.Tables0.ToString(); bs1.ResetBindings(true); if (bs1 = null) MessageBox.Show(“没有符合条件的日程记录!“); else dataGridView2.DataSource = bs1; dataGridView2_RowHeaderMouseClick(null, null); dbnt_unmessage.BindingSource = bs1; catch MessageBox.Show(“没有符合条件的日程记录!“); (2)按时间查询代码: private void btok_Click(object sender, EventArgs e) try if (comboBox_day.Text.Trim() = “当 天“) string sqlStr = “select messagename as 标题,content as 内容,location as 地点, priority as 重要性,begintime as 开始时间,relatedphone as 联系电话 ,createtime as 创建 时间 from tbl_message where username=“ + database.userInfo0.Trim() + “and begintime “ + DateTime.Now.ToString() + “and begintime “ + DateTime.Now.ToString() + “and begintime between “ + dtp_datetime.Value.Date.ToString() + “ and “ + dtp_datetime.Value.Date.AddDays(1).ToString() + “ order by begintime DESC“; database db1 = new database(); DataSet ds1 = new DataSet(); ds1 = db.GetDataFromDB(sqlStr); bs1.DataSource = ds1; bs1.DataMember = ds1.Tables0.ToString(); bs1.ResetBindings(true); if (bs1 = null) MessageBox.Show(“没有符合条件的日程记录!“); else dataGridView2.DataSource = bs1; dbnt_unmessage.BindingSource = bs1; (3)修改代码: private void tsb_xg_Click(object sender, EventArgs e) this.Validate(); this.bs1.EndEdit(); string connString= “Data Source=(local);Initial Catalog=schedule;Integrated Security=True“; SqlConnection connection = new SqlConnection(connString); if (database.userInfo1.Trim() = “用户管理员“) try string strSql = string.Format(“update tbl_message set location=“ + location.Text.ToString() + “,priority=“ + priority.Text.ToString() + “,begintime=“ + begintime.Text.ToString() + “,relatedphone=“ + relatedphone4.Text.ToString() + “,createtime=“ + DateTime.Now.ToString() + “ where username=“ + text_name2.Text.ToString() + “ and content=“ + content.Text.ToString() + “); string strSql1 = string.Format(“update tbl_message set location=“ + location.Text.ToString() + “,priority=“ + priority.Text.ToString() + “,begintime=“ + begintime.Text.ToString() + “

温馨提示

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

评论

0/150

提交评论