山东理工大学计算机学院
课 程 设 计
(软件开发实践)
班 级
软件1304
姓 名
郭江涵
学 号
131********
指导教师
方春
二○一五年一月十三日
课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
任务书及成绩评定
课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
名称
固定资产管理系统
Ⅰ、题目的目的和要求:
1、 设计目的
基于C++面向对象编程语言的知识,用<<数据结构>>中的顺序存储、链表、堆栈、串、
树、图等数据结构,结合项目的具体需求编写该系统,能熟练掌握几种基本数据结构的基本操作。使用合适的数据结构和算法来实现各功能模块的增、删、改、查,把所学数据结构知识应用到实际软件开发中去。巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:
随着公司业务不断发展,人员越来越多,固定资产的管理人员压力逐渐增大,需要建立数据库和使用软件系统来进行管理。
公司对固定资产的定义为:价值超过2000元人民币的设备。例如彩色喷墨打印机、计算机、扫描仪、机房其他设备,而打印纸、书籍等不属于固定资产,属于易耗品。
通过同资产管理人员和该公司领导的面谈,总结和归纳之后,他们需要软件具备以下的功能:
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<<"管 理 员 你 好, 请 登 录。。。。"<
>zhanghao;
cout<<"请 输 入 你 的 密 码:";
cin>>mima;
while(zhanghao!="guanliyuan"||mima!=ma)
{
cout<<"| 账号密码错误,请重新输入: |"<>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();