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

下载本文档

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

文档简介

毕业设计(论文)桌面日历系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:论文提交日期:桌面日历系统的设计与实现摘要自上个世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和快捷,也使越来越多的人依赖于电脑办公。而传统的日程记事本逐渐显现出在当今时代的不足和局限性,比如不便携带、不便查阅、不能自动提醒等等,电脑桌面日历由此孕育而生。很快,桌面日历就以其方便的日期查询、个性化的日程安排、精确的闹钟提醒与配套的日志系统、美观的界面设计,受到广大电脑办公者的喜爱。本设计就是针对当前网络上众多的桌面日历,综合其各项基本功能来开发一套属于自己的个性化日历日志系统。本设计主要采用C#+SQL的C/S设计模式,来实现不同用户的登录、日程编辑、日程提醒、日期查询、节假日管理等工作。方便了使用者对每日行程的掌握,也保护了各使用者之间的私人信息。本设计按照功能模块分为用户登录模块、用户注册、日历和时间模块、节假日模块、日程行程模块、自动提醒模块、数据库模块。本文详细地介绍了该日历日程系统的功能需求、系统设计和具体实现。并简要介绍了系统开发采用的过程及方法。关键词:桌面日历;日程;多用户DesignandDevelopmentofDesktopCalendarSystemAbstractAsPCbecomesmoreandmorepopularsincelastcentury,people’sworkandlifebecomemoreandmoreconvenient,andpeoplerelyincreasinglyoncomputers.However,theconventionalnotepadhasrevealeditsdeficienciesandlimitations,suchasinconvenience.Andconventionalnotepadcannotalarmautomaticallyalso.So,thedesktopcalendarappears.Becauseofitsconvenientdateinquiry,individualizedschedulemanagementsystem,accurateschedulealarmsystemandfriendlyuserinterface,desktopcalendarishighlyestimatedamongcomputerworkers.Combiningthefunctionsofanumberoftoday’sdesktopcalendars,thisdesignaimstodevelopanindividualdesktopcalendarandschedulesystem.ItisdevelopedbyC#andSQL,basedonC/S.Itsfunctionsinclude“multi-userlogin”,“schedulemanagement”,“schedulealarm”,“dateinquiry”,“holidaymanagement”andsoon.Thecalendarisconvenientforuserstocheckthescheduleeveryday,andalsocanprotecteachuser'sprivateinformation.Thecalendarincludes“userlogin”module,“userregistryandedition”module,“dateandtime”module,“holidaymanage”module,“schedulemanage”module,“schedulealarm”moduleand“database”module.Thisarticledescribesthefunctionalrequirement,systemdesignanddetailimplementation.Italsodescribesthemethodsanddevelopmentprocessofthissysteminbrief.Keywords:DesktopCalendar;Schedule;MultipleUsers

目录论文总页数:23页1引言 12相关理论基础 12.1C/S模式 22.2VisualStudio2005C# 2C#的介绍 2C#的弱点 32.3SQLServer2000 3SQL介绍 3MicrosoftSQLServer2000简介 43系统需求分析 43.1用户需求 43.2功能需求 43.2.1未登录用户 4普通登录用户 5管理员 53.3性能需求 54详细设计与实现 64.1系统功能设计 64.2数据库设计 64.3各表之间的关系图 74.4系统功能实现 8用户登录模块 8用户注册模块 9日历主模块 11日志记录模块 12日志提醒模块 14节假日设置模块 145系统测试 155.1测试环境 155.2测试结果 165.3系统的安全性测试 19密码的安全性 19日志信息的安全性 19数据库的安全性 19结论 20参考文献 20致谢 22声明 231引言自上个世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和快捷,也使越来越多的人依赖于电脑办公。而传统的日历和日程记事本逐渐显现出在当今时代的不足和局限性,比如传统日历或记事本一般为纸制品,加大了对森林资源的需求,与当今提倡绿色环保的思想相背;传统记事本不方便携带、记录和修改;一般不带有日历,即使有也仅仅局限于某一年的日历,不方便使用者查询日期;使用日历和记事本当查询某天的日程信息的时候非常烦琐,而且对该天前后的日程信息也很不好把握;没有自动提醒功能,不能对使用者的行程进行很好的规划和安排。总之,传统的日历和记事本都不能对使用者的时间进行系统化的规划。针对以上的传统日历和记事本的局限性,电脑桌面日历孕育而生。本文所介绍的桌面日历系统,就是专门为那些常年习惯于电脑办公,喜欢对自己的行程进行系统化管理的人们所开发的一款桌面软件。该软件的优点如下:1,将日历和记事本集成到一款软件上,让用户在记录和查询日志的时候也能方便得查阅日期情况。2,日志行程的自动提醒,该系统能根据用户自己设置的行程提醒时间来提醒用户,时差是以毫秒级计算,非常之精确。3,人性化的节假日设置,可以根据用户的喜好来记录节假日和一些重要的日子,并在日历主界面上显示当天的节假日信息。4,借助数据库可以方便得对用户资料和信息进行存取,也有效得保护了各个用户之间的信息。本文介绍了C/S模式下的桌面日历系统的设计以及开发过程,主要包括了以下几个方面的内容:1,简要介绍C#和SQL知识。2,介绍该系统的前期设计过程。3,介绍该系统的具体代码实现过程。4,介绍开发过程中遇到的各种技术问题以及解决方案。计算机的发明应用,被视为人类的第三次重大的科学技术革命,是一次飞跃。过去的革命最高成就就是“用机器制造机器”,是手的延长,而计算机的出现却能做到“用机器控制机器”,是脑的延伸,是提高生产效率的主要工具。通过以上分析不难得出结论,在计算机日益普及的今天,很多传统的东西必须与电脑相结合才能进一步发展。这样一套桌面日历系统,也是让传统日历和记事本继续生存并发展的重要一步。2相关理论基础该系统采用的是C/S模式,设计平台为VisualStudio2005C#,后台数据库系统为SQLServer2000。下面简单介绍下:2.1C/S模式C/S全名为Client/Server应用体系,又称客户端/服务器模式。Client使用各项操作的用户界面接口来处理分析和数据输入/输出;Server通常采用高性能的PC机、工作站或小型机,并采用大型的数据库系统,如Oracle、SQLServer等,主要实现数据的存储功能,以及相关的后台业务逻辑流程处理。C/S模式的优点在于:能充分发挥客户端PC机的处理能力,许多的工作可以交由客户端处理后再提交给服务器,所以客户端的响应速度非常快。但C/S模式也有一些缺点,比如:客户端需要安装专门的客户端软件;维护和升级的成本很高;对客户端的操作系统也有一定的限制。 CLIENT SERVERGUI界面GUI界面数据处理数据处理数据存储图1-1C/S结构示意图2.2VisualStudio2005C#2.2.1C#的介绍在过去的二十年里,C和C++已经成为在商业软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的效率。许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。对于C/C++用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。C#是由微软开发的一种全新的、面向对象的编程语言,作为VisualStudio中的一部分推出。既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。C#语言将在保持C/C++灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。C#是种非常类似于JAVA的语言,适用于各种操作系统,并且与Windows紧密地结合在一起。微软称C#是由C和C++派生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,C#意在综合VisualBasic的高效率和C++的强大功能。事实上,C#将是完全依靠Windows的最完美产物。那些困绕JavaSDK,MFC和SET的数据库已成为过去。你想放入C#的任何东西(无论何种语言),只要在Windows的.NET子系统下建立和包装后都可以使用Windows的运行库。2.2.2C#的弱点首先,在大量的现有Windows平台上,C#的程序还不能运行,因为C#程序需要.NET运行库为基础,而.NET运行库将作为新一代的Windows(Whistler)的一部分发行,或以ServicePack的形式提交给WindowsMe和Windows2000用户。所以在近期,C#会主要在服务器上得到应用。其次,C#能够使用的组件和库还只有.NET运行库等很少的选择,没有丰富的第三方软件库可用,这需要有一个过程,同时各软件开发商的支持也很重要。第三,JAVA的成功因素里有一些是反微软阵营的吹捧,虽然“只写一次,到处运行”只是一句口号,但毕竟已经是一种成熟的技术。而C#的鼓吹者目前只有名声不佳的微软,且只能运行在Windows上。实际上这两种语言都不是不可替代的,理智的说,对软件开发商而言,什么工具用的最熟,那就是最好的工具。尤其对C++的使用者,C#没有带来任何新东西,因为.NET运行库在C++中也可以使用,没有要换的绝对的理由。2.3SQLServer2000SQL介绍SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SystemR开发的一种查询语言,它的前身是Square语言,其后由IBM公司1981年推出。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingress等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。MicrosoftSQLServer2000简介MicrosoftSQLServer2000是目前使用最广泛的数据库,它与Windows网络操作系统的无缝集成,智能化的内容管理,强大的功能,使它得到广大用户的喜爱。SQLServer能与Microsoft其他组件有机地结合,并充分利用它们提供的服务或功能(如安全管理、事件日志、性能监视器、内存管理和异步处理等),从而增强了SQLServer数据库系统的功能,同时占用较少的系统资源。另外,用户可以使用Web浏览器查询存储在SQLServer2000数据库中的数据,且分布式查询使得我们可以引用来自不同数据源的数据。SQLServer2000数据库容量庞大,每个数据库中可创建多达20万个数据表,数据表中的记录的行数只受服务器硬盘空间的限制。此外,SQLServer2000数据库与普通的本地类型数据库系统(例如VFP,DBASE,PARADOX,ACCESS)等不同,本地类型的数据库系统只是简单的文件存取,缺乏SQLServer2000等系统所拥有的诸如:数据完整性、安全性、事务处理、网络多用户处理等必备的功能。3系统需求分析3.1用户需求该系统的用户主要分为三种:未登录用户、登录用户、管理员。未登录用户只能查看日历主界面和注册模块,登录用户可以使用除删除用户和修改其他用户以外功能,管理员可以使用该桌面日历所有功能。登录用户和系统管理员都是通过密码验证登录,当角色操作完成后点击“注销”或“退出”按钮退出登录状态。3.2功能需求系统功能模块主要包括以下几个方面:1,用户注册模块;2,登录模块;3,日志提醒模块;4,节假日模块;5,日历主模块;6,用户信息、节假日信息和日志信息都保存在数据库模块中.以下按照不同的用户对具体功能进行描述:未登录用户未登录用户运行该系统后进入日历主界面,可以查看日历信息,可以查看当前的系统时间,当点击日历上某一天时可以查看该天是否是已设置的节假日。用户当点击“日志记录”或“节日设置”的时候,系统提示对话框显示“该用户为未登录用户”,点击确定按钮后进入登录界面,输入账号和密码后实现用户登录。未登录用户在日历主界面或登录界面上点击“用户信息”可以进入用户注册界面,在用户注册界面可以实现用户的注册,可以查看其他已注册用户的基本信息,可以对某用户名进行查找,但是不能删除其他用户或修改其他用户的个人信息,当点击“删除”或“修改”按钮后有错误信息提示。普通登录用户用户通过登录模块登录系统后进入日历主界面,可以查看日历信息,可以查看当前的系统时间,当点击日历上某一天时可以查看该天是否是已设置的节假日,可以访问节日设置模块并对节日进行添加和删除。登录用户可以访问用户日志模块并对日志信息进行添加和删除,当系统时间到达当前登录用户设置的日志提醒时间时,系统自动加载日志提示模块提醒用户,用户可以点击日志提示界面上的“删除日志”按钮从数据库中删除该日志信息。登录用户可以在日历主界面上点击“用户信息”进入用户注册和信息界面,在用户注册界面可以实现注册其他用户,可以查看其他已注册用户的基本信息,可以修改当前登录用户的基本信息和密码,可以对某用户名进行查找,但是不能删除其他用户或修改其他用户的个人信息。当点击“删除”或选择其他用户后点击“修改”按钮,有错误信息提示。登录用户在日历主界面上点击“用户注销”可以退出当前登录,并连接到用户登录模块。管理员管理员除了可以实现登录用户的所有功能外,还有更高的权限,可以对其他用户信息进行修改和删除。可以对数据库进行直接操作,可以查看其他用户的资料等等。但是管理员不能查看其他注册用户的登录密码和日志信息,因为密码在数据库里是采用的MD5加密,而日志信息也采用了Unicode编码技术,在一定程度上保护了其他注册用户的权益。3.3性能需求该系统主要是为了方便用户进行日程管理,所以要求界面要简洁,操作要方便。功能要完善,并且不能出现导致该系统崩溃的重大BUG。因为该系统为多用户系统,所有用户资料均保存在数据库内,所以要求数据库安全性要高,运行要稳定,执行速度快。为保护用户信息,各用户密码和每日行程不能在数据库中以明文显示。该系统基于Windows操作平台,符合当前大多数人的操作系统,更加大众化。4详细设计与实现4.1系统功能设计该桌面日历系统是基于C/S结构的应用程序系统,由C#+SQL实现。客户端程序由VisualStudio2005C#制作,用于与用户交互;后台数据库使用SQL2000,由带有逻辑结构关联的表组构成。下图为系统功能结构示意图:登录登录用户普通用户管理员删除用户资料修改用户信息注册新用户使用日志记录使用节假日模块使用日志提醒使用日历主模块未登录用户图4-1用户功能示意图如图4-1所示,按登录与否可分为登录用户和未登录用户,其中登录用户又可分为管理员和普通用户,各类别的用户拥有对该系统中各功能的访问使用权限。4.2数据库设计根据需求分析,该系统后台数据库共分为4个表,以下分别给出各个数据库表的简单描述。UserLogin——用户登录表用于存储用户登录信息,以供登录密码验证,并分配用户编号。该表分为3个字段,以UserNumber字段为主键分别与UserInfo和MsgInfo表相关联,各字段的属性和作用如表4-1表4-1:用户登录表字段名字段类型是否主键说明UserNamevarchar否定义用户登录名UserPwdvarchar否定义用户登录密码UserNumberint是定义唯一标识的用户编号UserInfo——用户基本信息表用于存储用户的基本信息,如年龄、性别等。该表分为6个字段,其中UserNumber作为外键与UserLogin表相关联,各字段的属性和作用如表4-2字段名字段类型是否主键说明UserNumberint是唯一标识的用户编号UserAgeint否定义用户的年龄UserSexint否定义用户性别,1为男,2为女UserAddressvarchar否定义用户的地址,允许为空UserTelvarchar否定义用户的号码,允许为空UserEmailvarchar否定义用户的E-Mail地址,允许为空表4-2:用户基本信息表MsgInfo——用户日志信息表用于储存各用户设置的日志信息,以及系统自动提醒用户的时间。该表分为4个字段,其中UserNumber作为外键与UserLogin表相关联,各字段的属性和作用如表4-3字段名字段类型是否主键说明MsgIDint是唯一标识的用户日志信息编号MsgInfoTextvarchar否定义用户的日志信息内容MsgDateTimedatatime否定义用户的日志提醒时间UserNumberint是唯一标识的用户编号表4-3:用户日志信息表JInfo——节假日信息表用于储存节假日信息,没有与其他表相关联。该表分为4个字段,其中JID作为该表的主键,各字段的属性和作用如表4-4表4-4:节假日信息表字段名字段类型是否主键说明JIDint是唯一标识的节假日编号JNamevarchar否定义的节假日名称JDateTimeMint否定义节假日的月份JDateTimeDint否定义节假日的日期4.3各表之间的关系图该关系图是由SQL数据库的“新建关系图向导”自动生成。UserLogin(用户登录表)、UserInfo(用户基本信息表)和MsgInfo(日志信息表)通过UserNumber(用户编号)相关联,其中UserLogin(用户登录表)的UserNumber为PK(主键),UserInfo(用户基本信息表)和MsgInfo(日志信息表)的UserNumber为FK(外键)。JInfo(节假日信息表)相对其他三张表独立,没有关联关系。图4-2数据库表关系图4.4系统功能实现根据系统功能需求分析,系统主要划分为以下六个模块:4.4.1用户登录模块功能说明:通过用户输入的用户名、密码与数据库UserLogin表的UserName字段和UserPwd字段相比较判断其有效性,来实现用户的登录。每次判断用户密码时将密码采用MD5加密后与数据库UserLogin表的UserPwd字段相比较。如是有效用户则显示“登录成功”消息框,点击“确定后”登录到日历主界面,并设置username为当前登录用户名。如是无效用户则显示“登录失败”消息框,并提示重新输入用户名和密码。以下为用户登录密码验证部分的伪代码:if(密码长度<5){ MessageBox.Show("密码的长度不对,没有小于5位的密码,请重新输入!");}elseif(密码长度<=0){ MessageBox.Show("密码不能为空,请重新正确的输入您的登录密码!");}else{ if(连接数据库并将用户名和采用MD5加密后的密码与数据库中资料对比==true) { MessageBox.Show("登录成功!"); 关闭登录界面并释放资源; 将当前登录的用户名赋值到其他窗体; 打开当前登录用户的日志信息窗体; } else { MessageBox.Show("您输入的密码有错误请重新输入!"); 清除登录密码框内的字符并设置为焦点; }}4.4.2用户注册模块功能说明:用于用户注册,资料修改,用户删除和查询。注册界面将从数据库中读取出的所有用户信息显示出来。图4-3注册模块界面用户注册时根据用户所填写的信息存入数据库。需要判断用户名是否合法,用户名是否重复,两输入密码是否大于6位并相同,是否已选择年龄。不合法的注册信息显示错误消息框,并提示重新输入。合法的用户名和密码保存在UserLogin表中,用户名采用明文保存,密码采用MD5加密保存,并为该用户分配一个UserNumber的整型编号。合法的用户个人资料保存在UserInfo表中,并使用UserNumber字段与UserLogin表相关联。资料修改时根据选中的用户UserNumber修改用户信息,未注册用户不能修改用户信息,注册用户只能修改自己的信息,管理员可以修改所有用户信息。修改用户信息时也要判断合法性,并将合法信息存放到相应的表中。用户删除只有管理员可以访问,根据选中的用户UserNumber删除用户信息,并将数据库中MsgInfo表、UserInfo表和UserLogin表中该用户的信息全部删除。用户查询可以根据输入的用户名查询显示出的用户,并将该用户所在行选中。以下为部分代码和伪代码://MD532位加密代码 staticstringUserMd5(stringstr) { stringcl=str; stringpwd=""; MD5md5=MD5.Create();//实例化一个md5对像 //加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 //通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 for(inti=0;i<s.Length;i++) { //将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 pwd=pwd+s[i].ToString("X"); } returnpwd;}//以下为点击“添加”按钮后的事件处理伪代码,其他如“删除”和“修改”和此处理流程相似。if(新用户名不为空){从数据库的UserLogin表中搜索该新用户名;if(数据库中没有找到该用户名&&密码不为空&&密码长度>=6&&2次输入的密码相同&&性别选择代码>0){ 连接数据库; 将新用户信息插入到UserLogin表中,并为该用户分配一个编号; else { 输出提示错误信息; }}4.4.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.4.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("您的操作有错误!"); }}4.4.5日志提醒模块功能说明:当系统时间到达当前登录用户设置的日志提醒时间时,从数据库的MsgInfo表中读取出当前登录用户的当前系统时间的日志信息,并显示在弹出的窗体中。当用户点击“删除”按钮时,系统从MsgInfo表中删除该条日志信息。以下为部分代码。//当点击“删除日志”按钮后的事件处理代码privatevoidbtnDeleteMsg_Click(objectsender,EventArgse){ //设置数据库操作语句sql stringsql="deletefromMsgInfoWhereMsgID='"+msgid+"'andUserNumber=(selectUserNumberfromUserLoginwhereUserName='"+userName+"')"; //连接数据库并执行sql语句 this.Close();}4.4.6节假日设置模块功能说明:从数据库的JInfo表中读出当前设置的所有节假日信息并显示在Datagridview中。并根据用户需要进行节假日信息的添加和删除。图4-6节假日模块界面当用户通过下拉列表框选择好日期,并输入节假日名称后点击“添加”按钮时,系统将日期和节假日名称储存到数据库的JInfo表中。当点击“删除”按钮时,系统按照用户选择的节假日信息的编号JID来从数据库中删除该条节假日信息。以下为部分代码。//点击“添加”按钮的事件处理privatevoidbtnAdd_Click(objectsender,EventArgse){ //将combox内选择的日期分别储存在month和day整型变量中 intmonth=int.Parse( i { //设置数据库添加记录sql语句 y+")"; //如果sql语句执行成功 { MessageBox.Show("节假日添加成功!!"); //重新显示数据库内的节假日信息 GetJinfo(); } else { MessageBox.Show("您的操作有错误!"); } } else { MessageBox.Show("节假日的输入格式不正确!请重新输入!"); }}5系统测试5.1测试环境本系统测试环境;CPU:AMD2500+,内存:DDR2512M,SQLSERVER2000,WIN2000/XP,2003下均测试通过.建议用户CPUPIII,内存256M及以上,数据库版本SQLSERVER2000,WIN2000PRO/XP,2003,WIN2000SERVER及以上软硬件平台使用。该测试以程序的功能实现是否符合设计标准和程序是否存在重大BUG为标准。5.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.3系统的安全性测试密码的安全性该系统为多用户系统,所有用户的登录密码都保存在数据库中,以供用户登录时的密码比较。如果密码以明文形式在数据库中储存,必定会对用户的资料安全造成很大的隐患。所以,该系统将用户的密码进行MD5加密后再存入数据库中。当用户登录时也采用MD5将用户输入的密码加密后与数据库中的密码信息比较。采用MD5算法转换后的数据是伪随机的,而且该算法是一个不可逆的字符串变换算法,没有办法对已加密的数据进行解密。MD5算法在密码的安全方面提供了非常好的保障。日志信息的安全性用户的日志信息在数据库中采用Unicode编码进行储存。当用户登录该系统后,日志模块将数据库内该用户的日志信息经过Unicode解码后再输出。字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。Unicode是一种字符编码方法,由国际组织设计,可以容纳全世界所有语言文字的编码方案。虽然Unicode编码不像MD5加密那样安全可靠,但是因为Unicode编码可逆,而且储存在数据库中的信息并不是用户的原始信息,所以在一定程度上也对用户行程进行了保护。数据库的安全性在数据库的安全方面,主要依赖于SQLServer2000自身的安全性。在使用时,定期对数据库进行备份,以便数据库发生错误时将数据库恢复到之前某一已知的正确状态,实现数据库的再次正确使用。结论本次毕业设计完成了预定任务,包括用户登录、用户注册、日历、日志记录、日志提醒、节假日设置等功能。通过此次毕业设计,虽说不能完全掌握C#的编程技巧,但基本的编程思路还是逐渐地巩固起来。以前在课堂上学习的理论知识派上了用场,在程序的实际设计和实现过程中,逐步地将一些理论知识应用到开发中来,比如函数的调用、类与对象、方法的重载和引用等,并简单接触到了数据库的设计与操作。个人感觉其中最大的收获就是学习如何在程序开发过程中发现问题,查阅资料并解决问题,养成独立思考的能力。学习如何利用网络寻找解决问题的方法,这种方法在今后的工作和学习生活中能让事情变得事半功倍。在整个程序的设计与实现过程中,也发现自身存在的不少问题。特别是在实际动手编写代码方面很欠缺,一些本来很简单的问题却要去花费大量的时间来解决。理论上明白的方法却不知道该如何去实现,今后要多加练习动手能力。参考文献[1]KarliWatson,ChristianNagel.C#入门经典(第3版)[M].齐立波译.北京:清华大学出版社,2006。[2]ChristianNagel,BillEvjen,JayGlynn.C#高级编程(第4版)[M].李敏波译.北京:清华大学出版社,2006。[3]单银根,黎连业.C#语言及程序设计[M].北京:北京希望电子出版社,2001。[4]前沿软件研究室,郑小平.VisualC#.NET开发实践[M].北京:人民邮电出版社,2001。[5]郑宇军.C#2.0程序设计教程[M].北京:清华大学出版社,2004。[6]李代平.中文SQLserver2000数据库系统管理[M].北京:冶金工业出版社,2003。[7]方睿,刁仁宏,吴四九.网络数据库原理及应用[M].成都:四川大学出版社,2005。

致谢本文是在张路桥老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!在论文完成过程中,本人还得到了其他老师和一些同学的热心帮助,本人向他们表示深深的谢意!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!作者简介姓名:魏键性别:男出生年月:1984年3月13日民族:汉E-mail

声明本论文的工作是2007年2月至2007年6月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明:本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明!作者签名:2007年06月日veothercasebeincurable.Ifanyoneconvictinacourtoflawastrangeroraslaveofatheftofpublicproperty,letthecourtdeterminewhatpunishmentheshallsuffer,orwhatpenaltyheshallpay,bearinginmindthatheisprobablynotincurable.Butthecitizenwhohasbeenbroughtupasourcitizenswillhavebeen,ifhebefoundguiltyofrobbinghiscountrybyfraudsoldanyadulteratedgoods,inadditiontolosingthegoodsthemselves,shallbebeatenwithstripes-astripeforadrachma,accordingtothepriceofthegoods;andtheheraldshallproclaimintheagoratheoffenceforwhichheisgoingtobebeaten.Thewardenoftheagoraandtheguardiansofthelawshallobtaininformationfromexperiencedpersonsabouttherogueriesandadulterationsofthesellers,andshallwriteupwhattheselleroughtandoughtnottodoineachcase;andlettheminscribetheirlawsonacolumninfrontofthecourtofthewardensoftheagora,thattheymaybeclearinstructorsofthosewhohavebusinessintheagora.Enoughhasbeensaidinwhathasprecededaboutthewardensofthecity,andifanythingseemstobewanting,letthemcommunicatewiththeguardiansofthelaw,andwritedowntheomission,andplaceonacolumninthecourtofthewardensofthecitytheprimaryandsecondaryregulationswhicharelaiddownforthemabouttheiroffice.Afterthepracticesofadulterationnaturallyfollowthepracticesofretailtrade.Concerningthese,wewillfirstofallgiveawordofcounselandreason,andthelawshallcomeafterwards.Retailtradeinacityisnotbynatureintendedtodoanyharm,butquitethecontrary;forisnotheabenefactorwhoreducestheinequalitiesandincommensurabilitiesofgoodstoequalityandcommonmeasure?Andthisiswhatthepowerofmoneyaccomplishes,andthemerchantmaybesaidtobeappointedforthispurpose.Thehirelingandthetavern-keeper,andmanyotheroccupations,someofthemmoreandotherslessseemly-alikehavethisobject;-theyseektosatisfyourneedsandequalizeourpossessions.Letusthenendeavourtoseewhathasbroughtretailtradeintoill-odour,andwherein,liesthedishonourandunseemlinessofit,inorderthatifnotentirely,wemayyetpartially,curetheevilbylegislation.Toeffectthisisnoeasymatter,andrequiresagreatdealofvirtue.Cleinias.Whatdoyoumean?AthenianStranger.DearCleinias,theclassofmenissmall-theymusthavebeenrarelygiftedbynature,andtrainedbyeducation-who,whenassailedbywantsanddesires,areabletoholdoutandobservemoderation,andwhentheymightmakeagreatdealofmoneyaresoberintheirwishes,andpreferamoderatetoalargegain.Butthemassofmankindaretheveryopposite:theirdesiresareunbounded,andwhentheymightgaininmoderationtheyprefergainswithoutlimit;whereforeallthatrelatestoretailtrade,andmerchandise,andthekeepingoftaverns,isdenouncedandnumberedamongdishonourablethings.ForifwhatItrustmayneverbeandwillnotbe,weweretocompel,ifImayventuretosayaridiculousthing,thebestmeneverywheretokeeptavernsforatime,orcarryonretailtrade,ordoanythingofthatsort;orif,inconsequenceofsomefateornecessity,thebestwomenwerecompelledtofollowsimilarcallings,thenweshouldknowhowagreeableandpleasantallthesethingsare;andifallsuchoccupationsweremanagedonincorruptprinciples,theywouldbehonouredaswehonouramotheroranurse.Butnowthatamangoestodesertplacesandbuildsbouseswhichcanonlybereachedbelongjourneys,forthesakeofretailtrade,andreceivesstrangerswhoareinneedatthewelcomeresting-place,andgivesthempeaceandcalmwhentheyaretossedbythestorm,orcoolshadeintheheat;andtheninsteadofbehavingtothemasfriends,andshowingthedutiesofhospitalitytohisguests,treatsthemasenemiesandcaptiveswhoareathismercy,andwillnotreleasethemuntiltheyhavepaidthemostunjust,abominable,andextortionateransom-thesearethesortofpractices,andfoulevilstheyare,whichcastareproachuponthesuccourofadversity.Andthelegislatoroughtalwaystobedevisingaremedyforevilsofthisnature.Thereisanancientsaying,whichisalsoatrueone-"Tofightagainsttwoopponentsisadifficultthing,"asisseenindiseasesandinmanyothercases.Andinthiscasealsothewarisagainsttwoenemies-wealthandpoverty;oneofwhomcorruptsthesoulofmanwithluxury,whiletheotherdriveshimbypainintouttershamelessness.Whatremedycanacityofsensefindagainstthisdisease?Inthefirstplace,theymusthaveasfewretailtradersaspossible;andinthesecondplace,theymustassigntheoccupationtothatclassofmenwhosecorruptionwillbetheleastinjurytothestate;andinthethirdplace,theymustdevisesomewaywherebythefollowersoftheseoccupationsthemselveswillnotreadilyfallintohabitsofunbridledshamelessnessandmeanness.Afterthisprefaceletourlawrunasfollows,andmayfortunefavourus:-NolandowneramongtheMagnetes,whosecitytheGodisrestoringandresettling-noone,thatis,ofthe5040families,shallbecomearetailtradereithervoluntarilyorinvoluntarily;neithershallhebeamerchant,ordoanyserviceforprivatepersonsunlesstheyequallyservehim,exceptforhisfatherorhismother,andtheirfathersandmothers;andingeneralforhiselderswhoarefreemen,andwhomheservesasafreeman.Nowitisdifficulttodetermineaccuratelythethingswhichareworthyorunworthyofafreeman,butletthosewhohaveobtainedtheprizeofvirtuegivejudgmentabouttheminaccordancewiththeirfeelingsofrightandwrong.Hewhoinanywaysharesintheilliberalityofretailtradesmaybeindictedfordishonouringhisracebyanyonewholikes,beforethosewhohavebeenjudgedtobethefirstinvirtue;andifheappeartothrowdirtuponhisfather'shousebyanunworthyoccupation,lethimbeimprisonedforayearandabstainfromthatsortofthing;andifherepeattheoffence,fortwoyears;andeverytimethatheisconvictedletthelengthofhisimprisonmentbedoubled.Thisshallbethesecondlaw:-Hewhoengagesinretailtrademustbeeitherameticorastranger.Andathirdlawshallbe:-Inorderthattheretailtraderwhodwellsinourcitymaybeasgoodoraslittlebadaspossible,theguardiansofthelawshallrememberthattheyarenotonlyguardiansofthosewhomaybeeasilywatchedandpreventedfrombecominglawlessorbad,becausetheyarewellbornandbred;butstillmoreshouldtheyhaveawatchoverthosewhoareofanothersort,andfollowpursuitswhichhaveaverystrongtendencytomakemenbad.And,therefore,inrespectofthemultifariousoccupationsofretailtrade,thatistosay,inrespectofsuchofthemasareallowedtoremain,becausetheyseemtobequitenecessaryinastate-aboutthesetheguardiansofthelawshouldmeetandtakecounselwiththosewhohaveexperienceoftheseveralkindsofretailtrade,aswebeforecommanded,concerningadulteration(whichisamatterakintothis),andwhentheymeettheyshallconsiderwhatamountofreceipts,afterdeductingexpenses,willproduceamoderategaintotheretailtrades,andtheyshallfixinwritingandstrictlymaintainwhattheyfindtobetherightpercentageofprofit;thisshallbeseentobythewardensoftheagora,andbythewardensofthecity,andbythewardensofthecountry.Andsoretailtradewillbenefiteveryone,anddotheleastpossibleinjurytothoseinthestatewhopractiseit.Whenamanmakesanagreementwhichhedoesnotfulfil,unlesstheagreementbeofanaturewhichthelaworavoteoftheassemblydoesnotallow,orwhichhehasmadeundertheinfluenceofsomeunjustcompulsion,orwhichheispreventedfromfulfillingagainsthiswillbysomeunexpectedchance,theotherpartymaygotolawwithhiminthecourtsofthetribes,fornothavingcompletedhisagreement,ifthepartiesarenotablepreviouslytocometotermsbeforearbitersorbeforetheirneighbours.TheclassofcraftsmenwhohavefurnishedhumanlifewiththeartsisdedicatedtoHephaestusandAthene;andthereisaclassofcraftsmenwhopreservethew

温馨提示

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

评论

0/150

提交评论