asp邮件系统课程设计.doc_第1页
asp邮件系统课程设计.doc_第2页
asp邮件系统课程设计.doc_第3页
asp邮件系统课程设计.doc_第4页
asp邮件系统课程设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

武汉工业学院 网站开发工具 大作业实验报告姓 名 学 院 专 业 年 级 学 号 指导教师 2012年 5 月 29 日 目录第1章 绪论3第2章 系统需求分析与系统框架42.1 需求分析42.2 系统框架42.2.1 系统功能分析42.2.2 系统功能模块和设计目标52.3 数据库设计52.3.1 数据库需求分析5第3章 系统详细设计83.1 系统模块的具体实现83.1.1 系统的登录界面83.1.2 邮件管理93.1.3 好友管理103.1.3 邮件收发11第4章 编码实现144.1 系统主界面144.11 login界面主要代码144.1.2 登录后界面主要代码144.2邮件相关主界面154.2.1 查看邮件154.2.2 发送邮件184.3 联系人主界面主要代码20第5章 系统测试与发布24第6章 实验感想与总结25第1章 绪论伴随着信息技术的快速发展,电子邮件已经成为最基本的网络通信工具,每天都有成千上万的用户使用它。电子邮件(简称e-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式,它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。进入国际互连网的用户可以方便的使用电子邮件,而且不用任何纸张,就可以方便的写、寄、读、转发信件,而且它不论地球的任何区域,只要他在网内就可以进行转发,而不受任何时间的限制。利用电子邮件还可以实现文件的传输、电子杂志的订阅,进行学术讨论,举行电子会议或者查询信息。这是目前最普及也是最方便的通信工具。很多应用程序都附带有电子邮件的发送和接收功能,因此,电子邮件和接受程序的编程变的十分重要。邮件发送系统是采用c#开发的综合性的程序设计。它包括邮件用户的订阅、邮件组、记录以及邮件的收发。现在,这种电子邮件发送系统已成为人们生活中不可缺少的重要工具,也是许多商家和组织机构的生命血脉。用户可以通过电子邮件的讨论会进行项目管理,并且有时要根据快速,或洲际的电子邮件信息交换进行重要的决策行动。第2章 系统需求分析与系统框架2.1 需求分析需求分析是软件定义的最后一个阶段,它的基本任务是回答“系统必须做什么“这个问题。需求分析的任务不是确定系统怎样完成他的工作,而仅仅是确定系统完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。可行性研究阶段产生的文档,特别是数据流成图,是需求分析的出发点。数据流成图中已经划分出系统必须完成的许多基本功能,系统分析员将仔细研究这些功能并进一步将它们具体化。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。因此,必须用行之有效的方法对软件需求进行严格的审查验证。2.2 系统框架2.2.1 系统功能分析根据对客户需求进行分析的结果,现列出以下主要设计原则:1、 用户和邮箱易管理邮件系统要有大规模用户的支持能力,具有良好的用户扩展性,同时能够满足对用户邮箱的定制管理功能。2、 功能丰富实用包括用户使用邮箱的功能和系统管理员管理邮件系统的功能。方案要满足用户对这两方面的要求。3、 系统结构完善紧凑结构要合理可靠,同时模块具有独立性,包括硬件系统平台和软件系统的搭建,都要考虑到整个系统的可靠性。4、 高扩展性系统是否具有很好扩展性是方案成功的一个重要标志,本方案主要从硬件平台可扩展性和软件功能模块的可扩展性两个方面来满足要求。5、 高可靠性邮件系统最基本也是最重要的一个需求就是可靠性。2.2.2 系统功能模块和设计目标根据客户的现实状况和业务需求及今后的发展方向,系统设计总体目标是为客户建立高性能、易管理、可扩展、安全可靠、性能价格比良好的电子邮件信息交换系统。用户可能需要的具体功能如下:功能模块规格说明邮件管理基本功能收发邮件传送/接收内部或外部邮件撰写邮件利用web界面撰写邮件回复邮件利用web界面回复邮件或全部回复相关收/发件人全部回复转发邮件利用web界面转发邮件信箱管理内设收件箱、发件箱、已发送信箱等基本信箱。员工可依个人资料管理需要,无限层级添加、编辑信箱。其信箱分层式架构以树状结构清楚显示。2.3 数据库设计2.3.1 数据库需求分析设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,应该把对用户需求的收集和分析作为数据库设计的第一步。需求分析的主要任务是通过详细调查要处理的对象,包括某个组织、某个部门、某个企业的业务管理等,充分了解原手工或原计算机系统的工作概况及工作流程,明确用户的各种需求,产生数据流图和数据字典,然后在此基础上确定新系统的功能,并产生需求说明书。值得注意的是,新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。据分析,可以列出以下数据项和数据结构:用户名数据表结构:用户id,用户名,用户真名,密码,电话,生日,邮箱文件数据表结构:文件id,名字,总数,未读,附件,建立时间,flag(发送成功)联系人数据表结构:联系人id,名字,用户名,添加日期邮件表结构:邮件id,标题,正文,发件人地址,收件人地址,转发地址,发送时间,正文,附件标志,是否已读,文件号,垃圾箱附件表结构:转发地址,发送日期,包含,附件标志位,是否已读,文件号,垃圾箱1. 数据库名:xiaoweiwebmail 数据结构描述:数据库名correspondence用户名数据表结构(user)字段名说明数据类型长度允许空值是否主键userid用户idint4trueusername用户名varchar50truerealname真名varchar50trueuserpwd密码varchar10truephone电话varchar50truebirthday生日varchar255truee_mail邮箱varchar50true文件数据表结构(folders)字段名说明数据类型长度允许空值是否主键folderid文件号int4truename用户名varchar(50)50truetotal通信组名int20truenoreader通信组描述int4truecontain包含int4truecreatedate创建日期datetimetrueflag标志位bittrue联系人数据表结构 (friends)字段名说明数据类型长度允许空值是否主键id联系人idinttruefriendname真名字varchar50trueusername用户名varchar50trueadddate添加日期datetimetrue邮件数据表结构(mails)字段名说明数据类型长度空值是否主键mailid邮件idinttruetitle标题varchar50truebody正文text50truefromaddress源地址texttruetoaddress目的地址texttrueccaddress转发地址texttruesenderdate发送时间datetimetruecontain包含inttrueattachmentflag附件标志bittruereaderflag已读bittruefolderid文件号inttruetrash垃圾箱inttrue附件数据表结构(attachments)字段名说明数据类型长度空值是否主键contain包含inttrueattachmentflag附件标志位bittruereaderflag已读bittruefolderid文件号inttruetrash垃圾箱inttrue第3章 系统详细设计3.1 系统模块的具体实现3.1.1 系统的登录界面通讯录系统的登录界面采用多重窗体(mdi),使系统更加美观,方便实用.用户登录用户名及密码正确进入邮件系统非法用户重新输入退出 y n n y 图3-1 系统登录流程图打开visual studio 2008后,单击文件|打开菜单,在项目/解决方案中找到项目。单击开始执行按钮。登录的网页如图3-2所示。图3-2 登录邮件系统界面3.1.2 邮件管理输入正确的用户名和密码能进入到邮件系统的主界面。 图3-3 通讯录的主界面查看当前用户收件箱如图3-4所示。 图3-4 对收件箱的邮件进行操作如图3-5所示。 图3-5 操作文件夹3.1.3 好友管理添加好友如图3-6所示 图3-6 添加好友删除修改后列表里面已经看不到and_liu如图3-7所示图3-7好友删除成功3.1.3 邮件收发发送一封新邮件如3-8所示发送成功如图3-9所示。 图3-9 发送成功对方登录邮箱收取邮件如3-10所示。 图3-10 联系人添加成功的结果回复邮件如图3-11所示。 图3-11 回复邮件先前的用户收取回复邮件如图3-12所示 图3-12收取对方回复的邮件第4章 编码实现4.1 系统主界面 4.1.1 login界面主要代码public partial class login : system.web.ui.page protected void page_load(object sender, eventargs e) protected void imagebutton1_click(object sender, imageclickeventargs e) string xiaousername = txtusername.text.tostring().trim(); string xiaouserpwd = txtpwd.text.tostring().trim(); users userlogin = new users(); bool islogin = userlogin.isexists(xiaousername, xiaouserpwd); if (islogin = true) / sessionusername = xiaousername; / response.redirect(index.aspx); formsauthentication.redirectfromloginpage(txtusername.text.trim(), false); else response.write(alert(用户名或密码错误,请重新输入!);); 4.1.2 登录后界面主要代码using system;using system.data;using system.configuration;using system.collections;using system.web;using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;public partial class index : system.web.ui.page protected void page_load(object sender, eventargs e) lblmsg.text = 欢迎: + user.identity.name + 登录!; protected void lbtlogout_click(object sender, eventargs e) /session.abandon(); response.redirect(login.aspx); 4.2邮件相关主界面 4.2.1 查看邮件public partial class viewmail : system.web.ui.page int nfolderid = -1; protected void page_load(object sender, eventargs e) nfolderid = int32.parse(request.paramsfolderid); if (request.paramsfolderid != null) if (int32.tryparse(request.paramsfolderid.tostring(), out nfolderid) = false) return; if (!page.ispostback) if (nfolderid -1) bindmaildata(nfolderid); bindfolderdata(); private void bindfolderdata() ifolder folder = new folder(); sqldatareader dr = folder.getfolders(); folderlist.datasource = dr; folderlist.datatextfield = name; folderlist.datavaluefield = folderid; folderlist.databind(); dr.close(); btnmoveto.enabled = folderlist.items.count 0 ? true : false; private void bindmaildata(int nfolderid) imail mail = new mail(); sqldatareader dr = mail.getmailsbyfolder(nfolderid); gv_showdata.datasource = dr; gv_showdata.databind(); dr.close(); deletebtn.enabled = gv_showdata.rows.count 0 ? true : false; protected void chkall_checkedchanged(object sender, eventargs e) foreach (gridviewrow row in gv_showdata.rows) protected void deletebtn_click(object sender, eventargs e) imail mail = new mail(); try foreach (gridviewrow row in gv_showdata.rows) checkbox checkmail = (checkbox)row.findcontrol(mycheck); if (checkmail != null) if (checkmail.checked = true) if (nfolderid=8) mail.deletemailt(int32.parse(gv_showdata.datakeysrow.rowindex.value.tostring(); ifolder folder = new folder(); folder.setmaildeletet(nfolderid); else mail.deletemail(int32.parse(gv_showdata.datakeysrow.rowindex.value.tostring(); ifolder folder = new folder(); folder.setmaildelete(nfolderid); bindmaildata(nfolderid); catch (exception ex) response.write(数据错误+ex.message); protected void btnmoveto_click(object sender, eventargs e) imail mail = new mail(); try foreach (gridviewrow row in gv_showdata.rows) checkbox checkmail = (checkbox)row.findcontrol(mycheck); if (checkmail != null) if (checkmail.checked = true) mail.movemail(int32.parse(gv_showdata.datakeysrow.rowindex.value.tostring(), int32.parse(folderlist.selectedvalue); bindmaildata(nfolderid); catch (exception ex) response.write(it is wrong+ex.message); response.end(); 4.2.2 发送邮件public partial class sender : system.web.ui.page protected void page_load(object sender, eventargs e) protected void btnsend_click(object sender, eventargs e) string nfromaddress = btnfrom.text.tostring().trim(); string ntoaddress = btnto.text.tostring().trim(); string ntitle = btntitle.text.tostring().trim(); bool nattachmentflag =(bool)false; bool nreaderflag = (bool)false; int nfolderid = 6; int ncontain = btncontent.text.length; string nbody = btncontent.text.tostring().trim(); imail mail = new mail(); bool flag = mail.sendmail(ntitle,nbody,nfromaddress, ntoaddress, nattachmentflag, nreaderflag,ncontain, nfolderid); bool flag1 = mail.sendmail(ntitle, nbody, nfromaddress, ntoaddress, nattachmentflag, nreaderflag, ncontain, 7); ifolder folder = new folder(); if (flag = true & flag1=true) folder.setmails(6,7); response.write(alert(发送成功!);location.href=maildesktop.aspx); else response.write(alert(发送失败,请重新发送吧!);history.go(-1);); protected void btnback_click(object sender, eventargs e) response.redirect(maildesktop.aspx); 4.3 联系人主界面主要代码public partial class myfriends : system.web.ui.page protected void page_load(object sender, eventargs e) if (!page.ispostback) bindgridview(); bindusers(); private void bindgridview() string username = user.identity.name; ifriends friends = new friends(); sqldatareader dr = friends.getfriendall(username); friend_gv.datasource = dr; friend_gv.databind(); private void bindusers() iusers user = new users(); sqldatareader dr = null; dr = user.getallusers(); ddlusers.datasource = dr; ddlusers.datatextfield = username; ddlusers.datavaluefield = userid; ddlusers.databind(); protected void btnadd_click(object sender, eventargs e) string friendname = ddlusers.selecteditem.text; string username = user.identity.name; bool flag = false; ifriends friends = new friends(); if (!friends.isexists(friendname, username) flag = friends.insertfriends(friendname, username); if (flag = true) response.write(alert(添加好友成功!);location.href=myfriends.aspx); else response.write(alert(添加失败!);history.go(-1);); else response.write(alert(对不起,该好友已经存在你呢的好友中!不可以重复添加!);location.href=myfriends.aspx;); response.end(); protected void friend_gv_rowediting(object sender, gridviewediteventargs e) friend_gv.editindex = e.neweditindex; bindgridview(); protected void friend_gv_rowupdating(object sender, gridviewupdateeventargs e) int id = int.parse(friend_gv.datakeys0.value.tostring(); datetime addtime = datetime.parse(textbox)friend_gv.rowse.rowindex.cells2.controls0).text.tostring().trim(); bool flag = false; ifriends friend = new friends(); flag = friend.updatefriends(id,addtime); friend_gv.editindex = -1; bindgridview(); protected void friend_gv_rowcancelingedit(object sender, gridviewcancelediteventargs e) friend_gv.editindex = -1; bindgridview(); protected void btndelete_click(object sender, eventargs e) ifriends friends = new friends(); try foreach (gridviewrow row in friend_gv.rows) checkbox checkmail = (checkbox)row.findcontrol(mycheck); if (checkmail != null) if (checkmail.checked = true) friends.deletefriends(int32.parse(friend_gv.datakeysrow.rowindex.value.tostring(); bindgridview(); catch (exception ex) response.write(数据库错误: +ex.message); protected void btnback_click(object sender, eventargs e) response.redirect(myfriends.aspx); 第5章 系统测试与发布软件测试是伴随着计算机软件的

温馨提示

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

评论

0/150

提交评论