动物园管理系统实验报告.docx
《动物园管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《动物园管理系统实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
![动物园管理系统实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/30/6e297137-a39d-420f-a701-11fb3cab5c10/6e297137-a39d-420f-a701-11fb3cab5c101.gif)
动物园管理系统实验报告
动物园管理系统实验报告
一.时间:
2010年12月2日星期一星期四
地点:
软件楼506实验室
二.实验目的:
(1)使学生掌握C++编程的基本工作原理;
(2)培养学生基本掌握C++应用编程的基本思路和方法;
(3)使学生掌握C++应用调试的基本技能;
(4)培养学生分析、解决问题的能力;
(5)提高学生的科技论文写作能力。
(6)实现以下功能
i)用类族来描述各类动物的关系
ii) 在派生类中描述各类动物的特性
iii)各类动物对象的多样化构建模
iv) 能把动物的数据存入到文件中,系统初始化时可以读出已有的文件数据
三. 系统需求分析
1。
1功能需求分析:
简易动物园绩管理系统主要有4个大的模块:
动物信息从文件读入和写入,动物信息的输入和删除,动物信息的查询,以及系统帮助.
1。
11动物信息的读入和写出模块
主要功能是读出要管理的文档,保存修改后的动物信息。
实际生活中学生成绩的文件主要以word或excel保存,为了方便操作我在调式本系统中成绩文件采用了txt的文档格式保存,当然以word文档形式保存也是可以的.
1.12动物信息输入删除模块
主要功能是输入、追加、删除学生成绩的操作.添加操作是根据用户的要求实现的。
例如用户可以输入要删除动物的编号和信息。
此程序输入对应的动物信息,并保存到数据结构中相应的变量中.
1。
13动物信息的查询模块
主要功能是按照用户的要求查询动物信息。
。
1.14系统帮助
方便信息的查询.
数据录入:
数据查询:
输入动物编号
有数据,输出,否,退出查询模块
数据修改:
数据查询
决定是否修改
是,修改;否退出查询功能模块
数据删除;
数据查询
决定是否查询
是,删除,否,推出删除功能模块
1。
2环境需求分析:
操作系统:
WindowsXP
开发软件:
VisualC++6.0
三.UML类图
animal
+set_id():
void
+get_id():
int
~id:
int
tiger
+show():
void
~motion:
int
horse
+show():
void
~speed:
int
ﻩ
panda
+show():
void
~hobby:
int
五.数据流图
1.总体数据流图:
从文件读出数据数据
否
2。
模块数据流图
数据浏览:
数据查询:
数据录入:
数据修改:
数据删除:
六.界面的设计
界面设计截图:
1.主菜单界面设计
2.浏览界面:
3.录入界面的设计
七.课程设计的心得
通过本次实验我能够基本掌握面向对象程序设计的基础知识,在对动物园管理系统的编写过程中了解了面向对象程序设计的应用,也在上机实践和对程序调试的同时提高了自己解决问题的能力。
在这段时间的上机实践中,我学会了很多,了解了如何应用Microsoft VisualC++环境实现工程的创建,类的生成等,可以说这次上机让我对课堂所学的知识有了更好的理解。
深刻的体会到了面向对象程序设计在工程中应用的重要作用,及其对工程方面程序设计的深远影响.
这次实验我受益匪浅,在掌握面向对象程序设计的基础上更使我对c++语言产生了浓厚的兴趣。
使我对原来不太感兴趣的专业课有了更好的认识和理解,我深刻的体会到学好面向对象程序设计的重要性,虽然我们已经结束了课程,但是我会继续努力学好这门课程,利用课余时间上机实现程序的编写和设计,努力学好这门课。
相信此次上机会给我的专业课学习奠定良好的基础,对影响今后的学习意义重大。
附录:
实验代码
//Animal.h
#ifndef Animal_h
#define Animal_h
#include<iostream〉
#include"Feed。
h"
#include”ill.h"
//========================================================
usingnamespacestd;
classAnimal:
publicFeed,public ill
{
private:
ﻩ intid;
public:
Animal(){};
ﻩ Animal(inti,char*f,int t,char*r,char*d,char *p,int ID):
Feed(i,f,t),ill(r,d,p)
ﻩ {id=ID;} /
ﻩ ~Animal(){};
voidset_id(intID){id=ID;}
ﻩ intget_id(){returnid;}
};
#endif
//ill.h
#ifndefill_h
#defineill_h
#include〈iostream〉
#include
//=====================================================
usingnamespacestd;
classill
{
private:
ﻩ char reason[50];
chardate[20];
charplace[20];
public:
ill(){};
ill(char*r,char *d,char*p){strcpy(reason,r);strcpy(date,d);strcpy(place,p);}
//构造函数,strcpy(date,d)复制函数,将d复制给date
ﻩ ~ill(){};
ﻩ voidset_reason(char*r){strcpy(reason,r);}
char *get_reason(){returnreason;}
voidset_date(char *d){strcpy(date,d);}
char*get_date(){returndate;}
ﻩ voidset_place(char*p){strcpy(place,p);}
char*get_place(){return place;}
};
#endif
//Feed.h
#ifndefFeed_h
#defineFeed_h
#include〈iostream〉
#include//===========================================
usingnamespacestd;
classFeed
{
private :
int interval;
char food[50];
inttimes;
public:
ﻩ Feed(){};
Feed(inti,char*f,intt){interval=i;strcpy(food,f);times=t;}
~Feed(){};
voidset_interval(inti){interval=i;}
intget_interval(){returninterval;}
ﻩ void set_food(char*f){strcpy(food,f);}
char*get_food(){returnfood;}
void set_times(intt){times=t;}
int get_times(){returntimes;}
};
#endif
//Message.h
#ifndefMessage_h
#define Message_h
//=======================================
usingnamespacestd;
struct Message
{
int m_id;
intm_interval;
intm_times;
charm_food[50];
charm_reason[50];
charm_date[20];
charm_place[50];
};
#endif
#include<iostream>
#include"Manage.h”
#include”Message。
h"
usingnamespacestd;
classTiger:
publicManage
{
public:
voidshow(){cout<〈”老虎的信息”;}
};
#include<iostream>
#include”Manage。
h”
#include"Message.h”
usingnamespacestd;
classpanda:
publicManage
{
public:
voidshow(){cout〈<"熊猫的信息";}
};
#include<iostream>
#include〈fstream〉
#include<string>
#include"Animal。
h
#include"Manage.h"
//#include"Save。
h"
//================================================
usingnamespacestd;
//本机帮助
voidManage:
:
help()
{
ﻩint command;
cout〈〈”\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<〈endl;
cout〈<"\t\t\t·您只需按提示输入动物的信息·”<〈endl;
cout〈〈"\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~”〈〈endl<<endl<ﻩ
ﻩdo
cout<<"\t\t\t 1。
返回上一级2.退出系统”<〈endl;
a:
cin〉>command;
switch(command)
{
case 1:
mainmenu();break;
case2:
return;
default:
cout〈〈"您输入错误,请重新输入!
"<<endl;
gotoa;
}
}while(command==1||command==2);
}
//查询动物
voidManage:
:
search()
{
intid,i,m=0;
Messaget;
cout<<”******************************************************************************"< cout〈<"请输入要查询的动物编号:
”<cin〉〉id;
ifstreamanimal(”sum。
dat",ios_base:
:
in);
animal.read((char*)&m,sizeof(m));
ﻩanimal。
close();
ﻩifstream ifile(”animal。
dat”,ios_base:
:
in);
ﻩfor(i=0;i〈m;i++)ﻩ
{
ﻩﻩifile.seekg(i*184);
ﻩ ifile。
read((char*)&t,sizeof(t));
ﻩﻩ
if(t.m_id==id)
ﻩﻩ{
cout<<"\t\t\t\t动物编号:
”〈 cout<〈”\t\t\t\t喂食间隔时间:
”<〈t.m_interval〈<”\n”;
cout<〈"\t\t\t\t食物名称:
"<〈t.m_food<〈"\n";
cout〈〈”\t\t\t\t喂食次数:
”<〈t.m_times〈<"\n”;
cout〈〈”\t\t\t\t得病原因:
"〈〈t。
m_reason〈〈”\n";
cout〈〈”\t\t\t\t得病时间:
”〈m_date〈〈”\n";
cout〈<"\t\t\t\t得病地点:
”<<t.m_place<〈endl〈ﻩ}
ﻩelse
ﻩﻩ {
ﻩ cout<<"文件中没有该信息!
"< }
}
ﻩcout<〈”******************************************************************************"〈ﻩmainmenu();
}
//已存查询
void Manage:
:
read()
{
ifstreamifile(”animal。
dat",ios_base:
:
in);
ﻩMessaget;
intm=0;
ﻩifstreamanimal(”sum.dat",ios_base:
:
in);
animal.read((char *)&m,sizeof(m));
animal.close();
ﻩ
ﻩfor(inti=0;iﻩ{
ﻩifile.read((char*)&t,sizeof(t));
cout<<”******************************************************************************"〈cout〈<”\t\t\t\t动物编号:
”<cout<<”\t\t\t\t喂食间隔时间:
"〈<t。
m_interval<<”\n";
cout〈〈"\t\t\t\t食物名称:
"〈<t.m_food<〈”\n";
cout〈<”\t\t\t\t喂食次数:
"〈〈t.m_times<<”\n";
cout<〈"\t\t\t\t得病原因:
”<m_reason<<”\n";
cout<<”\t\t\t\t得病时间:
”〈〈t。
m_date<<"\n";
cout〈〈”\t\t\t\t得病地点:
”〈〈t。
m_place<<endl;
}
ﻩcout〈〈"******************************************************************************"〈〈endl;
ﻩmainmenu();
}
voidManage:
:
save(Message t)
{
ofstreamfout("animal.dat",ios_base:
:
app);
if(fout)
{
fout.write((char*)&t,sizeoft);
ﻩﻩfout。
close();
ﻩcout<<”添加成功”<〈endl;
ﻩ}
else
{
fout。
close();
cout<〈”文件未打开,修改失败"<〈endl;
ﻩ}
int m=0;
ﻩifstreamanimal_sum("sum.dat",ios_base:
:
in);
ﻩanimal_sum.read((char*)&m,sizeof(m));
ﻩanimal_sum.close();
ﻩsum=m;
sum++;
ofstreamanimal_sum2("sum。
dat",ios_base:
:
trunc);
ﻩanimal_sum2.write((char *)&sum,sizeof(sum));
ﻩanimal_sum2。
close();
}
//登记动物
voidManage:
:
enrol()
{
MessageT;
int i,t,j;
charcommand;
char food[50],reason[50];
char date[20],place[50];
cout〈<”******************************************************************************”<<endl;
ﻩcout〈<"请输入喂食的间隔时间:
”〈〈endl;
cin>>i;
ﻩcout〈〈"请输入喂食的食物:
”〈cin〉〉food;
ﻩcout<<”请输入喂食的次数:
”<ﻩcin>>t;
ﻩcout〈<”请输入生病原因:
"〈〈endl;
cin>>reason;
cout<〈"请输入生病时间:
"〈ﻩcin>>date;
ﻩcout<<"请输入生病地点:
”<cin〉〉place;
cout<〈"请输入动物的编号:
"〈〈endl;
cin〉〉j;
cout〈〈"******************************************************************************"<〈endl;
ﻩ
Animala(i,food,t,reason,date,place,j);
T.m_interval=a。
get_interval();
strcpy(T.m_food,a。
get_food());
strcpy(T。
m_date,a。
get_date());
strcpy(T.m_place,a。
get_place());
strcpy(T.m_reason,a.get_reason());
T.m_times=a.get_times();
ﻩ
ﻩcout<〈"******************************************************************************”<〈endl;
cout〈〈"您输入的信息先打印如下:
" < cout<〈"\t\t\t\t动物编号:
"<〈T。
m_id<〈”\n";
cout<〈"\t\t\t\t喂食间隔时间:
"< cout<<”\t\t\t\t食物名称:
"〈〈T.m_food〈〈"\n”;
cout<〈”\t\t\t\t喂食次数:
"<<T。
m_times<<"\n”;
cout<〈"\t\t\t\t得病原因:
”<<T。
m_reason<<”\n";
cout〈<"\t\t\t\t得病时间:
"<〈T.m_date〈<"\n";
cout〈<"\t\t\t\t得病地点:
"<〈T。
m_place<
cout〈〈”******************************************************************************”<<endl;
char c,d;
intk;
int I,TI,J;
charFood[50],Reason[50];
charDate[20],Place[50];
cout<<"是否确认信息正确(Y/N)”〈〈endl;
cin>>c;
if(c==’N’)
{
cout〈〈"******************************************************************************"〈〈endl;
cout〈〈”\t\t\t\t1.修改喂食的间隔时间:
"〈 cout〈<”\t\t\t\t2。
修改喂食的食物:
”< cout〈〈”\t\t\t\t3.修改喂食的次数:
”〈 cout<<"\t\t\t\t4。
修改生病原因:
”〈<endl;
cout〈〈”\t\t\t\t5.修改生病时间:
"<〈endl;
cout<〈"\t\t\t\t6。
修改生病地点:
”〈<endl;
cout〈<”\t\t\t\t7。
修改动物的编号:
”<〈endl;
cout<〈”*************