计算机应用与开发实训报告正文模版.docx
《计算机应用与开发实训报告正文模版.docx》由会员分享,可在线阅读,更多相关《计算机应用与开发实训报告正文模版.docx(12页珍藏版)》请在冰豆网上搜索。
计算机应用与开发实训报告正文模版
一.实训内容2
1、案例分析2
2、解决方案2
数据库关系图(E-R图)如下:
3
物理图3
用例图4
系统功能模块图5
3、程序实现5
系统实现的功能:
5
用户登录5
给用户添加权限6
给组添加权限6
给角色添加权限7
给用户添加角色7
删除一个角色7
删除一个组8
给用户,组,角色添加角色9
二.项目调试与测试9
登录界面9
所有权限10
用户管理10
角色管理11
组管理11
三.实训小结13
一.实训内容
1、案例分析
企业应用系统对安全问题有较高的要求,基于角色的访问控制方法,实现了用户与访问权限的逻辑分离,更符合企业的用户、组织、数据和应用特征。
把整个访问控制过程分成两步:
访问权限与角色相关联,角色再与用户或者组关联,从而实现了用户与访问权限的逻辑分离。
它极大的方便了权限管理。
2、解决方案
为此我们要设计如下几张关键的数据表,
用户:
记录用户信息;
角色:
权限的集合;
组:
用户的集合;
权限:
权限的基本信息;
数据库关系图(E-R图)如下:
物理图
用例图
系统功能模块图
3、程序实现
代码实现应分为三大部分:
系统实现的功能:
1、创建、删除,更新角色,并添加权限到角色;
2、创建、删除,更新用户,并可个用户添加权限或者角色;
3、创建、删除,更新组,并给组添加用户,在给组添加权限;
用户登录
采用动态权限,用TreeView获取数据库中用户的权限:
ALTERPROCEDUREGetAuthority
@cnoint
AS
select*fromAuthoritywhereanoin(selectanofromc_awherecno=@cno)
union
select*fromAuthoritywhereanoin(selectanofromg_awheregnoin(
selectgnofromc_gwherecno=@cno))
union
select*fromAuthoritywhereanoin(selectanofroma_acwhereacnoin(
selectacnofromc_acwherecno=@cno))
页面加载事件中:
intcno=Convert.ToInt32(Request.Cookies["id"].Value);
stringconn=ConfigurationManager.ConnectionStrings["GDSConnectionString"].ToString();
SqlConnectionmycon=newSqlConnection(conn);
mycon.Open();
SqlCommandmycom=newSqlCommand();
mycom.CommandText="GetAuthority";
mycom.CommandType=CommandType.StoredProcedure;
mycom.Connection=mycon;
SqlParameterp1=newSqlParameter("@cno",cno);
mycom.Parameters.Add(p1);
DataTabledt=newDataTable();
SqlDataAdaptersda=newSqlDataAdapter(mycom);
sda.Fill(dt);
GridView1.DataSource=dt;
GridView1.DataBind();
给用户添加权限
ALTERPROCEDUREAddOneAuthToCus
@cnoint,
@anoint
AS
insertintoc_avalues(@cno,@ano)
给组添加权限
ALTERPROCEDUREAddOneAuthToGro
@anoint,
@gnoint
AS
insertintog_avalues(@ano,@gno)
给角色添加权限
ALTERPROCEDUREAddOneAuthToAct
@anoint,
@acnoint
AS
insertintoa_acvalues(@ano,@acno)
给用户添加角色
ALTERPROCEDUREAddOneCusToAct
@cnoint,
@acnoint
AS
insertintoc_acvalues(@cno,@acno)
删除一个角色
先判断该角色下是否还有用户,若有,则不能删除
ALTERPROCEDUREDeleteOneActor
@acnoint,
@typeintoutput
AS
ifnotexists(select*fromc_acwhereacno=@acno)
begin
ifnotexists(select*froma_acwhereacno=@acno)
begin
deletefromActorwhereacno=@acno
set@type=1
end
End
按钮点击事件中:
protectedvoidButton1_Click(objectsender,EventArgse)
{
inttype=0;
for(inti=0;i<=GridView1.Rows.Count-1;i++)
{
CheckBoxcheckbox=(System.Web.UI.WebControls.CheckBox)
GridView1.Rows[i].FindControl("CheckBox1");
if(checkbox.Checked==true)
{
stringconn=ConfigurationManager.ConnectionStrings["GDSConnectionString"].ToString();
SqlConnectionmycon=newSqlConnection(conn);
mycon.Open();
SqlCommandmycom=newSqlCommand();
mycom.CommandText="DeleteOneActor";
mycom.CommandType=CommandType.StoredProcedure;
mycom.Connection=mycon;
SqlParameterp1=newSqlParameter("@acno",GridView1.DataKeys[i].Value);
mycom.Parameters.Add(p1);
SqlParameterp2=newSqlParameter();
p2.ParameterName="@type";
p2.Value=type;
p2.SqlDbType=SqlDbType.Int;
p2.Direction=ParameterDirection.Output;
mycom.Parameters.Add(p2);
mycom.ExecuteNonQuery();
type=Convert.ToInt32(p2.Value);
mycom.Parameters.Clear();
mycon.Close();
}
}
if(type==1)
ClientScript.RegisterStartupScript(GetType(),"","window.alert('删除成功!
');",true);
else
ClientScript.RegisterStartupScript(GetType(),"",
"window.alert('该角色尚有成员或权限,无法删除!
');",true);
Bind();
}
删除一个组
先判断该角色下是否还有用户,若有,则不能删除
ALTERPROCEDUREDeleteOneGroup
@gnoint,
@typeintoutput
AS
ifnotexists(select*fromg_awheregno=@gno)
begin
ifnotexists(select*fromc_gwheregno=@gno)
begin
deletefromGroupswheregno=@gno
set@type=1
end
End
给用户,组,角色添加角色
需提取所有权限中他们没有添加的那部分
ALTERPROCEDUREGetActNotAddAuth
@acnoint
AS
select*fromAuthoritywhereanonotin(selectanofroma_acwhereacno=@acno)
二.项目调试与测试
登录界面
已拥有权限的用户登录进去后
左边列表即为该用户的权限
所有权限
用户管理
用户管理可以查看所有用户,添加用户,删除用户,通过单选按钮选择用户并对用户的权限进行修改;权限授予需获取该用户没有的权限,权限回收需获取用户已获得的权限。
角色管理
角色管理可以查看所有角色,添加角色,对该角色下的成员进行增、删、改、查操作,通过复选框按钮选择用户进行添加或删除用户,同样的通过复选框按钮选择权限对该角色下的权限进行修改;添加用户需获取该角色不包含的用户,删除用户需获取该角色包含的角色;权限授予需获取该用户没有的权限,权限回收需获取用户已获得的权限。
组管理
组管理可以查看所有组,添加组,对该组下的成员进行增、删、改、查操作,通过复选框按钮选择用户进行添加或删除用户,同样的通过复选框按钮选择权限对该组下的权限进行修改;添加用户需获取该组不包含的用户,删除成员需获取该组包含的角色;权限授予需获取该组没有的权限,权限回收需获取组已获得的权限。
三.实训小结
通过这个培训,我学到了不少东西,没培训之前,对做系统的概念很模糊,无从下手,现在,我能独立的完成一个中小型系统的设计与实现。
成长了不少。
这个培训让我学到了很多知识:
1、SQL语句、存储过程、数据库的设计与实现
2、PowerBulider和PowerDesinger的熟练运用
3、HTML、DIV+CSS、javascript、jquery语音
4、C#程序设计
5、ASP.NET内置对象及.NET大型软件控件
6、ADO.NET语音访问数据库
7、Linq访问数据库
8、Ajax,局部刷新
9、系统需求分析,数据分析
10、......
感谢这段时间以来老师的悉心栽培,老师辛苦了!
也感谢同学们在生活学习上的帮助,,很多知识都还需要巩固,要学的知识还有很多,后我会继续努力。
成绩评定表
教师评语
考勤成绩:
占总成绩比例10%
平时成绩:
,占总成绩比例20%
实训报告成绩:
,占总成绩比例70%
实训总成绩:
指导教师签字:
年月日