《软件工程课程设计《社团管理系统》课程设计报告书.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计《社团管理系统》课程设计报告书.doc(36页珍藏版)》请在三一办公上搜索。
1、软件工程课程设计报告( 学年 第 学期)题 目: 专 业: 班 级: 姓名学号: 指导教师: 成 绩: 计算机科学与技术系 年 月 日目 录第一章 引 言2第二章 总体设计31.系统简介:32.需求分析:43.系统分析:6第三章 模块设计71.社团管理模块:72.系统E-R图:93.逻辑架构图:9第四章 流程设计101.数据流程图:102.系统顺序图:112.1协会会员登录112.2社团部部长登录122.3社团部老师登录132.4社团部老师审核协会注册表14第五章 主要页面及功能介绍151.系统主要页面:151.1系统首页151.2新闻动态查看页面161.3社联简介页面161.4资料下载页面1
2、71.5社团信息页面171.6用户注册页面181.7在线留言页面182.数据库设计:19第六章 系统重要功能代码231.Web用户控件:232.通用类代码:243.前台主要页面代码:273.1系统首页273.2下载页面283.3留言页面284.后台主要页面代码:304.1图片管理304.2信息管理31第七章 设计心得及参考文献341.设计心得:342.参考文献:35第一章 引 言系统背景、目的及意义:社团管理系统是为了管理好会员参加社团情况等信息而设计的。学校作为一种信息资源的集散地,会员和社团繁多,包含很多的信息数据的管理。现今,有很多的学校都是开始使用,甚至尚未使用计算机进行信息管理。根据
3、调查得知,他们以前对社团信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于会员参加社团情况的统计和查询等往往采用对社团的人工检查进行,对会员的参加社团的权限、以及社团代号等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管学校都有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是社团管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。一般会员参加社团情况是记录在文件上,社团的工作人员也只是当时对它比较清楚,时间长了,如再要进行查询,就得在众多的资料中
4、翻阅、查找了,造成查询费时、费力。如要对很长时间以前的参加社团情况进行更改就更加困难了。基于这些问题,我们认为有必要建立一个社团管理系统,使社团管理工作自动化、规范化,系统化,程序化,避免社团管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和注销等情况。第二章 总体设计1.系统简介:管理员可以通过超级用户身份登录,对系统进行全面的管理,对新用户的添加,编辑、删除,对信息进行管理。会员与非会员不同身份的用户进入不同的界面,进行不同的操作。会员可以查询自己参加社团的情况,及一些相关的操作。而非会员可以通过注册转界面,把自己的相关情况注册到社团管理系统中,同时也可以进行相应的操作
5、。2.需求分析:社团管理系统需要满足来自三方面的需求,这三个方面分别是会员、社团和管理员。会员的需求是查询院系各社团的活动情况、会员参加的各个社团情况及会员信息的修改;社团需对会员参加社团、注销社团的基本情况进行操作;社团管理系统的管理员的功能最为复杂,包括对会员、社团的活动等各方面的信息进行管理和统计,及系统状态的查看、维护并生成会员社团统计表。会员可以直接查看参加社团及社团活动情况,会员可以根据本人学号和密码登录系统,还可以进行对本人参加社团情况的查询和维护部分个人信息以及各社团的活动安排等相关信息。一般情况下,会员只应该查询和维护本人的参加社团情况和个人信息,若查询和维护其他会员的信息,
6、就要知道其他会员的学号和密码。这些是很难得到的,特别是密码,所以不但满足了会员的要求,还保护了会员的个人隐私。社团工作人员有修改会员个人信息的权限,所以需对工作人员登陆本模块进行更多的考虑。在此系统中,社团工作人员可以为会员加入社团或是登陆记录,并打印生成相应的报表给用户查看和确认院系管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对会员参加各社团相关信息的查询和统计、工作人员和管理人员信息查看及维护。社团管理员可以浏览、查询、修改、统计社团的基本信息;浏览、查询、统计和修改会员参加社团活动的基本信息,设计不同用户的操作权限和登陆方法对所有用户开放的会员信息查询和个人部分信息维护
7、查看个人情况信息维护会员个人密码根据注册的情况对数据库进行操作并生成报表。社团管理系统的数据流程:首先由社团工作人员或系统管理员等有录入权限的用户将各自权限范围内的信息进行录入处理,然后保存信息到数据库中。有权限的人可以对这些库信息进行修改和删除处理。所有用户均可以进行信息查询和统计,没有权限用户还可以基于注册界面进行注册,来参加相应的社团。3.系统分析:该系统是为了方便社团管理和各社团会员查看的相关信息。该系统主要分为三个界面:会员管理界面、注册界面和管理员登录界面,在会员管理界面中有登录、注册、管理、显示信息和重置五个按钮。在该界面下输入正确的学号和密码再点登录便可显示登录成功,如果输入有
8、误回提示输入错误,这样便为用户提供了安全性;如果点显示信息则可显示该会员在数据库中的信息;如果想新注册,则可以在会员管理界面中点注册,在注册界面中填入对应的信息,确认后即可把该信息加入数据库中;如果是管理员,则点管理进入管理员登录界面,在该界面管理员输入正确的用户名和密码就可修改数据库中的信息。如果输入了学号和密码后再点重置,则输入的数据清零,可以重新输入。第三章 模块设计1.社团管理模块:会员管理显示注册管理重置姓名性别学号班级联系电话系科注册社团密码-姓名密码学号系科班级确认密码性别用户名密码联系电话注册社团登录学号密码学号密码登录:在会员管理的界面下输入正确的学号和密码再点登录便可顺利登
9、录查看自己存储在数据库中的相关信息。注册:在会员管理界面中点注册,在注册界面中填入对应的信息,确认后即可把该信息加入数据库中。管理:点管理进入管理员登录界面,在该界面管理员输入正确的用户名和密码就可修改数据库中的信息。重置:点重置,则输入的数据清零,可以重新输入。显示:点该按钮就会显示该会员在数据库中的信息。2.系统E-R图:3.逻辑架构图:第四章 流程设计1.数据流程图:显示信息会员管理界面数据库shiyan学号密码dhl_hy学号密码登录成功管理登录不成功重置注册2.系统顺序图:2.1协会会员登录2.2社团部部长登录2.3社团部老师登录2.4社团部老师审核协会注册表第五章 主要页面及功能介
10、绍1.系统主要页面:1.1系统首页主要功能显示社团活动信息、相关公告、资料下载及新闻,并有用户登录模块,如图5-1-1所示:图5-1-11.2新闻动态查看页面在首页里点击新闻动态所进入的页面,显示当前最新所有新闻,点击详细新闻可以阅读新闻的全部内容。如图5-1-2图5-1-2 1.3社联简介页面主要是对学生团体联合会的简介。如图5-1-3图5-1-3 1.4资料下载页面主要是社团日常使用的相关表格或重要的学校相关文件下载。如图:5-1-4图5-1-4 1.5社团信息页面主要向浏览者展示社团的各种信息如协会章程,点击详细信息可以进行协会信息的详细查看。如图:5-1-5图5-1-5 1.6用户注册
11、页面分为社团注册与个人注册两种选择,社团注册必须要有相关部门授予的授权码方可进行注册,否则无法完成注册任务;个人注册只要按照系统要求填写信息便可完成注册。如图:5-1-6图5-1-6 1.7在线留言页面主要实现浏览者的留言功能,并且管理员可以通过后台管理对相关留言进行回复,该留言页面只会显示最新前几项留言。如图:5-1-7图5-1-72.数据库设计:该系统使用SQL SERVER作为应用程序的数据库,建立了有16张数据表,下面主要介绍以下9张具有代表性的表:Administration表用于存储管理员帐户的信息,AssociationInfor表用于存储协会部门信息,Depart表用于存储学院
12、系部信息, DownLoad表用于存储下载资料的存储路径信息, LeagueLogin_Table表用于存储社团注册信息, LeagueRule表用于存储协会章程信息,Massage表用来存储留言信息,News表用来存储新闻信息,ShowImage表用来存储新闻图片的存储路径,在6个数据表中,介绍一下新闻表和账户表如下:Administration表如表5-2-1所示:表5-2-1管理员信息表Id为该表主键,Name为管理员名称,Pwd为密码。AssociationInfo表如表5-2-2所示:表5-2-2社团部门表Id为该表主键,Department部门,Duty为部门职责,Rules协会章
13、程。Depart表如表5-2-3所示:表5-2-3系部表ID为该表主键,DepartName为系部名称,SpecialityName为所属系部的专业名称。DownLoad表如表5-2-4所示:表5-2-4资料下载表Id为该表主键,Dname为资料标题,Dtimes为上传时间,Dtype为文件类型,DfileFhpoto为文件存储路径。LeagueLogin_Table表如表5-2-5所示:表5-2-5社团注册表ID为该表主键,LeagueName为社团名称,LeaguePwd为密码,Name为负责人姓名,TeacherName为知道老师姓名,BiuldTime为成立时间,Depart为社团所属
14、系别,Speciality为所属专业,Phone为社团联系电话,CheckCode为授权码,IntRule判断社团章程章程是否添加。LeagueRule表如表5-2-6所示:表5-2-6社团章程表Id为该表主键,Name为章程所属社团名称,Rules为社团章程。Massage表如表5-2-7所示:表5-2-7留言信息表Id为该表主键,Name为留言者名称,Times为留言时间,Contents为留言内容,Reply为管理员的回复内容。News表如表5-2-8所示:表5-2-8新闻表NewID为该表主键,Name为新闻主题,Time为新闻发布时间,Viscera为新闻内容。ShowImage表如
15、表5-2-9所示:表5-2-9图片信息表Id为该表主键,FilePhotoPath为图片存储路径,PhotoName为图片名称。第六章 系统重要功能代码1.Web用户控件:该系统中创建了两个Web用户控件Foot.ascx和Head.ascx,在首页、新闻动态、社联简介、资料下载等页面的HTML代码里都进行了引用,调用方式为: Register指令注册用户控件,同时把属性TagName(标签名)和TagPrefix(标签前缀)添加到 Register指令中,Src属性表示该用户控件相对于父页面的相对地址。用户控件也是服务器端控件,还必须在用户控件代码中添加Runat=server属性,用法如下
16、:其中Head.ascx用户控件作用是显示导航栏Flash按钮,Foot.ascx用户控件作用是显示底部相关网站信息等。用户控件是非常易于代码重用的,可以把许多相关功能和用户界面封装在一个用户控件中,然后在任何需要该功能的地方重用此控件。2.通用类代码:在所有相关页面显示文件和Web用户控件的代码隐藏文件.aspx.cs或.ascx.cs中,通过对数据访问类的引用(以创建类实例方式),调用数据访问类里的相应函数完成相关功能,如建立数据库连接、打开和关闭数据库、对数据库执行查询、插入、删除和更新操作、页面登陆检验等。此处列举Dbhelp类(数据访问类)中主要函数的源码:using System;
17、using System.Data;using System.Configuration;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.SqlClient;using System.Text;using System.Text.RegularExpressions;/ /
18、 Dbhelp 的摘要说明/ public class Dbhelp protected static string con = ConfigurationManager.ConnectionStringsconnstr.ToString(); public SqlConnection conn = new SqlConnection(con); /public SqlConnection conn = new SqlConnection(Data Source=.;Initial Catalog=Studentdatabase;uid=sa;pwd=123456;); #region 用户登
19、录验证 / / 验证用户是否是合法用户 / / 接受SQL语句 / public int CheckLogin(string sql) try SqlCommand cmd = new SqlCommand(sql, conn); if (conn.State = ConnectionState.Closed) conn.Open(); int result = (int)cmd.ExecuteScalar(); return result; catch (Exception ex) HttpContext.Current.Response.Write(ex.Message); throw;
20、#endregion #region 用户信息提示 / / 对话框信息 / / 接受要显示给用户的信息 public void MessageShowBox(string TxtMessage) HttpContext.Current.Response.Write(alert( + TxtMessage + ); #endregion #region 查询数据库信息 / / 数据填充 / / 接受SQL语句 / 返回DataSet类型数据ds public DataSet GetData(string sql) try DataSet ds = new DataSet(); SqlDataAd
21、apter da = new SqlDataAdapter(sql, conn); if (conn.State = ConnectionState.Closed) conn.Open(); da.Fill(ds, DataTable); return ds; catch (Exception ex) HttpContext.Current.Response.Write(ex.Message); throw; #endregion #region 数据库信息更新 / / 实现数据库的更新 / / 接受Sql语句 / 返回受影响行数 public int Exucte(string sql) t
22、ry SqlCommand cmd = new SqlCommand(sql, conn); if (conn.State = ConnectionState.Closed) conn.Open(); int result = cmd.ExecuteNonQuery(); return result; catch (Exception ex) HttpContext.Current.Response.Write(ex.Message); throw; #endregion #region 读取数据库数据 public DataSet Excute1(string sql) DataSet ds
23、 = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sql,conn); if (conn.State = ConnectionState.Closed) conn.Open(); da.Fill(ds,News); if (conn.State = ConnectionState.Open) conn.Close(); return ds; #endregion #region Session传值判断注册身份 public void TeamAdd() HttpContext.Current.Sessionidentity = 团
24、体注册; HttpContext.Current.Response.Redirect(Register.aspx); public void Person() HttpContext.Current.Sessionidentity = 个人注册; HttpContext.Current.Response.Redirect(Register.aspx); #endregion #region 获取数据库字段 public SqlDataReader GetRed(string sql) SqlCommand cmd = new SqlCommand(sql,conn); if (conn.Sta
25、te = ConnectionState.Closed) conn.Open(); SqlDataReader red = cmd.ExecuteReader(); return red; red.Close(); conn.Close(); #endregion 3.前台主要页面代码:3.1系统首页ApplicationUserInfor = string.Empty;/将用户登陆信息置空 GVNews.DataSource = dh.GetData(select top 6 * from News order by NewID desc);/读取最新前六条新闻 GVNews.DataBin
26、d(); TxtName.Focus(); GvDonload.DataSource = dh.GetData(select top 5 DName,Id from Download order by Id desc);/读取最新下载资料 GvDonload.DataBind(); GvLeague.DataSource = dh.GetData(select top 5 * from League_Table order by ID desc);/填充协会信息模块 GvLeague.DataBind(); DataSet ds = dh.GetData(select top 1 Conten
27、ts from Affiche order by Id desc);/填充通告模块 if(ds.Tables0.Rows.Count0) LblAd.Text = ds.Tables0.Rows00.ToString(); GVActivity.DataSource = 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 V
28、iscera from News order by NewID desc); /填充专题报道信息模块 if(ds.Tables0.Rows.Count0) LblReport.Text = ds.Tables0.Rows00.ToString(); DataList1.DataSource = dh.GetData(select * from ShowImage); DataList1.DataKeyField = Id;/根据主键:Id读取数据库中新闻图片的存储路径用以动态填充图片新闻模块 DataList1.DataBind(); DataList2.DataSource = dh.Get
29、Data(select top 6 * from UrlMessege order by Id desc);DataList2.DataBind();/填充实用信息模块在HTML代码中对后台代码的Data数据集进行调用: asp:Image id=ImageShow AlternateText=风景如画 Height=120 Width=90 runat=server ImageUrl= _designer:wfdid=w33.2下载页面从数据库中读取文件路径: string num = ds.Tables0.Rows00.ToString(); strin
30、g FilePath = ds.Tables0.Rows01.ToString(); 判断数据库文件类型: if (FilePath.Trim() = Word文件) filetype = DownLoad_Doc; filepostfix = .doc; else if (FilePath.Trim() = Excel表格) filetype = DownLoad_xls; filepostfix = .xls; string fileName = num + filepostfix;/客户端保存的文件名 string filePath = Server.MapPath(filetype +
31、 / + fileName);/路径 /以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open); byte bytes = new byte(int)fs.Length; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.ContentType = application/octet-stream; /通知浏览器下载文件而不是打开 Response.AddHeader(Content-Disposition, attachment; filename= +
32、HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8); Response.BinaryWrite(bytes); Response.Flush(); Response.End();3.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.WebCo
33、ntrols;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;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 se
34、nder, EventArgs e) DLBinit(sql);#region 绑定数据 protected void DLBinit(string sql) /用数据适配器对DataSet数据集进行填充留言本内容 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.DefaultView; DataList1.DataSource =