版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.XX理工大学计算机学院课程设计〔软件开发实践班级软件1304姓名郭江涵学导教师方春二○一五年一月十三日课程设计任务书及成绩评定课题名称固定资产管理系统Ⅰ、题目的目的和要求:设计目的基于C++面向对象编程语言的知识,用<<数据结构>>中的顺序存储、链表、堆栈、串、树、图等数据结构,结合项目的具体需求编写该系统,能熟练掌握几种基本数据结构的基本操作。使用合适的数据结构和算法来实现各功能模块的增、删、改、查,把所学数据结构知识应用到实际软件开发中去。巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求:随着公司业务不断发展,人员越来越多,固定资产的管理人员压力逐渐增大,需要建立数据库和使用软件系统来进行管理。公司对固定资产的定义为:价值超过2000元人民币的设备。例如彩色喷墨打印机、计算机、扫描仪、机房其他设备,而打印纸、书籍等不属于固定资产,属于易耗品。通过同资产管理人员和该公司领导的面谈,总结和归纳之后,他们需要软件具备以下的功能:管理员登录固定资产信息管理人员信息管理资产配置:领用、归还资产处置:调拨、变卖、报废案例覆盖技能点数组、字符串、运算符重载类的封装、继承、多态性虚函数、纯虚函数和抽象类输入输出流的操作程序算法的设计说明〔流程图形式常用数据结构的操作例如:顺序存储、链表、树、图等系统基本模块包括:功能点难度登录★★资产信息管理★★★★人员信息管理★★★资产配置★★★★资产处置★★★★★Ⅱ、设计进度及完成情况日期内容1.05-1.09选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1.09~1.12创建相关数据结构,录入源程序。1.13~1.13调试程序并记录调试中的问题,初步完成课程设计报告。1.14~1.14上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。Ⅲ、主要参考文献及资料[1]严蔚敏数据结构〔C语言版清华大学出版社1999[2]谭浩强C语言程序设计清华大学出版社[3]与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定成绩:〔教师填写指导〔签字二○一五年一月十三日..目录第一章概述……………1第二章系统分析………2第三章概要设计………3第四章详细设计………13第五章运行与测试……………………24第六章总结与心得……………………29..参考文献………………30..第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。课程设计可以锻炼学生们的思考构思能力和动手实践能力,通过课程设计中的实际性问题,可以让学生把平日所学理论知识与亲身实践结合在一起,更好的提高学生编程的综合能力。课程设计还可以让学生查出自己平日里的不足,结合实际问题,把理论与实际相结合,找出以后的学习努力方向,查漏补缺,更进一层楼。第二章系统分析1、本次课程设计,有小组共同分工完成代码的编写和实现程序的运行。在整个固定资产管理系统中,一共包括登陆、资产信息管理、人员信息管理、资产配置和资产处置五大模块,我主要负责人员信息管理模块和登陆模块以及程序代码整体大框架的编写。2、在登陆模块中,主要是管理员登陆系统,进行对资产信息以及人员信息的增删改查,为了系统人员信息以及资产信息的安全性问题,需要对管理员登录信息进行安全性验证,所以管理员登陆系统需要输入自己的账户名和密码,〔系统管理员初始账户和密码为"guanliyuan""1234",只有密码和账户都输入正确才能进入系统,否则系统会提示管理员重新输入自己的账户和密码,知道输入正确才能进入系统。3、在人员信息管理模块中,主要要实现人员信息的增删改查功能,这里的"人员"是指可能领用资产的人,人员的信息包括人员编号、姓名、职务和备注。在该模块中可以选择某个员工查看该员工的所属资产。在这个模块中,定义了LinkNode和LinkList两个类,还用了链表的方法实现数据的查找与增加删除和查询。系统显示通过查询人员编号来找到人员信息进行删除或者修改,其实是通过查询链表结点来查找每个数据,为了确保通过编号能正确的找到对应编号的人员,所以管理员在添加人员信息时,需要先输入结点位置,再输入编号,并且结点值需要与编号相同,〔在系统中显示的是"请输入要添加的人员编号""请再次确认人员编号",其实第一次输入的人员编号是插入信息的结点位置值,第二次输入的才是人员编码所以为了避免管理员输入的结点位置值和人员编号不相同,在添加人员信息模块的代码中又添加了一个if判断语句,来判断管理员输入的结点位置值和人员编号值是否相同,只有相同时才能继续添加其他信息,否则系统将提示输入出错,继续添加人员编号。第三章概要设计数据结构的设计本程序设计主要采用的是数据结构的思想,运用了C++的手段,完成了代码的编写和实现了程序的运行,在人员信息管理模块中,运用了链表的方法以及类的思想,还运用了构造函数和析构函数实现了代码的编写。算法的设计〔1、登陆信息的有效性验证:voidlogn<>{ cout<<"管理员你好,请登录。。。。"<<endl; cout<<"请输入您的账号:"; cin>>zhanghao; cout<<"请输入你的密码:"; cin>>mima; while<zhanghao!="guanliyuan"||mima!=ma> { cout<<"|账号密码错误,请重新输入:|"<<endl; cout<<"请输入您的账号:"; cin>>zhanghao; cout<<"请输入你的密码:"; cin>>mima; } if<zhanghao=="guanliyuan"&&mima==ma>/*有效性检验,管理员进入系统*/ {〔各模块代码。。。。。。}〔2LinkNode和LinkList类的定义:classLinkNode{ /*编号、姓名、职务和备注*/ intdata;//编号 stringname;//姓名 stringstaff;//职位 stringremark;//备注 /*指向下一个节点*/ LinkNode*next;public: LinkNode<void>/*默认构造函数*/ { data=0; name="空"; staff="空"; remark="空"; next=NULL; } LinkNode<constLinkNode&obj>/*构造函数,实现初始化*/ { data=obj.data; name=; staff=obj.staff; remark=obj.remark; next=obj.next; } ~LinkNode<void>/*析构函数*/ { data=0; name="空"; staff="空"; remark="空"; next=NULL; } voidsetData<inta>/*设置data*/ { data=a; } intgetData<void>/*获得data*/ { returndata; } voidset_name<stringa> { name=a; } stringget_name<void>/*获得data*/ { returnname; } voidset_staff<stringa> { staff=a; } stringget_staff<void>/*获得data*/ { returnstaff; } voidset_remark<stringa> { remark=a; } stringget_remark<void>/*获得data*/ { returnremark; } voidsetNext<LinkNode*p> { next=p; } LinkNode*getNext<void> { returnnext; } voidpp<void> { data++; } voidss<void> { data--; }};typedefLinkNode*pLink;classLinkList{ LinkNodehead;public: LinkList<void> { head.setData<0>; head.set_name<"空">; head.set_staff<"空">; head.set_remark<"空">; head.setNext<NULL>; } LinkList<constLinkList&obj> { pLinkp,q=&head; head=obj.head; p=head.getNext<>; head.setNext<NULL>; while<p> { q->setNext<newLinkNode>; q=q->getNext<>; q->setData<p->getData<>>; p=p->getNext<>; } } ~LinkList<void> { MakeEmpty<>; } voidMakeEmpty<void> { pLinkp=&head,q=p->getNext<>; head.setData<0>; head.set_name<"空">; head.set_staff<"空">; head.set_remark<"空">; while<q> { p->setNext<q->getNext<>>; deleteq; q=p->getNext<>; } } intLength<void> { returnhead.getData<>; } voidInsert<intx,stringa,stringb,stringc,inti> { intn=-1; pLinkp=&head,q; if<i<0> return; while<p->getNext<>&&<++n<i>> p=p->getNext<>; q=newLinkNode; q->setData<x>; q->set_name<a>; q->set_staff<b>; q->set_remark<c>; q->setNext<p->getNext<>>; p->setNext<q>; head.pp<>; } voidDelete<intx> { pLinkp=&head,q=head.getNext<>; while<q> if<q->getData<>==x> { p->setNext<q->getNext<>>; deleteq; q=p->getNext<>; } else { p=p->getNext<>; q=q->getNext<>; } } intReMove<inti> { pLinkp=&head,q; intn=-1; while<p->getNext<>&&<++n<i>> p=p->getNext<>; if<p> return0; else { q=p->getNext<>; p->setNext<q->getNext<>>; deleteq; return1; } } intFind<intx> { pLinkp=head.getNext<>; while<p> { if<p->getData<>==x> return1; p=p->getNext<>; } return0; } voidDisplay<void> { pLinkp=head.getNext<>; while<p> { cout<<"编号:"<<p->getData<><<endl; cout<<"__"<<p->get_name<><<endl; cout<<"职位:"<<p->get_staff<><<endl; cout<<"备注:"<<p->get_remark<><<endl; p=p->getNext<>; } }};〔3、默认构造函数 LinkNode<void>/*默认构造函数*/ { data=0; name="空"; staff="空"; remark="空"; next=NULL; }〔4、构造函数,实现初始化LinkNode<constLinkNode&obj> { data=obj.data; name=; staff=obj.staff; remark=obj.remark; next=obj.next; }〔5、析构函数~LinkNode<void> { data=0; name="空"; staff="空"; remark="空"; next=NULL; }〔6、主界面函数intmenu<void>{ intre; system<"cls">; cout<<"\t\t欢迎进入固定资产管理系统人员管理模块"<<endl; cout<<"\t\t1.置空"<<endl; cout<<"\t\t2.显示人员个数:"<<endl; cout<<"\t\t3.插入人员"<<endl; cout<<"\t\t4.删除所有指定值的人员"<<endl; cout<<"\t\t5.移除指定位置的人员"<<endl; cout<<"\t\t6.查找有无指定值的人员"<<endl; cout<<"\t\t7.显示"<<endl; cout<<"\t\t8.退出"<<endl; cout<<"\t\t请输入您的选择:"<<endl; cin>>re; system<"cls">; if<re<=8&&re>0> returnre; else return0;}〔7、删除人员信息函数: voidDelete<intx> { pLinkp=&head,q=head.getNext<>; while<q> if<q->getData<>==x> { p->setNext<q->getNext<>>; deleteq; q=p->getNext<>; } else { p=p->getNext<>; q=q->getNext<>; } }〔8、移除人员信息函数: intReMove<inti> { pLinkp=&head,q; intn=-1; while<p->getNext<>&&<++n<i>> p=p->getNext<>; if<p> return0; else { q=p->getNext<>; p->setNext<q->getNext<>>; deleteq; return1; } }〔9查找人员信息函数: intFind<intx> { pLinkp=head.getNext<>; while<p> { if<p->getData<>==x> return1; p=p->getNext<>; } return0; }〔10、显示人员信息函数 voidDisplay<void> { pLinkp=head.getNext<>; while<p> { cout<<"编号:"<<p->getData<><<endl; cout<<"__"<<p->get_name<><<endl; cout<<"职位:"<<p->get_staff<><<endl; cout<<"备注:"<<p->get_remark<><<endl; p=p->getNext<>; }}第四章详细设计〔一人员信息管理模块#include<iostream>#include<cstdlib>#include<string>usingnamespacestd;classLinkNode{ /*编号、姓名、职务和备注*/ intdata;//编号 stringname;//姓名 stringstaff;//职位 stringremark;//备注 /*指向下一个节点*/ LinkNode*next;public: LinkNode<void>/*默认构造函数*/ { data=0; name="空"; staff="空"; remark="空"; next=NULL; } LinkNode<constLinkNode&obj>/*构造函数,实现初始化*/ { data=obj.data; name=; staff=obj.staff; remark=obj.remark; next=obj.next; } ~LinkNode<void>/*析构函数*/ { data=0; name="空"; staff="空"; remark="空"; next=NULL; } voidsetData<inta>/*设置data*/ { data=a; } intgetData<void>/*获得data*/ { returndata; } voidset_name<stringa> { name=a; } stringget_name<void>/*获得data*/ { returnname; } voidset_staff<stringa> { staff=a; } stringget_staff<void>/*获得data*/ { returnstaff; } voidset_remark<stringa> { remark=a; } stringget_remark<void>/*获得data*/ { returnremark; } voidsetNext<LinkNode*p> { next=p; } LinkNode*getNext<void> { returnnext; } voidpp<void> { data++; } voidss<void> { data--; }};typedefLinkNode*pLink;classLinkList{ LinkNodehead;public: LinkList<void> { head.setData<0>; head.set_name<"空">; head.set_staff<"空">; head.set_remark<"空">; head.setNext<NULL>; } LinkList<constLinkList&obj> { pLinkp,q=&head; head=obj.head; p=head.getNext<>; head.setNext<NULL>; while<p> { q->setNext<newLinkNode>; q=q->getNext<>; q->setData<p->getData<>>; p=p->getNext<>; } } ~LinkList<void> { MakeEmpty<>; } voidMakeEmpty<void> { pLinkp=&head,q=p->getNext<>; head.setData<0>; head.set_name<"空">; head.set_staff<"空">; head.set_remark<"空">; while<q> { p->setNext<q->getNext<>>; deleteq; q=p->getNext<>; } } intLength<void> { returnhead.getData<>; } voidInsert<intx,stringa,stringb,stringc,inti> { intn=-1; pLinkp=&head,q; if<i<0> return; while<p->getNext<>&&<++n<i>> p=p->getNext<>; q=newLinkNode; q->setData<x>; q->set_name<a>; q->set_staff<b>; q->set_remark<c>; q->setNext<p->getNext<>>; p->setNext<q>; head.pp<>; } voidDelete<intx> { pLinkp=&head,q=head.getNext<>; while<q> if<q->getData<>==x> { p->setNext<q->getNext<>>; deleteq; q=p->getNext<>; } else { p=p->getNext<>; q=q->getNext<>; } } intReMove<inti> { pLinkp=&head,q; intn=-1; while<p->getNext<>&&<++n<i>> p=p->getNext<>; if<p> return0; else { q=p->getNext<>; p->setNext<q->getNext<>>; deleteq; return1; } } intFind<intx> { pLinkp=head.getNext<>; while<p> { if<p->getData<>==x> return1; p=p->getNext<>; } return0; } voidDisplay<void> { pLinkp=head.getNext<>; while<p> { cout<<"编号:"<<p->getData<><<endl; cout<<"__"<<p->get_name<><<endl; cout<<"职位:"<<p->get_staff<><<endl; cout<<"备注:"<<p->get_remark<><<endl; p=p->getNext<>; } }};intmenu<void>{ intre; system<"cls">; cout<<"\t\t1.置空"<<endl; cout<<"\t\t2.显示人员个数:"<<endl; cout<<"\t\t3.插入人员"<<endl; cout<<"\t\t4.删除所有指定值的人员"<<endl; cout<<"\t\t5.移除指定位置的人员"<<endl; cout<<"\t\t6.查找有无指定值的人员"<<endl; cout<<"\t\t7.显示"<<endl; cout<<"\t\t8.退出"<<endl; cout<<"\t\t请输入您的选择:"<<endl; cin>>re; system<"cls">; if<re<=8&&re>0> returnre; else return0;}intmain<void>{ LinkListL; inta,b; stringinfo1,info2,info3; while<true> switch<menu<>> { case0: cout<<"输入有误,请重新输入"<<endl; break; case1: L.MakeEmpty<>; break; case2: cout<<"共有"<<L.Length<><<"个人员"<<endl;//显示的人员数是结点的个数 system<"pause">; break; case3: cout<<"请输入要添加的人员编号:"; cin>>a; cout<<"请再次确认人员编号:"; cin>>b; while<a!=b> { cout<<"两次输入不一致,请重新输入"<<endl; cout<<"请输入要添加的人员编号:"; cin>>a;//结点位置 cout<<"请再次确认人员编号:"; cin>>b;//编号 } if<a==b> { cout<<"姓名"<<endl; cin>>info1; cout<<"职位:"<<endl; cin>>info2; cout<<"备注:"<<endl; cin>>info3; L.Insert<b,info1,info2,info3,a>; break; } case4: cout<<"请输入要删除的人员编号"<<endl; cin>>a; L.Delete<a>; break; case5: cout<<"请输入要移除的人员编号"<<endl; cin>>a; if<L.ReMove<a>> cout<<"删除成功"<<endl; else cout<<"未能找到指定结点"<<endl; system<"pause">; break; case6: cout<<"请输入要查询的人员编号"<<endl; cin>>a; if<L.Find<a>> cout<<"找到了编号为"<<a<<"的人员"<<endl; else cout<<"没有编号为"<<a<<"的人员"<<endl; system<"pause">; break; case7: L.Display<>; system<"pause">; break; default: return0; } return0;}〔二管理员登陆模块voidlogn<>{ cout<<"管理员你好,请登录。。。。"<<endl; cout<<"请输入您的账号:"; cin>>zhanghao; cout<<"请输入你的密码:"; cin>>mima; while<zhanghao!="guanliyuan"||mima!=ma> { cout<<"|账号密码错误,请重新输入:|"<<endl; cout<<"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024学年深圳市高三语文(上)12月二诊考试卷附答案解析
- 2023-2024学年沪教版(上海)七年级数学上册 期末复习题
- 《设施要求》课件
- 酒店员工辞职报告范文
- 2025年萍乡货运资格证考试答案
- 语文课题研究报告范文
- 内饰设计报告范文
- 监理资质升级报告范文
- 应急管理思路
- 《酒店营销培训》课件
- 2024-2025学年高二上学期期末复习【第五章 一元函数的导数及其应用】十一大题型归纳(拔尖篇)(含答案)
- 【MOOC】法理学-西南政法大学 中国大学慕课MOOC答案
- 2024年新湘教版七年级上册数学教学课件 第4章 图形的认识 章末复习
- 2024年民用爆炸物品运输合同
- 辽宁省普通高中2024-2025学年高一上学期12月联合考试语文试题(含答案)
- 【MOOC】大学生创新创业教育-云南大学 中国大学慕课MOOC答案
- 《个体防护装备安全管理规范AQ 6111-2023》知识培训
- 储能运维安全注意事项
- 2024蜀绣行业市场趋势分析报告
- 电力法律法规培训
- 北京交通大学《成本会计》2023-2024学年第一学期期末试卷
评论
0/150
提交评论