固定资产管理系统课程设计报告郭江涵样本.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 固定资产 管理 系统 课程设计 报告 郭江涵 样本
- 资源描述:
-
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 山东理工大学计算机学院 课 程 设 计 ( 软件开发实践) 班 级 软件1304 姓 名 郭江涵 学 号 指导教师 方春 二○一五年一月十三日 课程设计任务书及成绩评定 课题名称 固定资产管理系统 Ⅰ、 题目的目的和要求: 1、 设计目的 基于C++面向对象编程语言的知识, 用<<数据结构>>中的顺序存储、 链表、 堆栈、 串、 树、 图等数据结构, 结合项目的具体需求编写该系统, 能熟练掌握几种基本数据结构的基本操作。使用合适的数据结构和算法来实现各功能模块的增、 删、 改、 查, 把所学数据结构知识应用到实际软件开发中去。巩固和加深对数据结构的理解, 经过上机实验、 调试程序, 加深对课本知识的理解, 最终使学生能够熟练应用数据结构的知识写程序。能针对给定题目, 选择相应的数据结构, 分析并设计算法, 进而给出问题的正确求解过程并编写代码实现。 2、 设计题目要求: 随着公司业务不断发展, 人员越来越多, 固定资产的管理人员压力逐渐增大, 需要建立数据库和使用软件系统来进行管理。 公司对固定资产的定义为: 价值超过 元人民币的设备。例如彩色喷墨打印机、 计算机、 扫描仪、 机房其它设备, 而打印纸、 书籍等不属于固定资产, 属于易耗品。 经过同资产管理人员和该公司领导的面谈, 总结和归纳之后, 她们需要软件具备以下的功能: 1. 管理员登录 2. 固定资产信息管理 3. 人员信息管理 4. 资产配置: 领用、 归还 5. 资产处理: 调拨、 变卖、 报废 案例覆盖技能点 1、 数组、 字符串、 运算符重载 2、 类的封装、 继承、 多态性 3、 虚函数、 纯虚函数和抽象类 4、 输入输出流的操作 5、 程序算法的设计说明( 流程图形式) 6、 常见数据结构的操作 7、 例如: 顺序存储、 链表、 树、 图等 系统基本模块包括: 功能点 难度 登录 ★★ 资产信息管理 ★★★★ 人员信息管理 ★★★ 资产配置 ★★★★ 资产处理 ★★★★★ Ⅱ、 设计进度及完成情况 日 期 内 容 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判断语句, 来判断管理员输入的结点位置值和人员编号值是否相同, 只有相同时才能继续添加其它信息, 否则系统将提示输入出错, 继续添加人员编号。 第三章 概要设计 1、 数据结构的设计 本程序设计主要采用的是数据结构的思想, 运用了C++的手段, 完成了代码的编写和实现了程序的运行, 在人员信息管理模块中, 运用了链表的方法以及类的思想, 还运用了构造函数和析构函数实现了代码的编写。 2、 算法的设计 ( 1) 、 登陆信息的有效性验证: void logn() { 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)/*有效性检验, 管理员进入系统*/ { ( 各模块代码。。。。。。) } ( 2) LinkNode和LinkList类的定义: class LinkNode { /*编号、 姓名、 职务和备注*/ int data;//编号 string name;//姓名 string staff;//职位 string remark;//备注 /*指向下一个节点*/ LinkNode *next; public: LinkNode( void )/*默认构造函数*/ { data = 0; name="空"; staff="空"; remark="空"; next = NULL; } LinkNode( const LinkNode &obj )/*构造函数, 实现初始化*/ { data = obj.data; name=obj.name; staff=obj.staff; remark=obj.remark; next = obj.next; } ~LinkNode( void )/*析构函数*/ { data = 0; name="空"; staff="空"; remark="空"; next = NULL; } void setData( int a )/*设置data*/ { data = a; } int getData( void )/*获得data*/ { return data; } void set_name( string a ) { name= a; } string get_name( void )/*获得data*/ { return name; } void set_staff( string a ) { staff= a; } string get_staff( void )/*获得data*/ { return staff; } void set_remark( string a ) { remark= a; } string get_remark( void )/*获得data*/ { return remark; } void setNext( LinkNode *p ) { next = p; } LinkNode *getNext( void ) { return next; } void pp( void ) { data++; } void ss( void ) { data--; } }; typedef LinkNode* pLink; class LinkList { LinkNode head; public: LinkList( void ) { head.setData( 0 ); head.set_name("空"); head.set_staff("空"); head.set_remark("空"); head.setNext( NULL ); } LinkList( const LinkList &obj ) { pLink p, q = &head; head = obj.head; p = head.getNext(); head.setNext( NULL ); while( p ) { q->setNext( new LinkNode ); q = q->getNext(); q->setData( p->getData() ); p = p->getNext(); } } ~LinkList( void ) { MakeEmpty(); } void MakeEmpty( void ) { pLink p = &head, q = p->getNext(); head.setData( 0 ); head.set_name("空"); head.set_staff("空"); head.set_remark("空"); while( q ) { p->setNext( q->getNext() ); delete q; q = p->getNext(); } } int Length( void ) { return head.getData(); } void Insert( int x,string a,string b,string c, int i ) { int n = -1; pLink p = &head, q; if( i < 0 ) return; while( p->getNext() && ( ++n < i ) ) p = p->getNext(); q = new LinkNode; q->setData( x ); q->set_name(a); q->set_staff(b); q->set_remark(c); q->setNext( p->getNext() ); p->setNext( q ); head.pp(); } void Delete( int x ) { pLink p = &head, q = head.getNext(); while( q ) if( q->getData() == x ) { p->setNext( q->getNext() ); delete q; q = p->getNext(); } else { p = p->getNext(); q = q->getNext(); } } int ReMove( int i ) { pLink p = &head, q; int n = -1; while( p->getNext() && ( ++n < i ) ) p = p->getNext(); if( p ) return 0; else { q = p->getNext(); p->setNext( q->getNext() ); delete q; return 1; } } int Find( int x ) { pLink p = head.getNext(); while( p ) { if( p->getData() == x ) return 1; p = p->getNext(); } return 0; } void Display( void ) { pLink p = 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( const LinkNode &obj ) { data = obj.data; name=obj.name; staff=obj.staff; remark=obj.remark; next = obj.next; } ( 5) 、 析构函数 ~LinkNode( void ) { data = 0; name="空"; staff="空"; remark="空"; next = NULL; } ( 6) 、 主界面函数 int menu( void ) { int re; 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 ) return re; else return 0; } ( 7) 、 删除人员信息函数: void Delete( int x ) { pLink p = &head, q = head.getNext(); while( q ) if( q->getData() == x ) { p->setNext( q->getNext() ); delete q; q = p->getNext(); } else { p = p->getNext(); q = q->getNext(); } } ( 8) 、 移除人员信息函数: int ReMove( int i ) { pLink p = &head, q; int n = -1; while( p->getNext() && ( ++n < i ) ) p = p->getNext(); if( p ) return 0; else { q = p->getNext(); p->setNext( q->getNext() ); delete q; return 1; } } ( 9) 查找人员信息函数: int Find( int x ) { pLink p = head.getNext(); while( p ) { if( p->getData() == x ) return 1; p = p->getNext(); } return 0; } ( 10) 、 显示人员信息函数 void Display( void ) { pLink p = 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> using namespace std; class LinkNode { /*编号、 姓名、 职务和备注*/ int data;//编号 string name;//姓名 string staff;//职位 string remark;//备注 /*指向下一个节点*/ LinkNode *next; public: LinkNode( void )/*默认构造函数*/ { data = 0; name="空"; staff="空"; remark="空"; next = NULL; } LinkNode( const LinkNode &obj )/*构造函数, 实现初始化*/ { data = obj.data; name=obj.name; staff=obj.staff; remark=obj.remark; next = obj.next; } ~LinkNode( void )/*析构函数*/ { data = 0; name="空"; staff="空"; remark="空"; next = NULL; } void setData( int a )/*设置data*/ { data = a; } int getData( void )/*获得data*/ { return data; } void set_name( string a ) { name= a; } string get_name( void )/*获得data*/ { return name; } void set_staff( string a ) { staff= a; } string get_staff( void )/*获得data*/ { return staff; } void set_remark( string a ) { remark= a; } string get_remark( void )/*获得data*/ { return remark; } void setNext( LinkNode *p ) { next = p; } LinkNode *getNext( void ) { return next; } void pp( void ) { data++; } void ss( void ) { data--; } }; typedef LinkNode* pLink; class LinkList { LinkNode head; public: LinkList( void ) { head.setData( 0 ); head.set_name("空"); head.set_staff("空"); head.set_remark("空"); head.setNext( NULL ); } LinkList( const LinkList &obj ) { pLink p, q = &head; head = obj.head; p = head.getNext(); head.setNext( NULL ); while( p ) { q->setNext( new LinkNode ); q = q->getNext(); q->setData( p->getData() ); p = p->getNext(); } } ~LinkList( void ) { MakeEmpty(); } void MakeEmpty( void ) { pLink p = &head, q = p->getNext(); head.setData( 0 ); head.set_name("空"); head.set_staff("空"); head.set_remark("空"); while( q ) { p->setNext( q->getNext() ); delete q; q = p->getNext(); } } int Length( void ) { return head.getData(); } void Insert( int x,string a,string b,string c, int i ) { int n = -1; pLink p = &head, q; if( i < 0 ) return; while( p->getNext() && ( ++n < i ) ) p = p->getNext(); q = new LinkNode; q->setData( x ); q->set_name(a); q->set_staff(b); q->set_remark(c); q->setNext( p->getNext() ); p->setNext( q ); head.pp(); } void Delete( int x ) { pLink p = &head, q = head.getNext(); while( q ) if( q->getData() == x ) { p->setNext( q->getNext() ); delete q; q = p->getNext(); } else { p = p->getNext(); q = q->getNext(); } } int ReMove( int i ) { pLink p = &head, q; int n = -1; while( p->getNext() && ( ++n < i ) ) p = p->getNext(); if( p ) return 0; else { q = p->getNext(); p->setNext( q->getNext() ); delete q; return 1; } } int Find( int x ) { pLink p = head.getNext(); while( p ) { if( p->getData() == x ) return 1; p = p->getNext(); } return 0; } void Display( void ) { pLink p = 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(); } } }; int menu( void ) { int re; 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 ) return re; else return 0; } int main( void ) { LinkList L; int a, b; string info1,info2,info3; while( true ) switch( menu() ) { case 0: cout << "输入有误,请重新输入" << endl; break; case 1: L.MakeEmpty(); break; case 2: cout << "共有 " << L.Length() << " 个人员" << endl;//显示的人员数是结点的个数 system( "pause" ); break; case 3: 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; } case 4: cout<<"请输入要删除的人员编号"<<endl; cin >> a; L.Delete( a ); break; case 5: cout<<"请输入要移除的人员编号"<<endl; cin >> a; if( L.ReMove( a ) ) cout << "删除成功" << endl; else cout << "未能找到指定结点" << endl; system( "pause" ); break; case 6: cout<<"请输入要查询的人员编号"<<endl; cin >> a; if( L.Find( a ) ) cout << "找到了编号为" << a << "的人员" << endl; else cout << "没有编号为" << a << "的人员" << endl; system( "pause" ); break; case 7: L.Display(); system( "pause" ); break; default: return 0; } return 0; } ( 二) 管理员登陆模块 void logn() { 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)/*有效性检验, 管理员进入系统*/ { int flg=1; while(flg) { switch(print_menu1())/*接受选择的结果而且进行处理*/ { case 1: { manage(); break; }/*1.固定资产信息管理*/ case 2: { manage_person(); break; }/*2.人员信息管理 */ case 3: { break; }/*3.展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




固定资产管理系统课程设计报告郭江涵样本.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4627462.html