ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:114.96KB ,
资源ID:25448833      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25448833.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(邮局书籍管理系统实训报告.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

邮局书籍管理系统实训报告.docx

1、邮局书籍管理系统实训报告实训报告一、 概要用C+面向对象程序设计的相关知识设计并实现一个邮局的书籍信息管理系统。该系统可用于书籍份数、作者、邮费等信息的查询。二、 系统需求分析(1) 用户需求分析 图1用户需求分析用户进入系统可以选择相应物品的信息(书籍信息、期刊信息、文化品信息),当选择后会直接显示该物品的详细信息(作者信息、份数信息、邮费信息、出版社信息)。(2) 功能分析程序主要实现3个功能:查询书籍信息的功能、查询期刊信息的功能、查询文化品信息的功能。书籍信息功能中包括:书名、出版社、作者、书编号、邮寄书的数量、邮寄书的费用。期刊信息功能包括:期刊名、期刊月份、邮寄书的数量、邮寄书的费

2、用。文化品信息功能包括:书名、出版社、作者、书编号、邮寄书的数量、邮寄书的费用、期刊名、期刊月份、邮寄书的数量、邮寄书的费用、所寄邮件的总份数、所需总费用。三、 系统设计与实现(1) 系统开发环境操作系统:window 7开发平台:C-Free 5.0(2) 系统总体设计图2 邮局管理系统概况Main函数中dowhile、switch结构实现界面的循环。函数a()处理书籍信息、函数b()处理期刊信息、函数c()处理文化品信息。设置一个邮局的基类Post,该类中有计算所寄印刷品prin的份数numb和计算所寄印刷品的邮寄费cost。设置一个书籍派生类Book,该类中有书名titl和press,该

3、类通过邮局寄出书籍3本,输出邮寄费cost;同时再设置一个作者派生类Auth,该类中有姓名name和书号isbn,该类作为书籍派生类辅助类。设置一个期刊派生类Jour,该类中有期刊名称jou_na和期刊月份jou_mon,该类通过邮局寄出期刊5本,输出邮寄费cost。设置一个文化品派生类Cul_pro,该类中要邮寄三本书和两本期刊,在邮寄时要寄出单位Sen_un。四、 功能设计(1) 基类Post、书籍派生类Book、作者派生类Auth、期刊派生类Jour和文化品派生类Cul_pro的设计。如图3图3 类图设计此类图的设计运用了C+中提供的虚基类方法,使得在继承间接共同基类时保留一份成员。以下

4、是关于C+中虚基类的学习与认识:假设类D是类B和类C公用派生类,而类B和类C又是类A的派生类,如图11.21所示。 设类A有数据成员data和成员函数fun;派生类B和C分别从类A继承了data和fun,此外类B还增加了自己的数据成员data_b,类C增加了数据成员data_c。如果不用虚基类,就会在类D中保留了类A成员data的两份拷贝,分别表示为int B:data和int C:data。同样有两个同名的成员函数,表示为void B:fun()和void C:fun()。类B中增加的成员data_b和类C中增加的成员dat_c不同名,不必用类名限定。此外,类D还增加了自己的数据成员data

5、_d和成员函数fun_d。现在,将类A声明为虚基类,方法如下:class A /声明基类A / 代码;class B: virtual public A /声明类B是类A的公用派生类,A是B的虚基类 / 代码;class C: virtual public A /声明类C是类A的公用派生类,A是C的虚基类 / 代码;注意: 虚基类并不是在声明基类时声明的,而是在声明派生类时,指定继承方式时声明的。因为一个基类可以在生成一个派生类时作为虚基类,而在生成另一个派生类时不作为虚基类。声明虚基类的一般形式为: class 派生类名: virtual 继承方式 基类名即在声明派生类时,将关键字 virt

6、ual 加到相应的继承方式前面,经过这样的声明后,当基类通过多条派生路径被一个派生类继承时,该派生类只继承该基类一次,也就是说,基类成员只保留一次。需要注意:为了保证虚基类在派生类中只继承一次,应当在该基类的所有直接派生类中声明为虚基类。否则仍然会出现对基类的多次继承。如果在派生类B和C中将类A声明为虚基类,而在派生类D中没有将类A声明为虚基类,则在派生类E中,虽然从类B和C路径派生的部分只保留一份基类成员,但从类D路径派生的部分还保留一份基类成员。虚基类的初始化如果在虚基类中定义了带参数的构造函数,而且没有定义默认构造函数,则在其所有派生类(包括直接派生或间接派生的派生类)中,通过构造函数的

7、初始化表对虚基类进行初始化。例如class A /定义基类A A(int i) /基类构造函数,有一个参数;class B :virtual public A /A作为B的虚基类 B(int n):A(n) /B类构造函数,在初始化表中对虚基类初始化;class C :virtual public A /A作为C的虚基类 C(int n):A(n) /C类构造函数,在初始化表中对虚基类初始化;class D :public B,public C /类D的构造函数,在初始化表中对所有基类初始化 D(int n):A(n),B(n),C(n) ;注意: 在定义类D的构造函数时,与以往使用的方法有所

8、不同。以往,在派生类的构造函数中只需负责对其直接基类初始化,再由其直接基类负责对间接基类初始化。现在,由于虚基类在派生类中只有一份数据成员,所以这份数据成员的初始化必须由派生类直接给出。如果不由最后的派生类直接对虚基类初始化,而由虚基类的直接派生类(如类B和类C)对虚基类初始化,就有可能由于在类B和类C的构造函数中对虚基类给出不同的初始化参数而产生矛盾。所以规定:在最后的派生类中不仅要负责对其直接基类进行初始化,还要负责对虚基类初始化。引用:(2) 函数功能。函数原型1 void a()函数功能:处理图书信息,输出书名、出版社、作者、书编号、邮寄书的数量、邮寄书的费用。函数原型 2 void

9、b()函数功能:处理期刊信息,输出期刊名、期刊月份、邮寄书的数量、邮寄书的费用。函数原型 3 void c()函数功能:书名、出版社、作者、书编号、邮寄书的数量、邮寄书的费用、期刊名、期刊月份、邮寄书的数量、邮寄书的费用、所寄邮件的总份数、所需总费用。(3) 各类的参构造函数,静态变量。 Post类为系统默认的无参构造函数。Post类的静态变量: static int b_count; static int n_count;static int b_price; static int n_price;Auth类参构造函数:Auth(string a_n,int b_nu) author_nam

10、e=a_n; book_number=b_nu; Auth类的静态变量:public:string author_name; int book_number;Book类参构造函数: Book(string a_n,int b_nu,string adr,string b_na):per(a_n,b_nu) book_name=b_na; adress=adr; Book类的静态变量:private: string book_name; string adress;public: Auth per;Jour类构造函数: Jour(string pin,int mo):piname(pin),mo

11、th(mo)Jour类的静态变量:private: string piname; int moth;Cul_pro类构造函数: Cul_pro(string a_n,int b_nu, string adr,string b_na,string pin,int mo,string fr=湖北省黄冈市蕲春县): Book(a_n,b_nu,adr,b_na),Jour(pin,mo) from=fr; Cul_pro类静态变量:private: string from;(4) 设计相应的成员函数、成员变量。Book类成员函数:int b_money(int b_c,int b_p),入口参数:为

12、数量和费用,出口函数为总的邮费return n_count*n_price;void display()输出,书名、出版社、作者名、书编号Jour类成员函数:void show() 显示,期刊名、期刊月分int n_money(int n_c,int n_p) 入口参数:为数量和费用,出口函数为总的邮费return n_count*n_price;Cul_pro类成员函数:void show()显示,邮寄书数为、费用为,邮寄期刊数为、费用为,所邮寄邮件的总份数、所需总费用、邮寄者地址。(5) 在多重继承下实现虚函数描述。Cul_pro类是Book类和Jour类公用派生类,而类Book和类Jou

13、r又是类Post的派生类,因此运用了虚拟基类。如图3所示。五、 学习感悟两天的实训课程,给我了很大的影响。通过这次实训是我明白,学习一种编程语言不能只看书上还要不停的上机练习,才能体会出书中所讲的道理。通过这次的实训我找到了我很多遗漏的知识点,还有很多以前不懂得问题。在查询资料中更让自己获益匪浅。想要理解一段代码,实现一个功能并不是一件简单的事情。就像刚开始看到老师给的这些代码,总感觉没什么可写没什么可说,这只是一个极其简单的小程序而已,但是当开始一句一句的注释解释的时候才发现自己根本不会。很多知识不知道,然后开始查资料,开始XX开始请教别人,这时才发现原来有如此多的知识点。当然这次的实训给我

14、最大的感受就是一定要学会怎样去查询资料,怎样遇到问题时查询资料并且解决。互联网是一个很好的工具,可以查询到很多的问题。所以实训带给我的第一点就是如何利用网络解决遇到的问题。第二点就是多看书,书中的知识点都是最基本的最基础的知识,如果书中的这些知识点都看不懂的话那无论如何也编写不出程序的。第三点就是要静下心来耐心的学习,切不可眼高手低,必须一点一滴的踏踏实实的学会每一个知识点。只有真正掌握了一个知识点到用时才会得心应手,才会越学越轻松,必经这门知识就那么多掌握一个就上一个嘛。当然更感谢老师教会了我这些,让我领悟到了这些!六、 附代码 #include#include#includeusing n

15、amespace std;/*邮局基类Post*/class Post public: static int b_count; static int n_count; static int b_price; static int n_price;class Auth /*作者派生类*/ public: string author_name;/*静态变量*/ int book_number;Auth(string a_n,int b_nu)/*构造函数*/ author_name=a_n; book_number=b_nu; ;/*书籍派生类Book*/class Book:virtual pu

16、blic Postprivate: string book_name;/*静态变量*/ string adress;public: Auth per; Book(string a_n,int b_nu,string adr,string b_na):per(a_n,b_nu)/*构造函数*/ book_name=b_na; adress=adr; int b_money(int b_c,int b_p)/*成员函数 入口参数:为数量和费用,出口函数为总的邮费return n_count*n_price; */ return (b_c*b_p); void display()/*成员函数 输出,

17、书名、出版社、作者名、书编号 */ cout书名:book_nameends出版社:adressends作者名:per.author_nameends书编号:per.book_numberendl; ;/*期刊派生类Jour*/class Jour:virtual public Postprivate: string piname;/*静态变量*/ int moth;public: Jour(string pin,int mo):piname(pin),moth(mo)/*构造函数*/ virtual void show()/*成员函数 显示,期刊名、期刊月分 */ cout期刊名:pinam

18、eends期刊月分: mothendl; int n_money(int n_c,int n_p)/*成员函数 入口参数:为数量和费用,出口函数为总的邮费return n_count*n_price; */ return n_count*n_price; ;/*文化品派生类Cul_pro*/class Cul_pro:public Book,public Jourprivate: string from;public: Cul_pro(string a_n,int b_nu, string adr,string b_na,string pin,int mo,string fr=湖北省黄冈市蕲春

19、县): Book(a_n,b_nu,adr,b_na),Jour(pin,mo) /*构造函数*/ from=fr; void show()/*成员函数 显示,邮寄书数为、费用为,邮寄期刊数为、费用为,所邮寄邮件的总份数、所需总费用、邮寄者地址。 */ cout邮寄书数为:b_countendsends费用为:b_money(b_count,b_price)endlendl; cout邮寄期刊数为:n_countends费用为:n_money(n_count,n_price)endlendl; cout 所邮寄邮件的总份数:(b_count+n_count)endlendl; cout 所需总

20、费用:(b_money(b_count,b_price)+n_money(n_count,n_price)endlendl; cout 邮寄者地址:fromendl; ;int Post:b_count=0;int Post:b_price=2;int Post:n_count=0;int Post:n_price=1;void a() Book *bp;/*Book类型的指针*/ /*Book 类型的数组*/ Book gushao3= Book(王沛礼,19900709,南理出版社,我的大学), Book(封少华,20121212,机械出版社,我的梦), Book(顾少座,20160623

21、,清华大学出版社,我爱学习) ; for(int i=0;i3;i+)/*遍历全部书籍*/ printf(第%d本书的信息: ,i+1); gushaoi.display();/*调用Book类里的display函数*/ cout.put(10);/*空行*/ Post:b_count+;/*记录书籍数量*/ cout 邮寄书的数量为:Post:b_countends 邮寄书的费用为:b_money(Post:b_count,Post:b_price)endlendl; cout查询成功! 按enter返回主菜单; cin.get(); cin.get(); void b() Jour gu3

22、=/*Jour 类型的数组*/ Jour(好好学习,2), Jour(天天向上,5), Jour(她,0) ; Jour *np;/*Jour类型的指针*/ for(int i=0;i3;i+) printf(第%d期刊的信息: ,i+1); gui.show();cout.put(10); Post:n_count+; cout 邮寄书的数量为:Post:n_countends 邮寄书的费用为:n_money(Post:b_count,Post:b_price)endlendl;cout查询成功! 按enter返回主菜单; cin.get(); cin.get();void c()Cul_p

23、ro gushaozuo3= Cul_pro(我的大学,1,南理出版社,封少华,好好学习,2), Cul_pro(我的梦,2,机械出版社,顾少座,天天向上,5), Cul_pro(我爱学习,3,清华大学出版社,冯春, 她,0), ; int i;for( i=0;i3;i+) gushaozuoi.display(); cout.put(10); for( i=0;ishow(); cout查询成功! 按enter返回主菜单; cin.get(); cin.get();int main() int j;do coutttaaaa 邮件查询系统!aaann; cout*n; cout*图书类*查

24、询请按 1*endl; cout*期刊类*查询请按 2*endl; cout*查询书和期刊类*查询请按 3*endl; cout*退出查询*返回请按 4*endl; cout ; scanf(%daa,&j); switch(j) case 1:a();break;case 2:b();break;case 3:c();break;case 4:system(cls);coutttn已退出程序!n;cin.get();cin.get();break;default:coutaaaaaa输入错误! nn计算机正发出警告nn 请从新输入!;break; system(cls);while(j!=4);couttttt谢 谢!;cin.get();cin.get();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1