固定资产管理系统软件工程.docx
《固定资产管理系统软件工程.docx》由会员分享,可在线阅读,更多相关《固定资产管理系统软件工程.docx(34页珍藏版)》请在冰豆网上搜索。
固定资产管理系统软件工程
软件工程实验报告
设计题目:
固定资产管理系统
系别:
信息工程学院
专业:
信息工程
班级:
0902班
学生姓名:
肖文名
学号:
*************
日期:
2012年6月11日
******
1需求分析
1.1系统现状
固定资产具有价值高,使用周期长、使用地点分散、管理难度大等特点。
据此分析原系统主要问题有:
1.许多大规模企业组织拥有的固定资产数量大、种类多、使用周期长,因此使用人工管理将面临固定资产的增加、减少、转移、租赁、停用、封存、闲置、报废等不易管理的问题。
2.固定资产的历史操作和资产统计工作非常困难,容易导致资产流失和资产重复购置,花费不必要的资金。
3.目前多数固定资产管理系统采用人工手工方式录入数据,不仅速度慢、还易产生错误。
4.不能及时更新固定资产的清单,导致资产外泄,资金无故减少。
1.2用户需求分析
根据用企业要求以及现代化管理的准则,要求新开发的固定资产管理系统能够根据企业需要查询有关固定资产管理各类信息,能够查询出任何时间的资产增加、减少、保管、使用、清理报废情况,保证账面和实物相符等。
固定资产管理系统需要实现的功能如下:
1.正确提出固定资产的折旧,计算固定资产的利用效果,以便于提高固定资产利用率,减少资产流失。
2.能够对固定资产进行统计分析,以便于财务部门进行管理。
3.能够及时打印出各种各样的报表,用于会计查帐或审核。
4.作为一个正规的固定资产管理系统,需要有身份的校验,以及其他常用的辅助工具的设置。
总之本系统能够快速、方便、准确的管理企业的固定资产,可以用来实现:
登记新购买的资产、记录进行过维修的资产、记录进行了报废处理的资产以及对现有的资产进行统计和核查。
1.3系统功能需求
待开发的软件功能需求:
本系统主要内容包括固定资产的购买入库,报废,查询等功能,可以将其分为档案管理、资产管理以及查询三个子模块。
1.4总体功能需求
固定资产管理主要包括档案管理、资产管理和资产查询管理三个模块(如图1),每个模块又可以细分为几个小模块,具体层次方框图如下:
图1系统层次方框图
对系统功能解释如下:
1.档案管理:
当新购入固定资产时会在系统中存档,维修资产的时候会登记维修记录,如果有资产报废和外界也要在系统中有记录;
2.资产管理:
该子系统主要负责对固定资产的购买,维修。
如果有需要外界也可以发出外借的指令。
对已经不能够使用的资产施行报废处理,并向有关部门发送报废记录;
3.查询管理:
主要负责对现有的总资产的查询。
对外借出的资产信息的查询以及正在维护的信息查询,对报废损失的资产的查询。
由此可以得到系统的顶层数据流图,如图2:
图2系统顶层数据流图
进一步细化后得到数据流图如下:
图3细化后的数据流图
2概要设计
2.1系统的层次图
系统层次图如下:
图4系统层次图
2.2接口设计
1.外部接口
(1)用户界面
采用控制台用户界面,包含按键选项。
(2)软件平台
软件运行于windows2000,windows2007。
2.内部接口
(1).登陆模块:
系统刚启动时进入消息循环状态,实现用户登陆功能;
(2).资产管理模块:
由主系统调用,由相应选择激活,之后进入选择循环状态;
(3).资产查询模块:
由系统调用,由相应选择激活,之后进入选择循环状态;
(4).退出系统模块:
由系统调用,正常退出系统;
(5).购入资产模块:
由资产管理子系统调用,由相应选择激活,之后进入选择循环状态;
(6).购入记录:
由购入资产模块调用,由相应选择激活,之后返回购入资产模块;
(7).资产维修模块:
由资产管理子系统调用,由相应选择激活,之后进入选择训环状态;
(8).维修记录模块:
由资产维修模块调用,由相应选择激活,之后返回资产维修模块;
(9).资产外借模块:
由资产管理子系统调用,由相应选择激活,之后进入选择循环状态;
(10).外借记录模块:
由资产外借模块调用,由相应选择激活,之后返回资产外借模块;
(11).资产报废模块:
由资产管理子系统调用,由相应选择激活,之后进入选择循环状态;
(12).报废记录模块:
由资产报废模块调用,由相应选择激活,之后返回资产报废模块;
(13).总资产查询模块:
由资产查询子系统调用,由相应选择激活,之后进入选择循环状态;
(14).维修查询模块:
由资产查询子系统调用,由相应选择激活,之后进入选择循环状态;
(15).报废查询模块:
由资产查询子系统调用,由相应选择激活,之后进入选择循环状态;
(16).外借查询模块:
由资产查询子系统调用,由相应选择激活,之后进入选择循环状态;
(17).返回主页模块:
由资产查询子系统调用,由相应选择激活,之后返回主页。
2.3数据结构设计
由数据字典和功能的需求可以设计出这样的数据结构:
链式数据结构。
本系统对信息的处理都采用链表的结构来处理信息。
2.4出错处理设计
在资产查询,资产管理模块中,如果有违规操作就会显示提示信息,并且处理出错的操作。
例如:
在维修时需要输入资产的id,如果在总资产中没有这个id,那么就会提示“没有这个资产的信息”并且返回到主页面。
2.5安全设计
本系统采用密码验证的方式进入系统。
以保证系统数据的安全,不让数据泄漏以及被违规修改。
2.6维护设计
系统严格按照设计规范进行设计,并保持各阶段文档的完整性,为以后对软件的维护打好基础。
3详细设计
在以上工作的基础上,基本的设计已经完成。
由此可以得出整个系统的工作流程:
1.系统启动,进入身份验证。
2.初始化系统,进入系统操作界面。
3.进入选择循环状态,通过选择驱动激活各模块,执行各任务。
4.一任务执行完毕后重新进入消息循环状态。
5.通过事件驱动退出系统。
详细的数据流图见图3,层次图见图2。
4.实现与调试分析
4.1.实现环境
本系统在visualstudio2010开发环境下开发
4.2.语言选择
本系统使用C++编写
4.3.调试分析
在编写系统的过程之中难免会遇到出错。
使用蛮干法,回溯法和原因排除法等调试方法进行调试分析,最终纠正错误。
5.测试分析
5.1.测试数据
测试数据表如下:
资产编号
资产名称
生产厂家
生产日期
购买日期
使用年限
购买价格
购买数量
1001
电脑
惠普
2010/2/6
2011/1/3
5
5000
4
1002
风扇
美的
2009/3/5
2011/6/9
7
200
180
1003
饮水机
南山
2011/3/5
2014/6/5
3
300
22
1004
空调
海尔
2011/5/9
2020/5/4
9
7000
9
1005
冰箱
海尔
2009/1/5
2024/5/9
15
5200
10
5.2.测试结果
1.根据系统提示输入下测试表中的测试数据
登陆系统,提示输入密码界面如下(本系统初始密码为”hello”):
图5系统登陆界面
正确输入密码后进入主菜单:
图6主菜单界面
选1进入第二菜单,任选一功能,如输入购买资产
(1):
图7购买菜单界面
再购入其它资产,0返回主菜单,2查询,1查询总资产如下:
图8总资产查询界面
将资产1001号进行维修:
图9维修界面
将1002报废:
图10报废界面
将1003外借:
图11借出资产界面
上述操作已进行后再查询:
图12报废资产记录查询
借出资产查询
图13借出资产记录查询界面
维修查询:
图14资产维修记录查询界面
7.用户手册
本系统界面功能清楚简单,用户可以根据界面提示完成相应操作。
具体操作:
1.运行程序,会出现主菜单,用户输入密码(初始密码为”hello”);
2.密码正确输入,出现第二界面,三个主操作(资产管理,资产查询,退出系统);
3.输入对应编号,出现第三界面。
选项资产管理对应功能有:
资产购买,维修资产,报废资产,借出资产,返回主菜单(在每个非第一界面均有此功能);选项资产查询对应功能有:
总资产查询,查询报废记录,查询维修记录,查询借出记录等。
总之本系统的操作界面提示简单易懂,功能具体适合任何人员操作使用。
8.总结
通过本次课程设计,本人掌握了软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;通过固定资产系统的设计,提高了对整个软件开发过程的能力,让能切实体会到软件工程在实践中的指导作用。
通过课程设计,学会了按软件工程的要求完成规范的各项软件开发文档,对提高软件开发能力和项目管理能力有重要的现实意义。
参考文献
[1]张海藩.软件工程导论.北京:
清华大学出版社,2004
[2]陈明.实用软件工程基础.北京:
清华大学出版社,2003
[3]殷人昆.实用软件工程.北京:
清华大学出版社,2003
附录:
#include
#include
#include
#include
usingnamespacestd;
//-------购入固定资产------------------------------
typedefstructsolid_substance
{
stringid;//资产编号
stringname;//资产名称
stringpro_factury;//生产厂家
stringpro_date;//生产日期
stringbuy_date;//购买日期
stringuse_age;//使用年限
intvalue;//购买价值
intnum;//购买的数量
solid_substance*next;//下一个资产的指针
}Buy_Substance;
//------经过维修的固定资产-------------------------
typedefstructrepair_substance
{
stringid;
stringname;
stringpro_factury;
stringpro_date;
stringbuy_date;
intrepair_value;//维修费用
repair_substance*next;
}Repair_Substance;
//------报废的固定资产------------------------------
typedefstructreject_substance
{
stringid;
stringname;
stringpro_factury;
stringpro_date;
stringbuy_date;
stringuse_age;
intvalue;//购买价值
stringreject_date;//报废日期
reject_substance*next;
}Reject_Substance;
//-----出借的资产----------------------------------
typedefstructloan_substance
{
stringid;
stringname;
stringpro_factury;
stringpro_date;
stringbuy_date;
stringuse_age;
intvalue;
stringloan_date;//出借日期
loan_substance*next;
}Loan_Substance;
//===================================================
fstreamSolidFile;
fstreamRepairFile;
fstreamRejectFile;
fstreamLoanFile;
voidOpenFile()
{
SolidFile.open("固定资产信息.txt",ios:
:
in|ios:
:
out|ios:
:
app);
if(!
SolidFile)
{
cout<<"cannotopenfile!
\n";
exit
(1);
}
SolidFile<<<<<RepairFile.open("维修资产信息.txt",ios:
:
in|ios:
:
out|ios:
:
app);
if(!
RepairFile)
{
cout<<"cannotopenthefile!
\n";
exit
(1);
}
RepairFile<<<<RejectFile.open("报废资产信息.txt",ios:
:
in|ios:
:
out);
if(!
RejectFile)
{
cout<<"cannotopenfile!
\n";
exit
(1);
}
RejectFile<<<<<LoanFile.open("出借资产信息.txt",ios:
:
in|ios:
:
out);
if(!
LoanFile)
{
cout<<"cannotopenfile!
\n";
exit
(1);
}
LoanFile<<<<<}
voidOperateSolidSubFile(Buy_Substance*p);
voidOperateRepairSubFile(Repair_Substance*p);
voidOperateRejectSubFile(Reject_Substance*p);
voidOperateLoanSubFile(Loan_Substance*p);
//------档案管理模块=================================================================
//------------1.记录购入信息--------------------------
voidBuyRecord(Buy_Substance*&BuySub,Buy_Substance*&p)
{
Buy_Substance*pt=BuySub;
while(pt->next)
pt=pt->next;
pt->next=p;
p->next=NULL;
cout<<"购买成功!
\n";
system("pause");
system("cls");
}
//-----------2.记录维修资产信息----------------------
voidRepairRecord(Repair_Substance*&RepSub,Buy_Substance*&BuySub,stringid)
{
Buy_Substance*p=BuySub->next;
while((p!
=NULL)&&(p->id!
=id))
{
p=p->next;
}
if((p!
=NULL)&&(p->id==id))
{
Repair_Substance*p2=RepSub;
while(p2->next)
p2=p2->next;
Repair_Substance*p1=newRepair_Substance;
cout<<"输入需要的维修费用:
";
cin>>p1->repair_value;
p1->buy_date=p->buy_date;
p1->id=p->id;
p1->name=p->name;
p1->pro_date=p->pro_date;
p1->pro_factury=p->pro_factury;
p2->next=p1;
p1->next=NULL;
cout<<"该产品正在维修中....\n";
OperateRepairSubFile(p1);//将维修记录写入文件中
}
else
{
cout<<"不存在该产品!
\n";
system("pause");
system("cls");
return;
}
system("pause");
system("cls");
}
//-----------3.报废资产记录--------------------------
voidRejectRecord(Reject_Substance*&RejSub,Buy_Substance*&BuySub,stringid)
{
Buy_Substance*p,*p3;
p3=BuySub;
p=BuySub->next;
while((p!
=NULL)&&(p->id!
=id))
{
p3=p;
p=p->next;
}
if((p!
=NULL)&&(p->id==id))
{
Reject_Substance*p2=RejSub;
while(p2->next)
p2=p2->next;
Reject_Substance*p1=newReject_Substance;
cout<<"输入报废的日期:
";
cin>>p1->reject_date;
p1->buy_date=p->buy_date;
p1->id=p->id;
p1->name=p->name;
p1->pro_date=p->pro_date;
p1->pro_factury=p->pro_factury;
p1->use_age=p->use_age;
p1->value=p->value;
p2->next=p1;
p1->next=NULL;
p3->next=p->next;//将改产品从总资产中删除
cout<<"该产品已经报废!
\n";
OperateRejectSubFile(p1);//将报废记录写入文件中
}
else
{
cout<<"不存在该产品!
\n";
system("pause");
system("cls");
return;
}
system("pause");
system("cls");
}
//-----------4.出借记录-----------------------------------------------------
voidLoanRecord(Loan_Substance*&LoaSub,Buy_Substance*&BuySub,stringid)
{
Buy_Substance*p=BuySub->next;
while((p!
=NULL)&&(p->id!
=id))
{
p=p->next;
}
if((p!
=NULL)&&(p->id==id))
{
Loan_Substance*p2=LoaSub;
while(p2->next)
p2=p2->next;
Loan_Substance*p1=newLoan_Substance;
cout<<"输入外借的日期:
";
cin>>p1->loan_date;
p1->buy_date=p->buy_date;
p1->id=p->id;
p1->name=p->name;
p1->pro_date=p->pro_date;
p1->pro_factury=p->pro_factury;
p1->value=p->value;
p1->use_age=p->use_age;
p2->next=p1;
p1->next=NULL;
cout<<"该产品已经外借!
\n";
OperateLoanSubFile(p1);//将出借记录写入文件中
}
else
{
cout<<"不存在该产品!
\n";
system("pause");
system("cls");
return;
}
system("pause");
system("cls");
}
//------查询管理模块===================================================================
//------------1.查询总资产------------------------------
voidQuerySub(Buy_Substance*&BuySu)
{
Buy_Substance*p=BuySu->next;
if(!
p)
{
cout<<"还没有固定资产!
\n";
system("pause");
system("cls");
return;
}
c