桌面日历系统的设计与实现毕业设计论文.doc_第1页
桌面日历系统的设计与实现毕业设计论文.doc_第2页
桌面日历系统的设计与实现毕业设计论文.doc_第3页
桌面日历系统的设计与实现毕业设计论文.doc_第4页
桌面日历系统的设计与实现毕业设计论文.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

毕毕 业业 设设 计计( 论论 文文) 桌面日历系统的设计与实现桌面日历系统的设计与实现 论论文作者姓名:文作者姓名: 申申请请学位学位专业专业: : 申申请请学位学位类别类别: : 指指导导教教师师姓姓名名( (职职称称) ): : 论论文提交日期:文提交日期: 桌面日历系统的设计与实现桌面日历系统的设计与实现 摘摘 要要 自上个世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和 快捷,也使越来越多的人依赖于电脑办公。而传统的日程记事本逐渐显现出在 当今时代的不足和局限性,比如不便携带、不便查阅、不能自动提醒等等,电 脑桌面日历由此孕育而生。很快,桌面日历就以其方便的日期查询、个性化的 日程安排、精确的闹钟提醒与配套的日志系统、美观的界面设计,受到广大电 脑办公者的喜爱。 本设计就是针对当前网络上众多的桌面日历,综合其各项基本功能来开发 一套属于自己的个性化日历日志系统。本设计主要采用 c#+sql 的 c/s 设计模 式,来实现不同用户的登录、日程编辑、日程提醒、日期查询、节假日管理等 工作。方便了使用者对每日行程的掌握,也保护了各使用者之间的私人信息。 本设计按照功能模块分为用户登录模块、用户注册、日历和时间模块、节 假日模块、日程行程模块、自动提醒模块、数据库模块。本文详细地介绍了该 日历日程系统的功能需求、系统设计和具体实现。并简要介绍了系统开发采用 的过程及方法。 关键词:关键词:桌面日历;日程;多用户 design and development of desktop calendar system abstract as pc becomes more and more popular since last century, peoples work and life become more and more convenient, and people rely increasingly on computers. however, the conventional notepad has revealed its deficiencies and limitations, such as inconvenience. and conventional notepad can not alarm automatically also. so, the desktop calendar appears. because of its convenient date inquiry, individualized schedule management system, accurate schedule alarm system and friendly user interface, desktop calendar is highly estimated among computer workers. combining the functions of a number of todays desktop calendars, this design aims to develop an individual desktop calendar and schedule system. it is developed by c# and sql, based on c/s. its functions include “multi-user login”, “schedule management”, “schedule alarm”, “date inquiry”, “holiday management” and so on. the calendar is convenient for users to check the schedule everyday, and also can protect each users private information. the calendar includes “user login” module, “user registry and edition” module, “date and time” module, “holiday manage” module, “schedule manage” module, “schedule alarm” module and “database” module. this article describes the functional requirement, system design and detail implementation. it also describes the methods and development process of this system in brief. key words: desktop calendar;schedule;multiple users 目目 录录 论文总页数:23 页 1 引言.1 2 相关理论基础 1 2.1 c/s 模式2 2.2 visual studio 2005 c#2 2.2.1 c#的介绍2 2.2.2 c#的弱点3 2.3 sql server 2000.3 2.3.1 sql 介绍3 2.3.2 microsoft sql server 2000 简介.4 3 系统需求分析 4 3.1 用户需求4 3.2 功能需求4 3.2.1 未登录用户4 3.2.2 普通登录用户5 3.2.3 管理员5 3.3 性能需求5 4 详细设计与实现.6 4.1 系统功能设计6 4.2 数据库设计6 4.3 各表之间的关系图7 4.4 系统功能实现8 4.4.1 用户登录模块8 4.4.2 用户注册模块9 4.4.3 日历主模块11 4.4.4 日志记录模块12 4.4.5 日志提醒模块14 4.4.6 节假日设置模块14 5 系统测试15 5.1 测试环境15 5.2 测试结果16 5.3 系统的安全性测试19 5.3.1 密码的安全性19 5.3.2 日志信息的安全性19 5.3.3 数据库的安全性19 结 论 .20 参考文献 .20 致 谢 .22 声 明 .23 1 1 引言引言 自上个世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和 快捷,也使越来越多的人依赖于电脑办公。而传统的日历和日程记事本逐渐显 现出在当今时代的不足和局限性,比如传统日历或记事本一般为纸制品,加大 了对森林资源的需求,与当今提倡绿色环保的思想相背;传统记事本不方便携 带、记录和修改;一般不带有日历,即使有也仅仅局限于某一年的日历,不方 便使用者查询日期;使用日历和记事本当查询某天的日程信息的时候非常烦琐, 而且对该天前后的日程信息也很不好把握;没有自动提醒功能,不能对使用者 的行程进行很好的规划和安排。总之,传统的日历和记事本都不能对使用者的 时间进行系统化的规划。 针对以上的传统日历和记事本的局限性,电脑桌面日历孕育而生。本文所 介绍的桌面日历系统,就是专门为那些常年习惯于电脑办公,喜欢对自己的行 程进行系统化管理的人们所开发的一款桌面软件。该软件的优点如下:1,将日 历和记事本集成到一款软件上,让用户在记录和查询日志的时候也能方便得查 阅日期情况。2,日志行程的自动提醒,该系统能根据用户自己设置的行程提醒 时间来提醒用户,时差是以毫秒级计算,非常之精确。3,人性化的节假日设置, 可以根据用户的喜好来记录节假日和一些重要的日子,并在日历主界面上显示 当天的节假日信息。4,借助数据库可以方便得对用户资料和信息进行存取,也 有效得保护了各个用户之间的信息。 本文介绍了 c/s 模式下的桌面日历系统的设计以及开发过程,主要包括了 以下几个方面的内容:1,简要介绍 c#和 sql 知识。2,介绍该系统的前期设 计过程。3,介绍该系统的具体代码实现过程。4,介绍开发过程中遇到的各种 技术问题以及解决方案。 计算机的发明应用,被视为人类的第三次重大的科学技术革命,是一次飞 跃。过去的革命最高成就就是“用机器制造机器”,是手的延长,而计算机的出 现却能做到“用机器控制机器”,是脑的延伸,是提高生产效率的主要工具。通 过以上分析不难得出结论,在计算机日益普及的今天,很多传统的东西必须与 电脑相结合才能进一步发展。这样一套桌面日历系统,也是让传统日历和记事 本继续生存并发展的重要一步。 2 2 相关理论基础相关理论基础 该系统采用的是 c/s 模式,设计平台为 visual studio 2005 c#,后台数据库 系统为 sql server 2000。下面简单介绍下: 2.12.1 c/s 模式模式 c/s 全名为 client/server 应用体系,又称客户端/服务器模式。client 使用各 项操作的用户界面接口来处理分析和数据输入/输出;server 通常采用高性能的 pc 机、工作站或小型机,并采用大型的数据库系统,如 oracle、sql server 等, 主要实现数据的存储功能,以及相关的后台业务逻辑流程处理。 c/s 模式的优点在于:能充分发挥客户端 pc 机的处理能力,许多的工作可 以交由客户端处理后再提交给服务器,所以客户端的响应速度非常快。 但 c/s 模式也有一些缺点,比如:客户端需要安装专门的客户端软件;维 护和升级的成本很高;对客户端的操作系统也有一定的限制。 client server gui 界面 数据处理 数据处理 数据存储 图 1-1 c/s 结构示意图 2.22.2 visual studio 2005 c# .1 c#的介绍的介绍 在过去的二十年里,c 和 c+已经成为在商业软件的开发领域中使用最广 泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的效 率。许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个 更为理想的权衡点。对于 c/c+用户来说,最理想的解决方案无疑是在快速开 发的同时又可以调用底层平台的所有功能。 c#是由微软开发的一种全新的、面向对象的编程语言,作为 visual studio 中的一部分推出。既保持了 c+中熟悉的语法,并且还包含了大量的高效代码 和面向对象特性。c#使得 c+程序员可以高效的开发程序,而绝不损失 c/c+ 原有的强大的功能。因为这种继承关系,c#与 c/c+具有极大的相似性,熟悉 类似语言的开发者可以很快的转向 c#。 c#语言将在保持 c/c+灵活性的基础上为程序员带来更高效的 rad 开发 方式。它不仅能用于 web 服务程序的开发,并且还能开发强大的系统级程序。 c#是种非常类似于 java 的语言,适用于各种操作系统,并且与 windows 紧密地结合在一起。 微软称 c#是由 c 和 c+派生而来的一种“简单、流行、面向对象、类型安 全”的程序设计语言,c#意在综合 visual basic 的高效率和 c+的强大功能。 事实上,c#将是完全依靠 windows 的最完美产物。那些困绕 java sdk, mfc 和 set 的数据库已成为过去。你想放入 c#的任何东西(无论何种语言) , 只要在 windows 的.net 子系统下建立和包装后都可以使用 windows 的运行库。 .2 c#的弱点的弱点 首先,在大量的现有 windows 平台上,c# 的程序还不能运行,因为 c# 程序需要 .net 运行库为基础,而 .net 运行库将作为新一代的 windows(whistler)的一部分发行, 或以 service pack 的形式提交给 windows me 和 windows 2000 用户。所以在近期,c# 会主要在服务器上得到应用。 其次,c# 能够使用的组件和库还只有 .net 运行库等很少的选择,没有 丰富的第三方软件库可用,这需要有一个过程,同时各软件开发商的支持也很 重要。 第三,java 的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次, 到处运行”只是一句口号,但毕竟已经是一种成熟的技术。而 c# 的鼓吹者目前 只有名声不佳的微软,且只能运行在 windows 上。实际上这两种语言都不是不 可替代的,理智的说,对软件开发商而言,什么工具用的最熟,那就是最好的 工具。尤其对 c+的使用者,c# 没有带来任何新东西,因为.net 运行库在 c+中也可以使用,没有要换的绝对的理由。 2.32.3 sql server 2000 .1 sql 介绍介绍 sql(structured query language,结构查询语言)是一个功能强大的数据库 语言。sql 通常使用于数据库的通讯。最早的是 ibm 的圣约瑟研究实验室为其 关系数据库管理系统 system r 开发的一种查询语言,它的前身是 square 语言, 其后由 ibm 公司 1981 年推出。 ansi(美国国家标准学会)声称,sql 是关系数据库管理系统的标准语言。 sql 语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或 者从数据库中检索数据。使用 sql 的常见关系数据库管理系统有:oracle、 sybase、 microsoft sql server、 access、 ingress 等等。 虽然绝大多数的数据库系统使用 sql,但是它们同样有它们自立另外的专 有扩展功能用于它们的系统。但是,标准的 sql 命令,比如“select“、 “insert“、 “update“、 “delete“、 “create“和 “drop“常常被用于完成绝大多数数 据库的操作。 .2 microsoft sql server 2000 简介简介 microsoft sql server 2000 是目前使用最广泛的数据库,它与 windows 网 络操作系统的无缝集成,智能化的内容管理,强大的功能,使它得到广大用户 的喜爱。sql server 能与 microsoft 其他组件有机地结合,并充分利用它们提 供的服务或功能(如安全管理、事件日志、性能监视器、内存管理和异步处理等), 从而增强了 sql server 数据库系统的功能,同时占用较少的系统资源。另外, 用户可以使用 web 浏览器查询存储在 sql server 2000 数据库中的数据,且分 布式查询使得我们可以引用来自不同数据源的数据。sql server 2000 数据库 容量庞大,每个数据库中可创建多达 20 万个数据表,数据表中的记录的行数只 受服务器硬盘空间的限制。 此外,sql server 2000 数据库与普通的本地类型数据库系统(例如 vfp,dbase,paradox,access)等不同,本地类型的数据库系统只是 简单的文件存取,缺乏 sql server2000 等系统所拥有的诸如:数据完整性、安 全性、事务处理、网络多用户处理等必备的功能。 3 3 系统需求分析系统需求分析 3.13.1 用户需求用户需求 该系统的用户主要分为三种:未登录用户、登录用户、管理员。 未登录用户只能查看日历主界面和注册模块,登录用户可以使用除删除用 户和修改其他用户以外功能,管理员可以使用该桌面日历所有功能。 登录用户和系统管理员都是通过密码验证登录,当角色操作完成后点击 “注销”或“退出”按钮退出登录状态。 3.23.2 功能需求功能需求 系统功能模块主要包括以下几个方面:1,用户注册模块;2,登录模块; 3,日志提醒模块;4,节假日模块;5,日历主模块;6,用户信息、节假日信 息和日志信息都保存在数据库模块中.以下按照不同的用户对具体功能进行描述: .1 未登录用户未登录用户 未登录用户运行该系统后进入日历主界面,可以查看日历信息,可以查看 当前的系统时间,当点击日历上某一天时可以查看该天是否是已设置的节假日。 用户当点击“日志记录”或“节日设置”的时候,系统提示对话框显示“该用 户为未登录用户” ,点击确定按钮后进入登录界面,输入账号和密码后实现用户 登录。 未登录用户在日历主界面或登录界面上点击“用户信息”可以进入用户注 册界面,在用户注册界面可以实现用户的注册,可以查看其他已注册用户的基 本信息,可以对某用户名进行查找,但是不能删除其他用户或修改其他用户的 个人信息,当点击“删除”或“修改”按钮后有错误信息提示。 .2 普通登录用户普通登录用户 用户通过登录模块登录系统后进入日历主界面,可以查看日历信息,可以 查看当前的系统时间,当点击日历上某一天时可以查看该天是否是已设置的节 假日,可以访问节日设置模块并对节日进行添加和删除。 登录用户可以访问用户日志模块并对日志信息进行添加和删除,当系统时 间到达当前登录用户设置的日志提醒时间时,系统自动加载日志提示模块提醒 用户,用户可以点击日志提示界面上的“删除日志”按钮从数据库中删除该日 志信息。 登录用户可以在日历主界面上点击“用户信息”进入用户注册和信息界面, 在用户注册界面可以实现注册其他用户,可以查看其他已注册用户的基本信息, 可以修改当前登录用户的基本信息和密码,可以对某用户名进行查找,但是不 能删除其他用户或修改其他用户的个人信息。当点击“删除”或选择其他用户 后点击“修改”按钮,有错误信息提示。 登录用户在日历主界面上点击“用户注销”可以退出当前登录,并连接到 用户登录模块。 .3 管理员管理员 管理员除了可以实现登录用户的所有功能外,还有更高的权限,可以对其 他用户信息进行修改和删除。 可以对数据库进行直接操作,可以查看其他用户的资料等等。 但是管理员不能查看其他注册用户的登录密码和日志信息,因为密码在数 据库里是采用的 md5 加密,而日志信息也采用了 unicode 编码技术,在一定程 度上保护了其他注册用户的权益。 3.33.3 性能需求性能需求 该系统主要是为了方便用户进行日程管理,所以要求界面要简洁,操作要 方便。功能要完善,并且不能出现导致该系统崩溃的重大 bug。 因为该系统为多用户系统,所有用户资料均保存在数据库内,所以要求数 据库安全性要高,运行要稳定,执行速度快。为保护用户信息,各用户密码和 每日行程不能在数据库中以明文显示。 该系统基于 windows 操作平台,符合当前大多数人的操作系统,更加大众 化。 4 4 详细设计与实现详细设计与实现 4.14.1 系统功能系统功能设计设计 该桌面日历系统是基于 c/s 结构的应用程序系统,由 c#+sql 实现。客户 端程序由 visual studio 2005 c#制作,用于与用户交互;后台数据库使用 sql 2000,由带有逻辑结构关联的表组构成。下图为系统功能结构示意图: 登录用户 普通用户管理员 删除用户资料 修改用户信息 注册新用户 使用日志记录 使用节假日模块 使用日志提醒 使用日历主模块 未登录用户 图 4-1 用户功能示意图 如图 4-1 所示,按登录与否可分为登录用户和未登录用户,其中登录用户 又可分为管理员和普通用户,各类别的用户拥有对该系统中各功能的访问使用 权限。 4.24.2 数据库设计数据库设计 根据需求分析,该系统后台数据库共分为 4 个表,以下分别给出各个数据 库表的简单描述。 userlogin用户登录表用于存储用户登录信息,以供登录密码验证,并 分配用户编号。该表分为 3 个字段,以 usernumber 字段为主键分别与 userinfo 和 msginfo 表相关联,各字段的属性和作用如表 4-1 表 4-1:用户登录表 userinfo用户基本信息表用于存储用户的基本信息,如年龄、性别等。 该表分为 6 个字段,其中 usernumber 作为外键与 userlogin 表相关联,各字段 的属性和作用如表 4-2 表 4-2:用户基本信息表 msginfo用户日志信息表用于储存各用户设置的日志信息,以及系统自 动提醒用户的时间。该表分为 4 个字段,其中 usernumber 作为外键与 userlogin 表相关联,各字段的属性和作用如表 4-3 表 4-3:用户日志信息表 jinfo节假日信息表用于储存节假日信息,没有与其他表相关联。该表 分为 4 个字段,其中 jid 作为该表的主键,各字段的属性和作用如表 4-4 表 4-4:节假日信息表 字段名字段类型是否主键说明 usernamevarchar否定义用户登录名 userpwdvarchar否定义用户登录密码 usernumberint是定义唯一标识的用户编号 字段名字段类型是否主键说明 usernumberint是唯一标识的用户编号 userageint否定义用户的年龄 usersexint否定义用户性别,1 为男,2 为女 useraddressvarchar否定义用户的地址,允许为空 usertelvarchar否定义用户的电话号码,允许为空 useremailvarchar否定义用户的 e-mail 地址,允许为空 字段名字段类型是否主键说明 msgidint是唯一标识的用户日志信息编号 msginfotextvarchar否定义用户的日志信息内容 msgdatetimedatatime否定义用户的日志提醒时间 usernumberint是唯一标识的用户编号 字段名字段类型是否主键说明 jidint是唯一标识的节假日编号 jnamevarchar否定义的节假日名称 jdatetimemint否定义节假日的月份 jdatetimedint否定义节假日的日期 4.34.3 各表之间的关系图各表之间的关系图 该关系图是由 sql 数据库的“新建关系图向导”自动生成。 userlogin(用户登录表)、userinfo(用户基本信息表)和 msginfo(日志信息表) 通过 usernumber(用户编号)相关联,其中 userlogin(用户登录表)的 usernumber 为 pk(主键) ,userinfo(用户基本信息表)和 msginfo(日志信息表)的 usernumber 为 fk(外键)。 jinfo(节假日信息表)相对其他三张表独立,没有关联关系。 图 4-2 数据库表关系图 4.44.4 系统功能实现系统功能实现 根据系统功能需求分析,系统主要划分为以下六个模块: .1 用户登录模块用户登录模块 功能说明:通过用户输入的用户名、密码与数据库 userlogin 表的 username 字段和 userpwd 字段相比较判断其有效性,来实现用户的登录。 每次判断用户密码时将密码采用 md5 加密后与数据库 userlogin 表的 userpwd 字段相比较。如是有效用户则显示“登录成功”消息框,点击“确定 后”登录到日历主界面,并设置 username 为当前登录用户名。如是无效用户则 显示“登录失败”消息框,并提示重新输入用户名和密码。 以下为用户登录密码验证部分的伪代码: if (密码长度 = 6 将新用户信息插入到 userlogin 表中,并为该用户分配一个编号; else 输出提示错误信息; .3 日历主模块日历主模块 功能说明:显示每一年的日历,显示当前系统时间,并根据数据库中的节 假日设置显示选中日期的节日信息,是连接其他系统模块的入口。 该界面使用 c#自带的 monthcalendar 控件来显示每一年的日历,将当前的 系统时间显示在 label 静态文本框里,并根据数据库中的节假日设置显示选中 日期的节日信息。 图 4-4 日历主界面 当用户点击“节日设置”按钮或“日志记录”按钮时,先判断 username 是 否为空。如果为空则提示错误信息“用户尚未登录” ,并打开登录界面。如果 username 不为空则直接打开节假日设置界面或日志设置界面。 此模块还根据当前系统时间和当前登录用户的日志信息来确定是否创建日 志提醒窗体。 当用户点击“用户信息”按钮时,直接打开用户注册界面。当用户点击 “注销”按钮时,将 username 设置为空,并打开登录界面。当用户点击“系统 退出”按钮时,退出桌日历系统,关闭所有窗体并释放占有资源。 以下为部分伪代码。 / 当当前系统时间到达用户设置的日志响应时间时的事件处理伪代码 声明一个空字符串 msg; if (当前登录用户名 username 不为空) 连接数据库,从数据库 msginfo 表中读取出当前登录用户的日志信息; while (用户设置了当前时间的日志信息) 将该日志信息的内容放入 msg 中; if (日志信息不为空) 以当前登录用户名为参数创建日志提醒模块窗体; if (是否有模式地显示窗体 != true) 显示窗体的文本信息 = 采用 unicode 解码后的 msg; 显示窗体的高度 = 获取的屏幕分辨率高度 + 10; 显示窗体的左边框 = 屏幕分辨率宽度 显示窗体的宽度 + 5; 显示窗体的生存时间 = true; 显示日志提醒窗体; / 显示当天节日伪代码 文本框文本 = “今天不是节日“; 设置用于数据库查询命令的参数数组,并将数组第一个元素设置为“月” ,数组第 2 个 元素设置为“日”; 从数据库 msginfo 表中读取选定日期的节假日信息; while (是否有该条记录 = true) 日历主窗体的文本框文本 = “今天是:“+当天节假日名称; .4 日志记录模块日志记录模块 功能说明:用于根据当前登录的用户名,从数据库的 msginfo 表中读出当 前登录用户的所有日志信息并显示在 datagridview 中。并根据用户需要进行添 加和删除日志信息。 图 4-5 日志记录模块界面 当点击“添加”按钮时,系统将用户输入的日志信息和选择的提醒日期时 间储存到数据库的 msginfo 表中。为保护用户的日志信息,msginfo 表 msginfotext 字段的内容采用 unicode 编码后储存,从数据库中读出时采用 unicode 解码后显示。 当点击“删除”按钮时,系统按照用户选择的日志信息的编号 msgid 来从 数据库中删除该条日志信息。 以下为部分伪代码。 / unicode 编码,用于将用户输入的日志信息采用编码形式储存在数据库中 设置字符串型 encode 存放编码后的字符串; 将字符串 code 按字节进行编码,并存放在数组中; try 将数组中每一个字节型元素转换为字符串型; catch 处理异常; 返回 encode; / unicode 解码,用于将数据库内的日志信息正常显示在 datagridview 中,与编码过程 相反 设置字符串型 decode 存放解码后的字符串; 将要解码的字符串型 code 转换为字节型; try 将 code 信息解码并转换为字符串型并存放在 decode 中; catch 处理异常; 返回 decode; / 删除日志按钮事件的伪代码,其他按钮事件与此类似。 if (当前日志 id 为空) messagebox.show(“请先选择您要删除的日志!“); else 连接数据库,根据 msgid 删除日志信息; if (删除成功) messagebox.show(“日志删除成功!“); 重新显示 msginfo 表内容; else messagebox.show(“您的操作有错误!“); .5 日志提醒模块日志提醒模块 功能说明:当系统时间到达当前登录用户设置的日志提醒时间时,从数据 库的 msginfo 表中读取出当前登录用户的当前系统时间的日志信息,并显示在 弹出的窗体中。当用户点击“删除”按钮时,系统从 msginfo 表中删除该条日 志信息。 以下为部分代码。 /当点击“删除日志”按钮后的事件处理代码 private void btndeletemsg_click(object sender, eventargs e) /设置数据库操作语句sql string sql = “delete from msginfo where msgid=“ + msgid + “ and usernumber=(select usernumber from userlogin where username=“ + username + “)“; /连接数据库并执行sql语句 sqlcondao.sqlhelper.executenonquery(sqlcondao.sqlhelper.connectionstringlocal, commandtype.text, sql); this.close(); .6 节假日设置模块节假日设置模块 功能说明:从数据库的 jinfo 表中读出当前设置的所有节假日信息并显示在 datagridview 中。并根据用户需要进行节假日信息的添加和删除。 图 4-6 节假日模块界面 当用户通过下拉列表框选择好日期,并输入节假日名称后点击“添加”按 钮时,系统将日期和节假日名称储存到数据库的 jinfo 表中。当点击“删除”按 钮时,系统按照用户选择的节假日信息的编号 jid 来从数据库中删除该条节假 日信息。 以下为部分代码。 / 点击“添加”按钮的事件处理 private void btnadd_click(object sender, eventargs e) /将 combox 内选择的日期分别储存在 month 和 day 整型变量中 int month = int.parse(this.cmbmonth.selecteditem.tostring(); int day = int.parse(this.cmbday.selecteditem.tostring(); if (this.txtjname.text.trim().length = 2) /设置数据库添加记录 sql 语句 string sql = “insert into jinfo values(“ + this.txtjname.text.trim() + “,“+month+“,“+day+“)“; /如果 sql 语句执行成功 if (sqlcondao.sqlhelper.executenonquery(sqlcondao.sqlhelper.connectionstringlocal, commandtype.text, sql) 0) messagebox.show(“节假日添加成功!“); /重新显示数据库内的节假日信息 getjinfo(); else messagebox.show(“您的操作有错误!“); else messagebox.show(“节假日的输入格式不正确!请重新输入!“); 5 5 系统测试系统测试 5.15.1 测试环境测试环境 本系统测试环境;cpu:amd 2500+ ,内存:ddr2 512m, sql server 2000,win2000/xp,2003 下均测试通过.建议用户 cpu piii,内存 256m 及以上, 数据库版本 sql server 2000,win2000pro/xp,2003,win2000 server 及以上软硬件平台使用。该测试以程序的功能实现是否符合设计标准 和程序是否存在重大 bug 为标准。 5.25.2 测试结果测试结果 由于条件所限,本测试仅对该系统进行功能测试。 经测试,系统在上述软硬件环境下,对各模块的功能均能测试通过,各逻 辑流程均符合设计需要。 以下为部分测试截图以及简要说明: 图 5-1 密码错误提示信息 在登录模块中,随机输入几组用户名和密码进行测试。经测试,其处理流 程与代码设计里的处理流程一致。当输入的用户密码与数据库内该用户的密码 不一致时,提示用户的错误信息,如图 5-1。当输入信息与数据库信息一致时才 登录成功。 一开始设计时忘记了密码在数据库中是采用 md5 加密后储存的,当测试 验证登录密码时没有采用 md5 加密就直接进行比较,导致一直登录不上去。 后将密码加密后再比较就正确登录了。 图 5-2 未登录用户不能访问日志模块 该系统采用多用户模式,并对各用户的访问权限进行了设置,未登录用户 只能访问登录模块、注册模块以及日历主模块。因此,当未登录用户点击日历 主模块上的“日志记录”按钮时,系统提示用户先登录该系统才能访问日志模 块,如图 5-2 所示。 图 5-3 用户名不得重复注册 图 5-4 非管理员不得删除用户资料 在用户注册模块中,对注册时的资料输入进行条件判断,并提示出错误信 息,图 5-3 所示。如用户名是否重复;密码是否为空等等,避免了数据库中的 信息混乱。 对于此模块中的“修改”和“删除”按钮也进行了一定的权限设置。如只 有管理员才能删除用户资料,如图 5-4 所示;未登录用户不能修改和删除资料; 登录用户只能修改自己的资料而不能修改他人的等等。 在对此模块进行设计时,一开始在显示用户信息的 datagridview 中,系统 会自动添加一行空行。当用户点击该空行时,系统会出错关闭。经检查,原来 是设计当用户点击 datagridview 某行时,会将该行的信息显示到下边的其他控 件中,如 label、combox 等。而空行却带入了空字段,导致程序错误。所以, 在显示 datagridview 信息的代码中加入了 allowusertoaddrows = false,就不 会在 datagridview 加上系统自动生成的空行了。其后的日志模块了节假日模块 也采用了同样的方法去掉该空行。 图 5-5 删除日志错误信息 图 5-4 节假日格式不正确 在日志记录系统和节假日管理系统中,随机输入一些信息来验证该模块的 判断逻辑是否符合设计要求。 如:未选择日志信息就点“删除”按钮;输入不合规范的节假日名称等等。 经测试,系统实际的处理顺序完全符合设计,如图 5-4 和图 5-4。 图 5-5 日志提醒界面 随机在某登录用户的日志记录模块中输入一条日志,并设置提醒时间。当 系统时间到达该日志的提醒时间时,系统能正确发出提示信息,如图 5-5 所示, 时间也非常准确。 另外还测试了,当某用户登录该系统后,是否会提示其他用户的登录信息。 测试结果为日志提醒模块只会提示当前登录用户的日志信息,而不会提示其他 用户的。这也完全符合该系统的设计要求。 最初设计时因为没有考虑到将用户日志信息进行 unicode 编码后储存,所 以在日志提醒模块中采用了根据日志文本信息作为条件来删除数据库资料。但 后来将日志信息采用 unicode 编码储存后,该提醒模块在测试时就出现了很多 问题,如直接显示数据库内未进行解码的日志信息;不能正常删除日志等。后 将该模块加入 unicode 解码代码,将日志信息进行解码后就能正常输出了。在 删除日志时,将采用的以日志文本信息作为数据库删除条件,改为以该日志编 号和登录用户名作为条件进行数据库操作就能正常删除用户日志。 5.35.3 系统的安全系统的安全性测试性测试 .1 密码的安全性密码的安全性 该系统为多用户系统,所有用户的登录密码都保存在数据库中,以供用户 登录时的密码比较。如果密码以明文形式在数据库中储存,必定会对用户的资 料安全造成很大的隐患。 所以,该系统将用户的密码进行 md5 加密后再存入数据库中。当用户登 录时也采用 md5 将用户输入的密码加密后与数据库中的密码信息比较。采用 md5 算法转换后的数据是伪随机的,而且该算法是一个不可逆的字符串变换算 法,没有办法对已加密的数据进行解密。 md5 算法在密码的安全方面提供了非常好的保障。 .2 日志信息的安全性日志信息的安全性 用户的日志信息在数据库中采用 unicode 编码进行储存。当用户登录该系 统后,日志模块将数据库内该用户的日志信息经过 unicode 解码后再输出。 字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算 机的内码。unicode 是一种字符编码方法,由国际组织设计,可以容纳全世界 所有语言文字的编码方案。 虽然 unicode 编码不像 md5 加密那样安全可靠,但是因为 unicode 编码可 逆,而且储存在数据库中的信息并不是用户的原始信息,所以在一定程度上也 对用户行程进行了保护。 .3 数据库的安全数据库的安全性性 在数据库的安全方面,主要依赖于 sql server 2000 自身的安全性。在使用 时,定期对数据库进行备份,以便数据库发生错误时将数据库恢复到之前某一 已知的正确状态,实现数据库的再次正确使用。 结结 论论 本次毕业设计完成了预定任务,包括用户登录、用户注册、日历、日志记 录、日志提醒、节假日设置等功能。 通过此次毕业设计,虽说不能完全掌握 c#的编程技巧,但基本的编程思路 还是逐渐地巩固起来。以前在课堂上学习的理论知识派上了用场,在程序的实 际设计和实现过程中,逐步地将一些理论知识应用到开发中来,比如函数的调 用、类与对象、方法的重载和引用等,并简单接触到了数据库的设计与操作。 个人感觉其中最大的收获就是学习如何在程序开发过程中发现问题,查阅 资料并解决问题,养成独立思考的能力。学习如何利用网络寻找解决问题的方 法,这种方法在今后的工作和学习生活中能让事情变得事半功倍。 在整个程序的设计与实现过程中,也发现自身存在的不少问题。特别是在 实际动手编写代码方面很欠缺,一些本来很简单的问题却要去花费大量的时间 来解决。理论上明白的方法却不知道该如何去实现,今后要多加练习动手能力。 参考文献参考文献 1 karli watson,christian nagel.c#入门经典(第 3 版)m.齐立波译.北京:清华大学 出版社,2006。 2 christian nagel,bill evjen,jay glynn.c#高级编程(第 4 版)m.李敏波译.北京: 清华大学出版社,2006。 3 单银根,黎连业.c#语言及程序设计m.北京:北京希望电子出版社,2001。 4 前沿软件研究室,郑小平.visual c#.net 开发实践m.北京:人民邮电出版社, 2001。 5 郑宇军.c#2.0 程序设计教程m.北京:清华大学出版社,2004。 6 李代平.中文 sql server2000 数据库系统管理m.北京:冶金工业出版社, 2003。 7 方睿,刁仁宏,吴四九.网络数据库原理及应用m.成都:四川大学出版社, 2005。 致致 谢谢 本文是在张路桥老师的热情关心和指导下完成的,他渊博的知识和严谨的 治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示 我最衷心的感谢! 在论文完成过程中,本人还得到了其他老师和一些同学的热心帮助,本人 向他们表示深深的谢意! 最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢! 作者简介 姓 名:魏键 性别: 男 出生年月:1984 年 3 月 13 日 民族: 汉 e-mail: 声声 明明 本论文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程学院网络工程 系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研 究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使 用过的材料。除非另有说明,本文的工作是原始性工作。 关于学位论文使用权和研究成果知识产权的说明: 本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括: (1)学校有权保管并向有关部门递交学位论文的原件与复印件。 (2)学校可以采用影印、缩印或其他复制方式保存学位论文。 (3)学校可以学术交流为目的复制、赠送和交换学位论文。 (4)学校可允许学位论文被查阅或借阅。 (5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后 遵守此规定) 。 除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息 工程学院。 特此声明! 作者签名: 2007 年 06 月 日 “are you hungry now?“ “no, i am tired and lazy now; if i pursue you i will not catch you, and if i catch you-through your own slowness and clumsiness-i will not kill you, and if i kill you i will not eat you.“ nicholas had begun to back away, and at the last; words, realizing that they were a signal, he turned and began to run, splashing through the shallow water. ignacio ran after him, much helped by his longer legs, his hair flying behind his dark young face, his square teeth-each white as a bone and as big as nicholass thumbnail-showing like spectators who lined the railings of his lips. “dont run, nicholas,“ dr. island said with the voice of a wave. “it only makes him angry that you run.“ nicholas did not answer, but cut to his left, up the beach and among the trunks of the palms, sprinting all the way because he had no way of knowing ignacio was not right behind him, about to grab him by the neck. when he stopped it was in the thick jungle, among the boles of the hardwoods, where he leaned,.; out of breath, the thumping of his own heart the only . sound in an atmosphere silent and unwaked

温馨提示

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

评论

0/150

提交评论