软件工程设计报告总.docx
- 文档编号:4105966
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:29
- 大小:909.91KB
软件工程设计报告总.docx
《软件工程设计报告总.docx》由会员分享,可在线阅读,更多相关《软件工程设计报告总.docx(29页珍藏版)》请在冰豆网上搜索。
软件工程设计报告总
面向对象软件工程
与UML
--------高校图书管理系统
一、功能需求
本系统有新书入库、借书、还书、图书查询四大功能,共8项子功能。
1.1新书入库
1.2借书
(1)检查读者有效性
(2)检查读者资格
(3)办理借书
1.3还书
(1)办理还书
(2)办理罚款
1.4图书查询
(1)查询要求分类
(2)查询读者
(3)查询借书
1.5功能需求与程序的关系
功能需求
程序单元模块
新书入库
addbook
借书
lendbook
还书
returnbook
查询借书
querylending
查询读者
queryreader
读者管理
Addreader(增加读者),delreader(删除读者),
modifyreader(修改读者)
基础信息管理
Deptmanage(部门管理),rulmanage(借书规则管理)
数据导入导出
Dataimp(数据导入),dataexp(数据导出)
日志管理
Browslog(查看日志),trimlog(消减日志),
storelog(归档日志)
用户管理
Adduser(增加用户),deluser(删除用户),
Modifyuser(修改用户),modifypassword(修改口令)
二、数据流图
2.1数据流图
罚款单
(a)顶层数据流图
书
罚款单
(b)0层数据流图
图书文件
2.2
新书入库
2.3
借书
2.1
要求分类
图书条码
(c)一层数据流图
图书文件
(d)一层数据流图
图书条码
(e)二层数据流图
罚款单
(f)二层数据流图
三、结构图设计
3.1总体结构图
借书
lendbook
连接数据库
dataunit
办理借书
dolend
检查读者资格
checklendmax
检查读者有效性
checkreader
数据导入导出
3.1.1“借书”程序层次结构图
3.1.2“还书”程序层次结构图
连接数据库
dataunit
3.1.3“查询借书”程序层次结构图
连接数据库
dataunit
四、数据字典
4.1数据流
图书管理要求=[新书入库|借书|还书]
入库单=分类目录号+索书号+数量+书名+作者+内容摘要+价格+购书日期
索书号=1{0-9|A-Z|/|.}14
借书记录=读者条码+图书条码+借书日期
图书条码=1{0-9}14
读者条码=1{0-9}14
罚款单=逾期天数+罚款金额
查询要求=[读者情况|图书情况]
读者情况=读者条码+姓名+所在单位+{借书情况}
借书情况=书名+分类目录号+索书号+图书条码+借阅日期
图书情况=书名+作者+分类目录号+索书号+总数+库存数
注:
每个借书证上都有一个读者条码,可包括学院代码、读者类型(教师职称/学生)、所在单位(系部、班级、学号)等信息。
每本图书上都有一个图书条码,可包括学院代码、语种代码(中文、英文)、图书流水号等信息。
每一本书有唯一的图书流水号、唯一的图书条码。
索书号由分类目录号和种次号(同一大类中的子类号)组成。
同一大类图书的分类目录号相同。
同一类图书的多个副本具有相同的分类目录号和索书号,但图书条码不同。
4.2数据存储(文件)
文件名:
读者文件
组成:
{读者条码+姓名+所在单位+读者类型+电话+电子邮件}
组织:
按读者递增顺序排列
注:
读者类型是对读者的划分,不同类型的读者有不同的借阅规则,即借书限额(册数)和借阅期(天数)等项目不同。
文件名:
图书文库
组成:
{分类目录号+书名+作者+出版社+出版日期+ISBN+内容摘要+价格+入库日期+{图书条码+图书状态+索引号}}
组织:
按分类目录号递增顺序排列
图书状态=[遗失|遗失赔书|库本|借出|预约|在库可借]
文件名:
借书文件
组成:
{借书记录+还书日期}
组织:
按借阅日期递增顺序排列
文件名:
借阅规则
组成:
{读者类型代码+读者类型描述+允许册数+借期+续借期+可预约次数+可续借次数}
组织:
按读者类型代码递增顺序排列
读者类型描述={教师|硕士|本科生|专科生|进修生}
文件名:
罚款文件
组成:
{读者条码+图书条码+违章原因+成本罚款+罚款倍数+罚款数额+以往欠款+欠款总额+总违章次数}
组织:
按读者条码递增顺序排列
违章原因=[过失|遗失|遗失赔书|其他]
4.3小说明
小说明只描述最底层的基本加工。
加工编号:
1
加工名:
检查有效性
输入流:
图书管理要求,查询要求
输出流:
有效的图书管理要求,有效的查询要求
加工逻辑:
检查输入要求的有效性
加工编号:
2.1
加工名:
要求分类
输入流:
有效的图书管理要求
输出流:
入库单,读者条码,图书条码
加工逻辑:
根据图书管理要求的类型选择
case1:
新书入库,输出图书文件
case2:
借书,输出所借图书
case3:
还书,输出罚款单
加工编号:
2.2
加工名:
新书入库
输入流:
人库单
输出流:
图书文件
加工逻辑:
输入填写好的入库单,并写入图书文件
加工编号:
3.1
加工名:
查询要求分类
输入流:
有效的查询要求
输出流:
查询读者情况,查询借书情况
加工逻辑:
根据查询类别选择
case1:
查询读者情况
case2:
查询借书情况
加工编号:
3.2
加工名:
查询读者
输入流:
查询读者情况,读者文件,借书文件
输出流:
读者情况
加工逻辑:
根据查询读者的情况,从读者文件中读出读者记录,并从借书文件中读出该读者的借书记录,综合输出该读者的借阅情况
加工编号:
3.3
加工名:
查询借书
输入流:
查询借书情况,借书文件,图书文件
输出流:
借书情况
加工逻辑:
根据查询图书的情况从读者文件中读出该书信息,并从借书文件中读出该书的借阅记录,综合输出该书的借阅情况。
加工编号:
2.3.1
加工名:
检查读者有效性
输入流:
读者条码,读者文件
输出流:
有效借书证或无效借书证
加工逻辑:
根据借书证上的读者条码和读者文件的内容,检查该读者是否为合法读者
加工编号:
2.3.2
加工名:
检查读者资格
输入流:
有效借书证,借书文件,借阅规则文件
输出流:
核准后的借书证
加工逻辑:
从借书文件中读出该读者的当前结束情况,检查他所借图书是否已超过借书限额(从借书规则文件获得),同时检查欲借书状态是否为可借。
加工编号:
2.3.3
加工名:
办理借书
输入流:
核准后的借书证,图书条码
输出流:
图书文件,借书文件
加工逻辑:
根据核准后的借书证及图书条码内容,将图书文件中该书的图书状态置为“借出”,同时在借书文件组写入读者的借书信息。
加工编码:
2.4.1
加工名:
办理还书
输入流:
图书条码,借书文件,图书文件
输出流:
借书文件,图书文件,逾期天数
加工逻辑:
根据图书条码,将图书文件中该书的图书状态置为“在库可借”,同时把借书文件中相应读者的借书记录删除;根据还书日期和当前系统日期计算该图书是否已过期,并输出逾期天数。
加工编号:
2.4.2
加工名:
办理罚款
输入流:
逾期天数
输出流:
罚款单,罚款文件
加工逻辑:
根据图书过期天数,计算罚款金额,写入罚款文件,输出罚款罚款单。
五、PAD图
5.1“检查读者有效性”程序的流程图
F
5.2“检查读者资格”程序的流程图
F
5.3“办理借书”程序的流程图
F
六、代码实现
6.1登录模块
代码如下:
usingSystem;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
usingSystem.Data.SqlClient;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringconnstr=ConfigurationManager.ConnectionStrings["图书管理系统ConnectionString"].ConnectionString;
SqlConnectionconn=newSqlConnection(connstr);
if(DropDownList1.Text=="==请选择登录类别==")
{
Response.Write("请选择登录类别");
return;
}
if(DropDownList1.Text=="读者")
{
stringquery=string.Format("select*from读者信息表where借书证号='{0}'and密码='{1}'",TextBox2.Text.Trim(),TextBox3.Text.Trim());
SqlCommandcmd=newSqlCommand(query,conn);
conn.Open();
objectob=cmd.ExecuteScalar();
if(ob==null)
{
Response.Write("借书证号和密码不符");
return;
}
else
{
Session["Loginname"]=ob.ToString();
Response.Redirect("booksearch.aspx");
}
conn.Close();
}
if(DropDownList1.Text=="管理员")
{
stringquery=string.Format("select*from管理员表where角色名='{0}'and密码='{1}'",TextBox2.Text.Trim(),TextBox3.Text.Trim());
SqlCommandcmd=newSqlCommand(query,conn);
conn.Open();
objectob=cmd.ExecuteScalar();
if(ob==null)
{
Response.Write("角色名和密码不符");
return;
}
else
{
Session["LoginName"]=ob.ToString();
Response.Redirect("booksearch.aspx");
}
conn.Close();
}
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
TextBox2.Text="";
TextBox3.Text="";
Response.Redirect("Reader.aspx");
}
protectedvoidButton3_Click(objectsender,EventArgse)
{
TextBox2.Text="";
TextBox3.Text="";
}
protectedvoidLinkButton1_Click(objectsender,EventArgse)
{
Response.Redirect("Reader.aspx");
}
protectedvoidLinkButton2_Click(objectsender,EventArgse)
{
Response.Redirect("BorrowBook.aspx");
}
protectedvoidLinkButton3_Click(objectsender,EventArgse)
{
Response.Redirect("ReturnBook.aspx");
}
protectedvoidLinkButton4_Click(objectsender,EventArgse)
{
Response.Redirect("BorrowSearch.aspx");
}
protectedvoidLinkButton5_Click(objectsender,EventArgse)
{
Response.Redirect("book.aspx");
}
}
6.2读者管理模块:
代码如下:
usingSystem;
usingSystem.Collections;
usingSystem.Configuration;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.HtmlControls;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Linq;
usingSystem.Data.SqlClient;
publicpartialclassreader:
System.Web.UI.Page
{
stringconnstr=ConfigurationManager.ConnectionStrings["图书管理系统ConnectionString"].ConnectionString;
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(TextBox1.Text==""||TextBox2.Text==""||TextBox3.Text=="")
{
Response.Write("请输入完整");
return;
}
stringsqlstr;
SqlConnectionconn=newSqlConnection(connstr);
if(!
string.IsNullOrEmpty(FileUpload1.FileName))
{
sqlstr="insertinto[读者信息表]([借书证号],[密码],[姓名],[性别],[专业],[出生时间],[照片],[联系方式],[备注])values(@readerid,@password,@name,@sex,@spec,@born,@photo,@addr,@remark)";
}
else
{
sqlstr="insert[读者信息表]([借书证号],[密码],[姓名],[性别],[专业],[出生时间],[联系方式],[备注])values(@readerid,@password,@name,@sex,@spec,@born,@addr,@remark)";
}
SqlCommandcmd=newSqlCommand(sqlstr,conn);
cmd.Parameters.Add("@readerid",SqlDbType.Char,8).Value=TextBox1.Text.Trim();
cmd.Parameters.Add("@password",SqlDbType.Char,8).Value=TextBox4.Text.Trim();
cmd.Parameters.Add("@name",SqlDbType.Char,8).Value=TextBox2.Text.Trim();
cmd.Parameters.Add("@sex",SqlDbType.VarChar,20).Value=RadioButtonList1.SelectedValue;
cmd.Parameters.Add("@spec",SqlDbType.Char,8).Value=DropDownList1.SelectedValue;
cmd.Parameters.Add("@born",SqlDbType.DateTime).Value=TextBox3.Text.Trim();
cmd.Parameters.Add("@addr",SqlDbType.Xml).Value=TextBox5.Text.Trim();
cmd.Parameters.Add("@remark",SqlDbType.Char,8).Value=TextBox6.Text.Trim();
if(!
string.IsNullOrEmpty(FileUpload1.FileName))
{
cmd.Parameters.Add("@photo",SqlDbType.VarBinary);
cmd.Parameters["@photo"].Value=FileUpload1.FileBytes;
}
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
if(TextBox1.Text=="")
{
Response.Write("请输入借书证号");
return;
}
SqlConnectionconn=newSqlConnection(connstr);
stringsqlstr="deletefrom[读者信息表]where[借书证号]='"+TextBox1.Text.Trim()+"'";
SqlCommandcmd=newSqlCommand(sqlstr,conn);
conn.Open();
inta=cmd.ExecuteNonQuery();
if(a==1)
{
Response.Write("删除成功");
}
else
{
Response.Write("数据库中无此读者");
}
conn.Close();
}
protectedvoidButton3_Click(objectsender,EventArgse)
{
if(TextBox1.Text=="")
{
Response.Write("请输入借书证号");
return;
}
SqlConnectionconn=newSqlConnection(connstr);
stringsqlstr="update[读者信息表]set";
if(TextBox2.Text.Trim()!
="")
{
sqlstr+="[姓名]='"+TextBox2.Text.Trim()+"',";
}
if(TextBox3.Text.Trim().ToString()!
="")
{
sqlstr+="[出生时间]='"+TextBox3.Text.Trim()+"',";
}
if(TextBox4.Text.Trim()!
="")
{
sqlstr+="[密码]='"+TextBox4.Text.Trim()+"',";
}
if(TextBox6.Text.Trim().ToString()!
="")
{
sqlstr+="[备注]='"+TextBox6.Text.Trim()+"',";
}
if(!
string.IsNullOrEmpty(FileUpload1.FileName))
{
sqlstr+="[照片]=@Photo,";
}
if(TextBox5.Text.Trim()!
="")
{
sqlstr+="[联系方式]=@Photo,";
}
sqlstr+="[专业]='"+DropDownList1.SelectedValue+"',"+"[性别]='"+RadioButtonList1.SelectedValue+"'";
sqlstr+="where借书证号='"+TextBox1.Text.Trim()+"'";
SqlCommandcmd=newSqlCommand(sqlstr,conn);
cmd.Parameters.Add("@Photo",SqlDbType.VarBinary);
cmd.Parameters["@Photo"].Value=FileUpload1.FileBytes;
cmd.Parameters.Add("@Addr",SqlDbType.Xml).Value=TextBox5.Text.Trim();
conn.Open();
intyxh=cmd.ExecuteNonQuery();
if(yxh!
=1)
{
Response.Write("数据库中没有此读者!
");
}
conn.Close();
}
protectedvoidButton4_Click(objectsender,EventArgse)
{
if(TextBox1.Text=="")
{
Response.Write("请输入借书证号");
return;
}
SqlConnectionconn=newSqlConnection(connstr);
stringsqlstrSelect="select[密码],[姓名],[性别],[出生时间],[专业],[借书量],[照片],[备注],[联系方式],dbo.L_count1('"+TextBox1.Text.Trim()+"')AS借书次数from[读者信息表]where[借书证号]='"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 设计 报告