在线毕业论文提交系统的设计与实现毕业设计论文.doc
毕业设计(论文)在线毕业论文提交系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期: 在线毕业论文提交系统的设计与实现摘 要随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流、相互通信、共享信息、文件的上传下载等。在线毕业论文提交系统就是以上运用之一,它已经广泛的应用于目前的各大高校,但现有的这些系统都有一定的局限性,大部分只能实现简单的论文提交、论文查询、论文审核等功能,并不能解决论文的导出,特别是按统一的Word文档格式进行导出的问题。本设计就很好的解决了上面的问题,它不但能实现毕业生论文的在线提交;还能给教师一定的权限,以在线的方式对自己指导的学生的论文进行审核;并且管理员还可以方便的将每个学生的论文信息按统一的论文排版本格式导出成word文档等。本论文共分为五大部分,分别是:一、介绍选题背景及意义和相关系统的发展现状;二、介绍数据库技术、面向对象技术和基于B/S结构的WEB程序设计技术;三、对系统进行需求分析并提出解决方案;四、根据解决方案对系统进行设计;五、对毕业论文提交系统进行测试并得到测试结果。 关键词:在线提交;审核;导出;Word文档;B/S结构 Deign and Realization of Online Graduation Thesis Submitting SystemAbstractAlong with the swift and violent development of Internet technology, the network has brought very much inconvenience for the people. For instance the people all carry on communicating mutually, corresponding mutually, sharing information, uploading and downloading and etc. The online graduation thesis submit system is one of these utilization, it already wide spread application to present each universities, but the existing these systems all have the limitation, majority only realize the function of submitting paper, inquiring paper, auditing paper and so on. They cannot solve paper exporting, specially the question which exporting with the unified form of Word documents. This system solves these questions well, it not only realizes online submitting of the graduate paper; but also can assign the competences to teachers who audit student's paper by the online way .And administrator also can conveniently export each students paper information according to the unified edition form to the Word documents and etc. This paper is divided into five main modules, respectively is: First, introduction of selected topic background and significance and system development present situation; Second, introduction of data bank technology, object-oriented technology and the plan of B/S structure WEB programming technique; Third, carries on the demand to the current enterprise to analyze and to propose the solution; Fourth, carries on the design according to the solution to the system; Fifth, carries on the work plan of system tests and obtains the test result. Key words: Online submitting; Auditing; Exporting; Word documents; B/S structure 目 录论文总页数:21页1引言11.1选题背景11.2国内外研究现状11.3课题研究的意义12理论基础12.1数据库技术12.2面向对象技术22.3B/S架构的WEB程序设计技术23系统需求分析33.1现行业务系统描述33.2现行系统存在的主要问题分析33.3问题解决方案34系统设计44.1系统总体架构44.2数据库设计44.2.1ER图44.2.2数据表设计54.3系统功能模块设计64.3.1首页64.3.2论文提交74.3.3论文查询84.3.4论文审核104.3.5论文导出115系统实施及测试155.1实施概况155.2测试方案165.3测试结果18结 论18参考文献19致 谢20声 明211 引言1.1 选题背景随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流、相互通信、共享信息、文件的上传下载等。在线毕业论文提交系统就是以上运用之一,它已经广泛的应用于目前的各大高校,但现有的这些系统都有一定的局限性,大部分只能实现简单的论文提交,论文查询,论文审核等功能,并不能解决论文的导出,特别是按统一的Word文档格式进行导出的问题。1.2 国内外研究现状目前,国内外各大高校大部分都已经有了自己的“毕业生论文提交系统”,而且已经成为广大毕业生与导师的必要工具。但它们大都只能够完成一些基本的功能例如论文的在线提交、审核情况的查询、检索论文等,而对论文导出时的格式控制并没有考虑,比如怎么把存入到数据库中的论文信息导出到一篇Word文档,怎样让导出到Word的论文保持统一的论文排版格式等。1.3 课题研究的意义在线毕业论文提交系统的开发是为了更好的让各个高校充分的利用校园网的软硬件资源,通过B/S系统结构来实现基于Web的在线论文提交,实现了学生毕业论文的无纸化管理,让学生提交论文、查询论文的审核情况更为方便,让老师审核学生论文更加的快捷,并且解决了学生上传时论文格式不统一,但导出后能按统一的Word文档进行排版的问题。2 理论基础2.1 数据库技术Microsoft SQL Server2000是由Microsoft公司开发的,简称SQL Server,由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需求。其主要特点如下:第一,SQL Server与Windows服务器紧密集成,而Windows服务器具有很好的安全性,能够排除所有未经授权的非法用户的访问,确保了SQL Server 2000服务器的安全性,符合系统对安全性的要求;第二,用户可以使用Web浏览器查询存储在SQL Server 2000数据库中的数据,符合系统远程访问数据库的要求;第三,容量庞大,每个数据库中可创建多达20万个数据表,数据表中的记录的行数只受服务器硬盘空间的限制; 其使用的SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言,通常使用于数据库的通讯。美国国家标准学会ANSI 声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据等。2.2 面向对象技术毕业论文提交系统采用了C#语言,C#语言是一种面向对象的编程语言,它是Visual Studio中的一部分。C#既保持了C+中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。C#语言将在保持C/C+灵活性的基础上为程序员带来更高效的RAD开发方式。C# 是.NET的关键性语言,它是整个.NET平台的基础。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。C#本质上是C+的进化产物,使用了包括声明、表达式及操作符在内的许多C+特征,但是 C#还有更多的增强功能,比如类型安全(type-Safe)、事件处理、碎片帐集、代码安全性等。在C#中,除了可以使用许多API,更能使用.NET类。特别地是,我们可以处理COM的自动化和C类型的函数。 Visual Studio.NET是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual Studio.NET都可以提供近乎完美的解决方案。Visual Studio.NET提供了包括设计、编码、编译调试、数据库联接操作等基本功能和基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等高级功能。Visual Studio .NET 2003,它是 Microsoft 的第二代开发工具,用于构建和部署功能强大而安全的连接 Microsoft .NET 的软件。2.3 B/S架构的WEB程序设计技术B/S结构(Browser/Server结构)即浏览器和服务器结构。它是随着Internet技术的发展,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过网页浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。B/S架构下的ASP.NET 不仅仅是 Active Server Page (ASP) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。3 系统需求分析3.1 现行业务系统描述目前大部分学校都已经有了自己的在线毕业论文提交系统,都能够完成一些最基本的例如论文的在线提交、审核情况的查询、检索论文等。系统的大致工作流程是:学生进入系统首先注册一个账户,然后用这个账户进行论文信息的提交,提交后便可以检索自己的论文是否提交成功,再过一段时间后还能查询到自己论文的审核情况等。这里值得一提的是,这些系统在提交论文正文的时候采用的大多是FTP的方式,即把整个论文文件按统一的文件格式(如.doc,.pdf等)上传到服务器指定的目录上,要用的时候再从这个服务器上下载下来。3.2 现行系统存在的主要问题分析虽然目前的毕业论文提交系统已经能完成学校的大部分需求,并从一定的程度上结束了传统的“纸上作业”的方式,但仍然存在着一些细节的问题,问题分析如下:(1)目前大多数的相关系统都是采用ASP语言开发,其执行的速度较为的缓慢,并且系统的扩展性也不是很好。(2)目前的毕业论文提交系统大都只提供论文的在线提交,并不能让学生在提交完成后做任何的在线修改。(3)对每一个论文的作者来说,肯定都有自己的写作习惯,不管是段落的格式还是字体的样式上都存在着一定的差别。而目前的毕业论文提交系统都是采用的整个文件上传的方式,这样我们就不能去严格的控制每一篇论文的格式,如果想要所有的论文都能按统一的论文模板格式导出的话,那根本是不可能实现的一件事。3.3 问题解决方案根据对上面问题的分析,我们可以提出如下的解决方案:(1)系统采用B/S的结构,其开发语言不再使用传统的ASP语言,而使用微软公司新一代Active Server Pages脚本语言ASP.NET,其先编译后执行的程序执行方式很好的提高了系统的执行速度,而其面向对象的程序设计方式也很好的解决了系统的扩展性。(2)在论文查询这个模块增加了论文信息更新的子模块,当然这项功能只针对该学生的论文在提交后还没有被其指导老师审核的情况,若一旦审核就不能再做修改。(3)首先我们改变一下目前的系统对论文正文的提交方式,我们先把论文的正文粘贴到系统的一个多行文本框中,其次将其与论文的基本信息一起提交到SQL数据库,然后在导出的时候先将它显示到事先定义好的一个论文格式的网页模板上,最后将这个网页中的所有内容原样导出到Word即可。4 系统设计4.1 系统总体架构在线毕业论文提交系统的基本功能主要有论文提交、论文查询、论文审核及后台数据管理五大部分,其功能模块图如图1所示:查看学生论文图1 毕业论文提交系统功能模块图4.2 数据库设计4.2.1 ER图由上面的需求分析可建立E-R模型图,如图2所示:11教师管理员论文学生管理审核提交管理导出1n1nnn11图 ER图4.2.2 数据表设计根据系统功能设计的要求及对上面ER图的实现,本系统一共需要三张表格,下面给出它们的数据表图,及其基本功能说明:表名:lwtj功能说明:记录学生的基本信息及论文的信息,表结构如表1所示:表1 学生及论文信息表字段名称字段类型字段说明主键允许空stuNameVarchar(20)学生姓名否否stuNoVarchar(10)学生学号是否passwordVarchar(20)学生密码否否stuZyVarchar(30)学生专业否是stuTelVarchar(20)学生电话否是emailVarchar(30)学生邮箱否是teacherNameVarchar(20)老师姓名否否teacherNoVarchar(10)指导老师否否lwTitleVarchar(50)论文题目否否keyWordVarchar(50)关键字否否lwZyText论文摘要否否xwlbVarchar(20)学位类别否否flhVarchar(20)分类号否否bmjbVarchar(10)保密级别否否isPassVarchar(10)审核情况否否lwTextText论文内容否否表名: teacher功能说明:记录指导教师的基本信息,表结构如表2所示:表2 老师信息表字段名称字段类型字段说明主键允许空teacherNoVarchar(10)教师工号是否teacherNameVarchar(20)教师姓名否否teacherPasswordVarchar(20)教师密码否否teacherTelVarchar(20)教师电话否是teacherEmailVarchar(30)教师邮箱否是表名:admin功能说明:记录管理员的账号与密码,表结构如表3所示:表3 管理员信息表字段名称字段类型字段说明主键允许空adminVarchar(20)管理账号否否passwordVarchar(20)管理密码否否4.3 系统功能模块设计4.3.1 首页毕业论文提交系统的首页,实际上是一个本系统的使用帮助页面,实现非常简单,不会用到数据库方面的信息,其界面如图3所示:图3 首页由于这个页面只是一个简单的静态页面,这里就不对它的代码进行详细的分析,我们只对页面上乃至以后系统工程每个页面都会用到的两个用户自定义控件加以说明,这两个控件文件分别是用于页面头部的top.ascx和用于页面底部的bottom.ascx,其定义的方法很简单,前面也已经讲过,这里我们来看一下在每个页面中怎么使用它们。 在每个页面中调用top.ascx的语句:<%Register TagPrefix="Top" TagName="myTop" Src="top.ascx" %>/TagPrefix用来标记前缀,定义控件的命名空间;TagName 标记名指向所使用控件的名字(这里指向myTop);Src 指向控件的资源文件 ;<Top:myTop runat="server"/> /调用为名myTop的用户控件4.3.2 论文提交本页面主要实现将学生正确输入到textBox中的学生信息与论文信息提交到SQL数据库中的lwtj表,当用户输入的信息不正确时,页面上为提示“输入信息不正确”的错误信息,并以在每个出错的textbox后面给出错误的提示,若学生重复的提交以前已经提交了的信息,页面就会发生跳转并提示“你不能重复提交你的论文”的提示信息。在检查用户输入的信息是否合法时,用到的是中的“验证控件”,在判断用户是否已经提交过论文的方法是,在每个学生在单击“提交”按钮后,就先在lwtj表中查询是否已经有了该学生的号,如果有了就表示已经提交过了。当完整的输入了学生的基本信息及论文信息后,单击“论文提交”页面中的“提交”按钮后,要触发到的submit_Click()函数:private void submit_Click(object sender, System.EventArgs e)if(IsValid=true) /判断页面上所有控件是否都合乎输入要求/ 定义连接字符串string SqlConn="data Source=127.0.0.1;Database=lwtjdb;User Id=sa;pwd="SqlConnection Conn=new SqlConnection(SqlConn); / 创建一个名为Conn的新连接Conn.Open(); /打开连接/下面的插入语句是将所有在前台textbox中输入的值和一个“未审核”的初始值插入到lwtj表 string SqlStr="insert into lwtj(stuName,stuNo,password,stuZy,stuTel,email,teacherName,teacherNo,lwTite,lwText,isPass) values('"+this.stuName.Text+"', ,'"+this.stuNo.Text+"','"+this.Text.Text.Replace("rn" , "<br>").Replace(" "," ")+"','未审核')" / lwBody.Text.Replace("rn" , "<br>").Replace(" "," "):表示将lwBody内容中的回车换行替换为“<br>”,将空格替换为“ ”一并存入到数据表中4.3.3 论文查询本页面主要实现当学生成功提交论文后对自己论文审核情况的查询;若还未审核,学生便可以看到类似论文提交时的那个页面,并显示出学生提交到数据库的信息,学生可以在这里进行相应的编辑,并点击“更新”按钮进行更新;若已经审核,学生登录后看到的将是“已审核”的提示页面.本页主要用到的数据表还是lwtj表,界面如图4所示: 图4 提交查询界面当用户单击了“查询”按钮后调用下面的查询语句:string SqlStr="select * from lwtj where stuNo='"+stuNo.Text+"' and password='"+password.Text+"'" /查询lwtj表上是否有用户刚才输入的账号和密码SqlCommand Comm=new SqlCommand(SqlStr,Conn);SqlDataReader dr=Comm.ExecuteReader(); /执行查询/ 下面的if语句判断是否查找到,若找到,则将记录中的每个值赋给一个相应的Session变量if(dr.Read() dr.Close();Conn.Close();Response.Redirect("cxjg.aspx"); /转到查询结果页elsemessage.Text="输入不正确!"当用户输入正确的学号和密码后,执行下面的页面事件:private void Page_Load(object sender, System.EventArgs e) if(IsPostBack=false) /如果是第一次加载本页面,就执行下面的语句 string SqlStr="select * from lwtj where isPass='未审核' and stuNo='"+Session"theno".ToString()+"'" /查询此学号的论文是否已经审核 SqlCommand Comm=new SqlCommand(SqlStr,Conn); SqlDataReader dr=Comm.ExecuteReader(); if(dr.Read() /如果上面的条件成立,则将上个页面保存的所有的Session的值传到相应的textbox中,若不成立,就自动跳转到“已审核”提示页 stuName.Text=Session"thename".ToString(); stuNo.Text=Session"theno".ToString(); password1.Text=Session"thepwd".ToString(); else Response.Redirect("isPass.aspx"); / 转到“已审核”提示页面 当用户单击了页面中的“更新”按钮后调用下面的update_Click()函数:private void update_Click(object sender, System.EventArgs e) if(IsValid=true) /判断页面上所有控件是否都合乎输入要求 string SqlStr="Update lwtj set stuNo='"+stuNo.Tex +"',stuName='"+ stuName.Text+"',password='"+password 1 .Text+"',stuZy='"+stuZy.T ext+"',stuTel='"+stuTel.Text+"',email='"+mail. Text+"',teacher Name='"+teacherName.Text+"',teacherNo='"+teacherNo.Text+"',lwTitle='"+lwTitle.Text+"',lwBody='"+lwBody.Text.Replace("rn" , "<br>").Replace(" "," ")+"' where stuNo="+Sessi on"theno" /更新学生的基本信息 SqlCommand Comm=new SqlCommand(SqlStr,Conn);Comm.ExecuteNonQuery(); /执行UpDate语句 Conn.Close(); message.Text="恭喜你!更新成功!" /提示更新成功 else message.Text="发生错误,请按照文本框后的提示信息重新输入正确信息!"4.3.4 论文审核老师首先进入“教师”登录页面,当输入正确的teacherNo与teacherPassword后,进入“教师审核论文页面”(界面如图5),在这个页面主要显示的是该老师所带的所以学生的学生及论文信息,老师可以在这里审阅学生的论文,若合格,可点出“审核”按钮进行审核,还可以点击“导出”按钮导出学生的论文信息到word文档,该页面上方还有个“教师修改个人信息”的功能选项,在老师首次登录后使用它来修改自己的密码及个人信息(界面如图6)。图5 老师审核论文界面图6 教师信息修改界面老师登录的主要源码如下:public void jsdl_Click(object sender, System.EventArgs e) string SqlStr="select * from teacher where teacherNo='"+teacherNo.Text+"' and teacherpassword='"+password.Text+"'"/查询teacher中是否有该老师的信息 SqlCommand Comm=new SqlCommand(SqlStr,Conn); SqlDataReader dr=Comm.ExecuteReader(); 执行查询if (dr.Read() /如查询到,将该教师的工号与姓名存分别暂存到Session变量中 Session"teano"=teacherNo.Text; Session"teaname"=dr"teacherName".ToString(); Response.Redirect("lwsh.aspx"); /跳转到论文审核主页面 else message.Text="输入不正确!" /密码不正确的提示老师成功登录后,下面是datagrid中的Click_Grid()事件:public void Click_Grid(object sender, DataGridCommandEventArgs E) if(E.CommandName="daochu") /判断是否单击了“导出”按钮 /前面利用DataKeyField=stuNo设置了学号关键字段,所以下面的语句可以获取某行的stuNo,并把结果传给Session"stuno" Session"stuno"=dg1.DataKeys(int)E.Item.ItemIndex; Response.Redirect("tealwdc.aspx"); /转到教师导出论文的页面 Else /若单击了“审核”按钮 string SqlUpDate="Update lwtj Set isPass='已审核' where stuNo="+dg1.DataKeys(int)E.Item.ItemIndex; /只更新当前行 SqlCommand Comm=new SqlCommand(SqlUpDate,Conn); Comm.ExecuteNonQuery(); /执行更新语句 BindData(); /重新调用绑定数据函数 老师导出论文的代码与后面管理员导出论文的代码差不多,这里就不给出,后面将有详细的介绍。4.3.5 论文导出管理员页面所实现的主要功能是对学生及论文信息的管理,以及论文的导出,还有对老师基本信息的初始添加(界面如图8)和对老师信息的管理,其中在登录管理员首页的时候有个管理员的身份验证,若输入正确才能登录到管理平台,进入这个平台后便会看到“学生信息及论文信息的管理”( 界面如图7)和“老师信息管理”这两个子功能,我们可以单击它进行相应的管理,下分别介绍各个页面的界面及主要实现价码。图7 学生信息管理界面图8 添加老师信息界面管理登录,当用户单击登录按钮的时候调用gldl_Click()处理方法,用来进行管理员的身份验证:如果用户存在,则让用户进入管理页面;如果用户不存在,则给出错误提示信息。管理员登录的源码与教师登录的源码差不多一样,仅仅是它们所要用到的数据表不同而已,这里不再给出管理员登录的源码。学生信息管理,Sort_Grid()方法的作用是,当用户单击DataGrid控件中的stuNo关键字后,按这些关键字进行排序,以方便管理的查询。public void Sort_Grid(object sender, DataGridSortCommandEventArgs E) /按学号升弃排序,并将结果绑定到DataSet控件上 string SqlStr="select * from lwtj order by stuNo" SqlDataAdapter da=new SqlDataAdapter(SqlStr,Conn);DataSet ds=new DataSet(); /创建ataSet控件ds da.Fill(ds,"lwtj");/调用ill方法将表lwtj放在DataSetc对象中dg1.DataSource=ds.Tables"lwtj".DefaultView; dg1.DataBind();/绑定数据ChangePage()方法,实现分页的功能用:public void ChangePage(object sender,DataGridPageChangedEventArgs E) /利用.ewPageIndex获得新的页数 dg1.CurrentPageIndex=E.NewPageIndex; BindData();/重新绑定数据 Click_Grid()这个方法用来获得DataGrid控件中的Button事件,首先判断用户单击的是那个按钮,若单击的是“删除”,则删除当前行的信息。若是“导出”,则将学生及论文信息到一个word文档。public void Click_Grid(object sender, DataGridCommandEventArgs E) if (E.CommandName="daochu")/判断是否单击了“导出”按钮 Session"stuno"=dg1.DataKeys(int)E.Item.ItemIndex; /取当前行的学号,并存到Session"stuno"中 Response.Redirect("adminlwdc.aspx"); /跳转到管理员导出论文页面 else if(E.CommandName="delete") /是否单击了“删除”按钮,若是,先建立数据库连接,然后执行删除操作 string Sqldel="delete from lwtjwhere stuNo="+dg1.DataKeys(int)E.Item.ItemIndex; /定义删除语句 SqlCommand Comm=new SqlCommand(Sqldel,Conn); Comm.ExecuteNonQuery();/执行 BindData(); /重新绑定数据