《社团管理系统》详细设计说明书_第1页
《社团管理系统》详细设计说明书_第2页
《社团管理系统》详细设计说明书_第3页
《社团管理系统》详细设计说明书_第4页
《社团管理系统》详细设计说明书_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、社团管理系统详细设计文档详细设计说明书v1.0(版本号)拟 制 人 审 核 人 年 月 日 目录1.引言31.1编写目的31.2项目背景31.3定义31.4参考资料32.总体设计42.1需求概述42.2软件结构53.程序描述63.1功能63.2性能83.3运行环境及设备要求93.4算法93.5程序逻辑213.6数据库设计223.7测试要点251.引言1.1编写目的本说明书在概要设计的基础上,对信息发布系统的各模块、程序分别进行了实现层面上的要求和说明。1.2项目背景l 项目全称:厦门理工学院社团管理系统l 项目发起者:09软件工程2班dwlgy小组l 项目开发者:09软件工程2班dwlgy小组

2、l 项目用户:厦门理工的广大师生1.3定义use case用例会员社团管理系统中合法的注册用户游客未注册或者未登录的社团管理系统平台浏览者管理员系统的管理者1.4参考资料1 天极网新技术研究室.asp.net完全入门.人民邮电出版社,2001.62 sanjeev rohilla等著,陈君等译.ado.net专业项目实例开发.中国水利水电出版社,2003.53 启明工作室编著.asp.net网络应用系统开发与实例.人民邮电出版社,2005.74 王华杰,李律松 孙一波等编著.c#数据库开发技术.清华大学出版社,2003.25 攀建编著.asp.net+ado.net项目开发实例.清华大学出版社

3、,2004.16 (美)a.russell jones著,高春蓉等译.asp.net从入门到精通.电子工业出版,2002.17 scott worley著,王文龙 刘湘宁译.asp.net技术内幕.人民邮电出版社,2002.48 russ basiura等著,杨浩译.asp.net web 服务高级编程.清华大学出版社, 2003.29 (美)angshuman chakraborti等著,唐云深,赵世华等译.net framework专业项目实例开发.中国水利水电出版社,2003.6 10 scott allen等著.c#数据库入门.郝启堂 张哲峰译.清华大学出版社,2003.211 (美)

4、微软公司著.net框架1.1类库参考手册.清华大学出版社,2004.112 steve walther著.asp.net:tips,tutorials,and code.电子工业出版社,2003.713 (美)jeffrey richte著.microsoft.net frameworks.清华大学出版社,2003.414 alex homer等.asp.net web forms programming.清华大学出版社,2003.12.总体设计2.1需求概述社团管理系统需要满足来自三方面的需求,这三个方面分别是会员、社团和管理员。会员的需求是查询院系各社团的活动情况、会员参加的各个社团情况及

5、会员信息的修改;社团需对会员参加社团、注销社团的基本情况进行操作;社团管理系统的管理员的功能最为复杂,包括对会员、社团的活动等各方面的信息进行管理和统计,及系统状态的查看、维护并生成会员社团统计表。会员可以直接查看参加社团及社团活动情况,会员可以根据本人学号和密码登录系统,还可以进行对本人参加社团情况的查询和维护部分个人信息以及各社团的活动安排等相关信息。一般情况下,会员只应该查询和维护本人的参加社团情况和个人信息,若查询和维护其他会员的信息,就要知道其他会员的学号和密码。这些是很难得到的,特别是密码,所以不但满足了会员的要求,还保护了会员的个人隐私。社团工作人员有修改会员个人信息的权限,所以

6、需对工作人员登陆本模块进行更多的考虑。在此系统中,社团工作人员可以为会员加入社团或是登陆记录,并打印生成相应的报表给用户查看和确认院系管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对会员参加各社团相关信息的查询和统计、工作人员和管理人员信息查看及维护。社团管理员可以浏览、查询、修改、统计社团的基本信息;浏览、查询、统计和修改会员参加社团活动的基本信息,设计不同用户的操作权限和登陆方法对所有用户开放的会员信息查询和个人部分信息维护查看个人情况信息维护会员个人密码根据注册的情况对数据库进行操作并生成报表。社团管理系统的数据流程:首先由社团工作人员或系统管理员等有录入权限的用户将各自

7、权限范围内的信息进行录入处理,然后保存信息到数据库中。有权限的人可以对这些库信息进行修改和删除处理。所有用户均可以进行信息查询和统计,没有权限用户还可以基于注册界面进行注册,来参加相应的社团。2.2软件结构本程序采用b/s架构,并使用了四层逻辑结果,如图1所示:数据层(db)数据访问层(dal)业务逻辑层(bll)用户层(ui)图1 系统结构示意图 以下为用户社团管理系统流程图,也是我们的核心工作流程图,如图2所示:图2 系统流程图3.程序描述3.1功能工作流程为:打开该系统网站,普通浏览者能浏览、阅读和社团信息及新闻,能进行注册,注册后为网站准会员,系统管理员登录进入新闻后台管理区,可以进行

8、如下管理:l 社团信息管理u 删除和修改社团信息u 对已有社团进行部门管理u 对社团章程管理u 对社团的活动信息进行管理u 添加社团(注:授权码最为重要,它将在社团注册时为唯一识别码)l 管理员信息管理u 添加管理员u 修改或删除管理员信息l 新闻管理u 公告管理(添加、删除和修改)u 新闻管理(添加、删除和修改)l 用户管理u 个人用户管理(添加、删除和修改)u 协会用户管理(添加、删除和修改)l 下载管理u 表格管理(修改和删除)u 资料管理(删除和修改)u 添加信息(添加下载资料)l 留言管理u 个人留言管理(回复和删除留言)l 图片管理u 添加图片u 删除图片u 修改图片l 实用信息管

9、理u 添加使用信息l 系部管理(添加、删除和修改系部)3.2性能该系统操作简单、界面友好: 完全控件式的页面布局,使得社团信息及新闻的录入工作更简便,为用户提供方便快捷的社团管理及相关信息的发布,更将作为一个向外部展示本学校的社团建设成就。即时可见:对社团信息的处理(包括录入、修改、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;系统运行应该快速、稳定、高效和可靠;在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。3.3运行环境及设备要求设备客户机硬件要求:具有 pentium iii 处理器以上且满足以下要求的计算机:最低 64 mb 内存,最小 2.1 gb

10、硬盘。服务器硬件要求:具有 pentium iii 处理器以上且满足以下要求的计算机:最低 256mb 内存,最小 8 gb 硬盘。支持程序 客户端操作系统:windows 98/nt/2000/xp或更高版本浏览器:ie 5.0以上或netscape同等版本以上 服务器操作系统:windows 2000 server或者windows 2003 serverweb服务器:ms iis应用服务器:iis、com+等企业级应用服务器数据库:sql server 3.4算法重要算法及部分代码web用户控件该系统中创建了两个web用户控件foot.ascx和head.ascx,在首页、新闻动态、社联

11、简介、资料下载等页面的html代码里都进行了引用,调用方式为: register指令注册用户控件,同时把属性tagname(标签名)和tagprefix(标签前缀)添加到 register指令中,src属性表示该用户控件相对于父页面的相对地址。用户控件也是服务器端控件,还必须在用户控件代码中添加runat=server属性,用法如下:其中head.ascx用户控件作用是显示导航栏flash按钮,foot.ascx用户控件作用是显示底部相关网站信息等。用户控件是非常易于代码重用的,可以把许多相关功能和用户界面封装在一个用户控件中,然后在任何需要该功能的地方重用此控件。通用类代码在所有相关页面显示

12、文件和web用户控件的代码隐藏文件.aspx.cs或.ascx.cs中,通过对数据访问类的引用(以创建类实例方式),调用数据访问类里的相应函数完成相关功能,如建立数据库连接、打开和关闭数据库、对数据库执行查询、插入、删除和更新操作、页面登陆检验等。此处列举dbhelp类(数据访问类)中主要函数的源码:using system;using system.data;using system.configuration;using system.web;using system.web.security;using system.web.ui;using system.web.ui.webcontr

13、ols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;using system.data.sqlclient;using system.text;using system.text.regularexpressions;/ / dbhelp 的摘要说明/ public class dbhelp protected static string con = configurationmanager.connectionstringsconnstr.tostring(); public sqlcon

14、nection conn = new sqlconnection(con); /public sqlconnection conn = new sqlconnection(data source=.;initial catalog=studentdatabase;uid=sa;pwd=123456;); #region 用户登录验证 / / 验证用户是否是合法用户 / / 接受sql语句 / public int checklogin(string sql) try sqlcommand cmd = new sqlcommand(sql, conn); if (conn.state = con

15、nectionstate.closed) conn.open(); int result = (int)cmd.executescalar(); return result; catch (exception ex) httpcontext.current.response.write(ex.message); throw; #endregion #region 用户信息提示 / / 对话框信息 / / 接受要显示给用户的信息 public void messageshowbox(string txtmessage) httpcontext.current.response.write(ale

16、rt( + txtmessage + ); #endregion #region 查询数据库信息 / / 数据填充 / / 接受sql语句 / 返回dataset类型数据ds public dataset getdata(string sql) try dataset ds = new dataset(); sqldataadapter da = new sqldataadapter(sql, conn); if (conn.state = connectionstate.closed) conn.open(); da.fill(ds, datatable); return ds; catch

17、 (exception ex) httpcontext.current.response.write(ex.message); throw; #endregion #region 数据库信息更新 / / 实现数据库的更新 / / 接受sql语句 / 返回受影响行数 public int exucte(string sql) try sqlcommand cmd = new sqlcommand(sql, conn); if (conn.state = connectionstate.closed) conn.open(); int result = cmd.executenonquery();

18、 return result; catch (exception ex) httpcontext.current.response.write(ex.message); throw; #endregion #region 读取数据库数据 public dataset excute1(string sql) dataset ds = new dataset(); sqldataadapter da = new sqldataadapter(sql,conn); if (conn.state = connectionstate.closed) conn.open(); da.fill(ds,new

19、s); if (conn.state = connectionstate.open) conn.close(); return ds; #endregion #region session传值判断注册身份 public void teamadd() httpcontext.current.sessionidentity = 团体注册; httpcontext.current.response.redirect(register.aspx); public void person() httpcontext.current.sessionidentity = 个人注册; httpcontext.

20、current.response.redirect(register.aspx); #endregion #region 获取数据库字段 public sqldatareader getred(string sql) sqlcommand cmd = new sqlcommand(sql,conn); if (conn.state = connectionstate.closed) conn.open(); sqldatareader red = cmd.executereader(); return red; red.close(); conn.close(); #endregion 前台主

21、要页面代码1. 首页1) 填充首页各信息控件模块:applicationuserinfor = string.empty;/将用户登陆信息置空 gvnews.datasource = dh.getdata(select top 6 * from news order by newid desc);/读取最新前六条新闻 gvnews.databind(); txtname.focus(); gvdonload.datasource = dh.getdata(select top 5 dname,id from download order by id desc);/读取最新下载资料 gvdonl

22、oad.databind(); gvleague.datasource = dh.getdata(select top 5 * from league_table order by id desc);/填充协会信息模块 gvleague.databind(); dataset ds = dh.getdata(select top 1 contents from affiche order by id desc);/填充通告模块 if(ds.tables0.rows.count0) lblad.text = ds.tables0.rows00.tostring(); gvactivity.dat

23、asource = dh.getdata(select top 5 name,activity,id from league_table where intactivity=1 order by id desc); gvactivity.databind();/填充社团活动新闻信息模块 ds = dh.getdata(select top 1 viscera from news order by newid desc); /填充专题报道信息模块 if(ds.tables0.rows.count0) lblreport.text = ds.tables0.rows00.tostring(); d

24、atalist1.datasource = dh.getdata(select * from showimage); datalist1.datakeyfield = id;/根据主键:id读取数据库中新闻图片的存储路径用以动态填充图片新闻模块 datalist1.databind(); datalist2.datasource = dh.getdata(select top 6 * from urlmessege order by id desc);datalist2.databind();/填充实用信息模块在html代码中对后台代码的data数据集进行调用:  &nbs

25、p; asp:image id=imageshow alternatetext=风景如画 height=120 width=90 runat=server imageurl= _designer:wfdid=w32. 下载页面代码:1) 实现下载功能代码:从数据库中读取文件路径: string num = ds.tables0.rows00.tostring(); string filepath = ds.tables0.rows01.tostring(); 判断数据库文件类型: if (filepath.trim() = word文件) filetype = download_doc; fi

26、lepostfix = .doc; else if (filepath.trim() = excel表格) filetype = download_xls; filepostfix = .xls; string filename = num + filepostfix;/客户端保存的文件名 string filepath = server.mappath(filetype + / + filename);/路径 /以字符流的形式下载文件 filestream fs = new filestream(filepath, filemode.open); byte bytes = new byte(

27、int)fs.length; fs.read(bytes, 0, bytes.length); fs.close(); response.contenttype = application/octet-stream; /通知浏览器下载文件而不是打开 response.addheader(content-disposition, attachment; filename= + httputility.urlencode(filename, system.text.encoding.utf8); response.binarywrite(bytes); response.flush(); resp

28、onse.end();3.留言本实现代码: 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;using system.data.sqlclien

29、t;public partial class message : system.web.ui.page dbhelp dh = new dbhelp(); public string sql = select top 5 * from massage order by id desc;/从数据库中读取前五条最新留言 protected void page_load(object sender, eventargs e) dlbinit(sql);#region 绑定数据 protected void dlbinit(string sql) /用数据适配器对dataset数据集进行填充留言本内容

30、 if (dh.conn.state = connectionstate.closed) dh.conn.open(); sqldataadapter da = new sqldataadapter(sql, dh.conn); dataset ds = new dataset(); da.fill(ds, table); pageddatasource ps = new pageddatasource(); ps.allowpaging = true;/允许分页功能 ps.pagesize = 5;/设置每页显示五条信息 ps.datasource = ds.tablestable.defa

31、ultview; datalist1.datasource = ps; datalist1.databind(); #endregion protected void btnmassage_click(object sender, eventargs e) /点击留言按钮跳转到留言界面 response.redirect(replymassage.aspx); 后台主要页面代码1. 图片管理页面代码:填充图片信息代码:protected void dlbinit(string sql) /进行填充已上传的图片进行填充模块 if (dh.conn.state = connectionstate.

32、closed) dh.conn.open(); sqldataadapter da = new sqldataadapter(sql, dh.conn); dataset ds = new dataset(); da.fill(ds, table); pageddatasource ps = new pageddatasource(); ps.datasource = ds.tablestable.defaultview; gridview1.datasource = ps; gridview1.databind(); 删除图片信息代码:protected void gridview1_row

33、deleting(object sender, gridviewdeleteeventargs e) /删除图片信息 int id = int.parse(gridview1.datakeyse.rowindex.value.tostring(); string sql = select * from showimage where id= + id + ; dataset ds = dh.getdata(sql); string filename = ds.tables0.rows01.tostring(); try string value = filename.split(/); fil

34、ename = value2.tostring(); catch (exception) dh.messageshowbox(删除失败!); return; 物理删除图片代码:string filepath = server.mappath()+/showimage/ + filename; if (file.exists(filepath)/判断文件是否存在 file.delete(filepath);/进行物理删除文件 sql = delete showimage where id= + id + ;/删除数据库中文件信息 if (dh.exucte(sql) 0) sql = selec

35、t * from showimage; dlbinit(sql);/删除后重新进行填充模块 else dh.messageshowbox(删除失败!); 2. 资料信息管理代码:删除下载资料代码:protected void gvadminload_rowdeleting(object sender, gridviewdeleteeventargs e) /删除下载资料信息 string sql = select dname from download where id=+gvadminload.datakeyse.rowindex.value.tostring()+; dataset ds

36、= dh.getdata(sql); string name = ds.tables0.rows00.tostring(); string filepath = server.mappath()+download_doc + name + .doc; if (file.exists(filepath) /物理删除下载资料信息 file.delete(filepath); int id =int.parse(gvadminload.datakeyse.rowindex.value.tostring(); sql = delete download where id= + id + ; if (d

37、h.exucte(sql) 0) databinit(); else dh.messageshowbox(删除失败!); return; 添加下载资料信息代码: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;u

38、sing system.web.ui.htmlcontrols;using system.data.sqlclient;using system.io;public partial class web_admin_adminsource : system.web.ui.page string filepath = ; string filepostfix = ; dbhelp dh = new dbhelp(); protected void page_load(object sender, eventargs e) txtname.focus(); protected void btnsub

39、mit_click(object sender, eventargs e) /进行添加下载资料信息 string str = fufile.postedfile.filename; if (str = string.empty) dh.messageshowbox(附件不能为空!); return; this.getfilepath(); filepostfix = str.substring(str.lastindexof(.); try /判断上传资料文件类型 if (ddltype.text.trim() = word文件) if (filepostfix != .doc) dh.mes

40、sageshowbox(请附加正确的word文件); return; else if (ddltype.text.trim() = excel表格) if (filepostfix != .xls) dh.messageshowbox(请附加正确的excel表格); return; /将文件进行物理添加 string filename = str.substring(str.lastindexof() + 1); string name = filename.substring(0,filename.length-4); string path = ././ + filepath + / + filename; fileinfo fileinfo = new fileinfo(str); long filesize = (fileinfo.length / 1024) / 1024; if (filesize 20) /限制文件大小不能超过20兆 dh.messageshowbox(对不起,文件大小不能超过20mb!); return; /将所上传文件信息上传到数据库中 string sql = insert into download (dname,dtype) values( + name + , + ddltype.t

温馨提示

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

评论

0/150

提交评论