当前位置:文档之家› 固定资产管理系统软件工程

固定资产管理系统软件工程

软件工程实验报告设计题目:固定资产管理系统系别:信息工程学院专业:信息工程班级:0902班学生姓名: 肖文名学号:05日期: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) 软件平台软件运行于windows 2000 ,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.实现环境本系统在visual studio 2010开发环境下开发4.2.语言选择本系统使用C++编写4.3.调试分析在编写系统的过程之中难免会遇到出错。

使用蛮干法,回溯法和原因排除法等调试方法进行调试分析,最终纠正错误。

5.测试分析5.1.测试数据测试数据表如下: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<iostream>#include<string>#include<iomanip>#include<fstream>using namespace std;//-------购入固定资产------------------------------ typedef struct solid_substance{string id; //资产编号string name; //资产名称string pro_factury; //生产厂家string pro_date; //生产日期string buy_date; //购买日期string use_age; //使用年限int value; //购买价值int num; //购买的数量solid_substance *next; //下一个资产的指针}Buy_Substance;//------经过维修的固定资产------------------------- typedef struct repair_substance{string id;string name;string pro_factury;string pro_date;string buy_date;int repair_value; //维修费用repair_substance *next;}Repair_Substance;//------报废的固定资产------------------------------ typedef struct reject_substance{string id;string name;string pro_factury;string pro_date;string buy_date;string use_age;int value; //购买价值string reject_date; //报废日期reject_substance *next;}Reject_Substance;//-----出借的资产----------------------------------typedef struct loan_substance{string id;string name;string pro_factury;string pro_date;string buy_date;string use_age;int value;string loan_date; //出借日期loan_substance *next;}Loan_Substance;//=================================================== fstream SolidFile;fstream RepairFile;fstream RejectFile;fstream LoanFile;void OpenFile(){Solid("固定资产信息.txt", ios::in|ios::out|ios::app);if (!SolidFile){cout<<"cannot open file!\n";exit(1);}SolidFile <<setw(10) <<"资产编号" <<setw(10) <<"资产名称" <<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<setw(10) <<"购买价值" <<setw(10) <<"数量"<<endl;Repair("维修资产信息.txt", ios::in|ios::out|ios::app);if (!RepairFile){cout<<"cannot open the file!\n";exit(1);}RepairFile <<setw(10) <<"资产编号" <<setw(10) <<"资产名称" <<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"维修花费"<<endl;Reject("报废资产信息.txt", ios::in|ios::out);if (!RejectFile){cout <<"cannot open file!\n";exit(1);}RejectFile <<setw(10) <<"资产编号" <<setw(10) <<"资产名称"<<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<setw(10) <<"购买价值" <<setw(10) <<"报废日期"<<endl;Loan("出借资产信息.txt", ios::in|ios::out);if (!LoanFile){cout <<"cannot open file!\n";exit(1);}LoanFile <<setw(10) <<"资产编号" <<setw(10) <<"资产名称"<<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<setw(10) <<"购买价值" <<setw(10) <<"出借日期"<<endl;}void OperateSolidSub *p);void OperateRepairSub *p);void OperateRejectSub *p);void OperateLoanSub *p);//------档案管理模块=================================================================//------------1.记录购入信息--------------------------void BuyRecord(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.记录维修资产信息----------------------void RepairRecord(Repair_Substance *&RepSub, Buy_Substance *&BuySub, string id){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 = new Repair_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";OperateRepairSub); //将维修记录写入文件中}else{cout <<"不存在该产品!\n";system("pause");system("cls");return;}system("pause");system("cls");}//-----------3.报废资产记录--------------------------void RejectRecord(Reject_Substance *&RejSub, Buy_Substance *&BuySub, string id){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 = new Reject_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";OperateRejectSub); //将报废记录写入文件中}else{cout <<"不存在该产品!\n";system("pause");system("cls");return;}system("pause");system("cls");}//-----------4.出借记录-----------------------------------------------------void LoanRecord(Loan_Substance *&LoaSub, Buy_Substance *&BuySub, string id){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 = new Loan_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";OperateLoanSub); //将出借记录写入文件中}else{cout <<"不存在该产品!\n";system("pause");system("cls");return;}system("pause");system("cls");}//------查询管理模块=================================================================== //------------1.查询总资产------------------------------void QuerySub(Buy_Substance *&BuySu){Buy_Substance *p = BuySu->next;if (!p){cout <<"还没有固定资产!\n";system("pause");system("cls");return;}cout <<setw(10) <<"资产编号" <<setw(10) <<"资产名称"<<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<setw(10) <<"购买价值" <<setw(10) <<"数量"<<endl;while (p){cout <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date <<setw(10) <<p->buy_date <<setw(10) <<p->use_age<<setw(10) <<p->value <<setw(10) <<p->num<<endl;p = p->next;}system("pause");system("cls");}//------------2.查询报废记录-----------------void QueryReject(Reject_Substance *&RejSub){Reject_Substance *p = RejSub->next;if (!p){cout <<"还没有报废的固定资产!\n";system("pause");system("cls");return;}cout <<setw(10) <<"资产id" <<setw(10) <<"资产名字"<<setw(10) <<"生产商家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<setw(10) <<"购买价值" <<setw(10) <<"报废时间"<<endl;while (p){cout <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date <<setw(10) <<p->buy_date <<setw(10) <<p->use_age<<setw(10) <<p->value <<setw(10) <<p->reject_date<<endl;p = p->next;}system("pause");system("cls");}//------------3.查询维修记录-----------------void QueryRepair(Repair_Substance *&RepSub){Repair_Substance *p = RepSub->next;if (!p){cout <<"还没有维修的固定资产!\n";system("pause");system("cls");return;}cout <<setw(10) <<"资产编号" <<setw(10) <<"资产名称"<<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"维修费用"<<endl;while (p){cout <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date <<setw(10) <<p->buy_date <<setw(10) <<p->repair_value <<endl;p = p->next;}system("pause");system("cls");}//-------------4.查询出借记录----------------void QueryLoan(Loan_Substance *&LoaSub){Loan_Substance *p = LoaSub->next;if (!p){cout<<"没有外借的固定资产!\n";system("pause");system("cls");return;}cout <<setw(10) <<"资产编号" <<setw(10) <<"资产名称"<<setw(10) <<"生产厂家" <<setw(10) <<"生产日期"<<setw(10) <<"购买日期" <<setw(10) <<"使用年限"<<endl;while (p){cout <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date <<setw(10) <<p->buy_date <<setw(10) <<p->loan_date<<endl;p = p->next;}system("pause");system("cls");}//-----------------查询管理菜单-------------------int QueryManageMenu(){cout <<" ***********************************\n\n\n"<<" 资产查询\n\n\n"<<"***********************************\n\n\n";cout <<" 1.查询总资产\n"<<" 2.查询报废记录\n"<<" 3.查询维修记录\n"<<" 4.查询出借记录\n"<<" 0.返回主界面\n\n";return 1;}//-------查询管理主调模块-------------------------------------------void QueryManage(Buy_Substance *&BuySub, Repair_Substance *&RepSub,Reject_Substance *&RejSub, Loan_Substance *&LoaSub){int n;while (QueryManageMenu()){cout<<"输入选项:";cin >>n;switch(n){case 0:system("cls");return;case 1:QuerySub(BuySub);break;case 2:QueryReject(RejSub);break;case 3:QueryRepair(RepSub);break;case 4:QueryLoan(LoaSub);break;default:cout <<"输入错误!\n";system("pause");system("cls");}}}//------资产管理模块===========================================================//------1.购买资产----------------------------void BuySub(Buy_Substance *&BuySu){Buy_Substance *p = new Buy_Substance;cout <<"按提示输入需购固定资产的信息:\n";cout <<"资产编号:"; cin >>p->id;cout <<"资产名称:"; cin >>p->name;cout <<"生产厂家:"; cin >>p->pro_factury;cout <<"生产日期:"; cin >>p->pro_date;cout <<"购买日期:"; cin >>p->buy_date;cout <<"使用年限:"; cin >>p->use_age;cout <<"购买价格:"; cin >>p->value;cout <<"需要的数量:"; cin >>p->num;BuyRecord(BuySu, p);OperateSolidSubFile(p); //写入文件}//--------2.资产维修---------------------------void RepairSub(Repair_Substance *&RepSub, Buy_Substance *&BuySub) {string id;cout <<"输入要维修的资产id:";cin >>id;RepairRecord(RepSub, BuySub, id);}//-------3.资产报废----------------------------void RejectSub(Reject_Substance *&RejSub, Buy_Substance *&BuySub) {string id;cout <<"输入要报废的资产id:";cin >>id;RejectRecord(RejSub, BuySub, id);}//--------4.资产出借-----------------------void LoanSub(Loan_Substance *&LoaSub, Buy_Substance *&BuySub){string id;cout <<"输入要维修的资产id:";cin >>id;LoanRecord(LoaSub, BuySub, id);}//--------资产管理主界面-----------------int ManageMenu(){cout <<" ***********************************\n\n\n"<<" 资产管理\n\n\n"<<"***********************************\n\n\n";cout <<" 1.购买资产\n"<<" 2.维修资产\n"<<" 3.报废资产\n"<<" 4.借出资产\n"<<" 0.返回主菜单\n\n";return 1;}//----------资产管理主调程序--------------------------------------void Manage(Buy_Substance *&BuySu, Repair_Substance *&RepSub,Reject_Substance *&RejSub, Loan_Substance *&LoaSub){int n;while (ManageMenu()){cout <<"输入选项:";cin >> n;switch(n){case 0:system("cls");return;case 1:BuySub(BuySu);break;case 2:RepairSub(RepSub, BuySu);break;case 3:RejectSub(RejSub, BuySu);break;case 4:LoanSub(LoaSub, BuySu);break;default:cout <<"输入错误!\n";system("pause");system("cls");}}}//----管理系统主界面------------------------------int MainMenu(){cout <<" ***************************************************\n\n\n"<<" 欢迎使用固定资产管理系统\n\n\n"<<"***************************************************\n\n\n";cout <<" 1.资产管理\n"<<" 2.资产查询\n"<<" 0.退出\n\n";return 1;}//--------登陆界面--------------------------------int LogMenu(){cout <<" *******************************\n\n"<<" 固定资产管理系统\n\n"<<" *******************************\n\n";return 1;}void Log(){string password = "hello"; //初始密码string _password = "";while (LogMenu()){cout<<"请输入密码:";cin >>_password;if (password == _password)break;cout <<"密码错误,请重新输入!\n";system("pause");system("cls");}}//--------主函数----------------------------------- int main(){int n;Buy_Substance *BuySub = new Buy_Substance;Repair_Substance *RepSub = new Repair_Substance; Reject_Substance *RejSub = new Reject_Substance; Loan_Substance *LoaSub = new Loan_Substance;BuySub->next = NULL;RepSub->next = NULL;RejSub->next = NULL;LoaSub->next = NULL;system("color 1f");Log();OpenFile();system("cls");while (MainMenu()){cout <<"输入选项:";cin >>n;switch(n){case 0:exit(0);break;case 1:system("cls");Manage(BuySub, RepSub, RejSub, LoaSub);break;case 2:system("cls");QueryManage(BuySub, RepSub, RejSub, LoaSub);break;default:cout <<"输入错误!\n";system("pause");system("cls");}}return 0;}//---------------文件操作函数-------------------------------------- //输出到固定资产文件void OperateSolidSub *p){SolidFile <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date<<setw(10) <<p->buy_date <<setw(10) <<p->use_age<<setw(10) <<p->value <<setw(10) <<p->num<<endl;}//输出到维修的固定资产文件void OperateRepairSub *p){RepairFile <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date<<setw(10) <<p->buy_date <<setw(10) <<p->repair_value<<endl;}//输出到报废的资产文件void OperateRejectSub *p){RejectFile <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date<<setw(10) <<p->buy_date <<setw(10) <<p->use_age<<setw(10) <<p->value <<setw(10) <<p->reject_date<<endl;}//输出到出借的资产文件void OperateLoanSub *p){LoanFile <<setw(10) <<p->id <<setw(10) <<p->name<<setw(10) <<p->pro_factury <<setw(10) <<p->pro_date<<setw(10) <<p->buy_date <<setw(10) <<p->use_age<<setw(10) << p->value <<setw(10) <<p->loan_date<<endl;}。

相关主题