C# SQL server 项目设计课程设计个人日程管理系统.doc
湖南财政经济学院课 程 设 计课 程C# &SQL server 项目设计题 目 个人日程管理系统专 业 经济信息管理班 级 10级经济信息管理班姓 名指导教师2011年12月20日 目录 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 存储过程计.5 系统实现. 5.1 模块设计和实现.6 总结.参考文献. 致谢.1 绪论1. 1 项目背景 随着计算机技术的飞速发展,计算机应用的迅速推广,计算机及技术给人们的日常生活、工作、学习带来了十分巨大的影响,计算机改变了人们的生活,工作的方式。而在使用计算机时有一些好的、实用的软件,将会给使用者提供非常便利的环境。因此我们采用C#和SQL Sever 技术开发一个实用的个人日程管理系统。1.2 项目目标1. 通过关于本系统管理系统的实现,是个人的日程管理更加完善。2. 可以查看日历、月历、农历。3. 可以编辑日程事务,了解行程。4. 可以提醒备忘事项,大大提高了办事效率。 2 系统分析2. 1 用户需求(1)功能需求:本系统完成对自己昨天的日程进行记录,今天、明天的日程安排以及查看修改工作。(2)权限需求:用户管理员拥有最高的权限,可以对系统中所有的数据进行查看、添加、修改和删除等操作;普通用户只可以对自己的行程进行查看、修改、删除和删除等操作。(3)系统安全性需求:一是用户进入系统时必须进行口令校验;二是连接数据库是使用windows身份验证。2. 2功能需求(1)用户登录、用户注册:用户通过登录的方式进行口令校验安全进入在线日程管理系统:用户注册是用户为进入该系统时将个人信息提交到数据库中。(2)人员管理:系统管理员可以对用户进行修改,其中对用户密码进行修改,对一些长期没有用的人员进行删除操作,以减少系统压力。(3)个人日程管理:其中使用TabControl 控件,对某一天或某段时间的日程进行查看,和对某个日程的地点、开始时间、重要性及联系电话进行修改,更新等操作。2. 3 开发环境 1硬件环境 目前,我们所开发的系统主要是应用在中小规模的学校内部,因此,一般配置的计算机硬件就可以满足系统需求。考虑到学校规模的扩大和硬件价格的降低,为本系统配置在较优秀的服务器硬件,可以充分发挥本系统性能。处理器: Intel Pentium 4 3.06 GX 或更高内存: 256M(推荐)硬盘空间:40GB显卡: SVGA显示适配器 2软件环境操作系统:Windows 2000/XP开发软件:Microsoft Visual Studio .NET 2005数据库:Microsoft SQL Server 2005 3 系统设计3.1设计目标个人日程管理系统是对已完成的工作进行记录,对未完成的工作进行有效、合理的安排,提高工作效率。3.2 系统角色本系统的角色主要包括有:系统管理员(拥有整个系统 的访问权限,可以对本系统的所有数据进行查看、添加、修改、删除的操作),普通用户(拥有次级管理权限,可以进行本人日程管理)。3. 3 系统流程图用户信息系统简介登 录用户注册找回密码日程管理所有日程已完成日程未完成日程 4 数据库设计4. 1 ER图和表结构设计(1) ER图 用户记录事件用户名标题内容权限联系人电话开始时间密码性别用户名邮箱重要性问题地点答案创建时间结束时间备注(2) 表结构设计根据系统功能设计的要求以及功能模块的划分,对于系统用户信息数据库,可以列出以下数据项和数据结构:表4-1用户信息表(tbl_username)字段名字段类型长度主/外键字段值约束对应中文名usernamevarchar20主键Not null用户姓名userpasswordvarchar20Not null用户密码userpurviewvarchar10Not null用户权限usere_mailvarchar50邮 箱usersexchar4性 别questionvarchar50问 题answervarchar50答 案表4-2所有日程表(tbl_message)字段名字段类型长度主/外键字段值约束对应中文名usernamevarchar20外键Not null用户姓名messagenamevarchar20Not null事件标题contentvarchar50主键Not null内 容locationvarchar50Not null地 点relatedphonebigint8Not null联系电话begintimedatetime8Not null开始时间createtimedatetime8创建时间priorityvarchar20Not null重 要 性endtimedatetime8结束时间remarksvarchar100备 注表4-3所有日程表(tbl_unmessage)字段名字段类型长度主/外键字段值约束对应中文名usernamevarchar20外键Not null用户姓名messagenamevarchar20Not null事件标题contentverchar50主键Not null内 容locationvarchar50Not null地 点begintimedatetime8Not null开始时间relatedphonebigint8Not null联系电话createtimedatetime8创建时间priorityvarchar20Not null重 要 性表4-4所有日程表(tbl_finishimessage)字段名字段类型长度主/外键字段值约束对应中文名usernamevarchar20外键Not null用户姓名messagenamevarchar20Not null事件标题contentvarchar50主键Not null内 容begintimedatetime8Not null开始时间endtimedatetime8结束时间remarksvarchar100备 注4.2存储过程设计用来删除某个用户:CREATE PROCEDURE DeleteusernameUsername varchar (20) ASdeletefrom tbl_userwhere username = Userna51 登录模块的设计和实现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() && ds.Tables0.Rows0.ItemArray1.ToString() = combo_register.Text .Trim () fmain ob_FrmMain = new fmain (); 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_C