1、北京邮电大学课程设计报告课程设计名称面向对象程序设计与实践 2 学 院 计算机学院 指导教师 双锴学生姓名 班 级 学 号课程设计内容本次课程设计是面向对象程序设计与实践(C+)2,主要完成足球俱乐部管理程序,从试用版到专业版到最后完成企业版。这次课程设计是在上学期基础上进行的提高,通过个人编写程序代码来完成本次课程设计。学生课程设计报告( 附 页 )见程序代码。课程设计成绩评定遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、 是否认真、独立完成
2、属于自己的课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规范评语: 成绩:指导教师签名: 年 月 日面向对象程序设计与实践(C+)2足球俱乐部管理程序程序说明书班级: 姓名: One seven 学号: 题目一:足球俱乐部管理程序(试用版)1. 题目描述以及要求 描述:足球俱乐部包括球员、普通行政人员。球员有姓名、年龄、能力、年薪、转会费、进球总数、服役年限等重要参数;普通行政人员有姓名、年龄、能力、年薪等参数。你需要给相关管理机构开发一个管理程序,实现对众多足球俱乐部管理的基本功能。具体功能包括: 俱乐部的增删改查,俱乐部的属性包括名称、现金、其下人员; 可以对所有球员的各项属性进行
3、简单搜索,支持输入多个条件,条件之间用 /名字 int age; /年龄 int ability; /能力 int salary; /年薪 int staff_num; /行政人员人数 Staff *nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;Staff(); /构造函数 void staff_add(); /添加行政人员 void staff_delete(); /删除行政人员 void staff_modify(); /修改行政人员 void staff_search(); /查找行政人员 void staff_operate();/
4、行政人员操作 ;class Player:public Staffpublic:int fee; /转会费int kick; /进球数 int experience; /服役年限int player_num; /球员人数 Player *nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;Player(); /构造函数 void player_add(Player*); /添加球员 void player_delete(); /删除球员 void player_modify(); /修改球员 void player_search(); /查找球员
5、 void player_operate(); /球员操作 ;class Club:public Playerprivate:int club_num; /俱乐部个数 int cash; /俱乐部资金 Club *nextPtr,*newPtr,*headPtr,*currentPtr,*previousPtr;public:Club(); /构造函数 void club_add(); /添加俱乐部 void club_delete(); /删除俱乐部 void club_search(); /查找俱乐部 void club_deal(); /处理俱乐部 void club_operate()
6、; /俱乐部操作 void club_exchange(); /交易球员 void club_playersearch(); /条件搜索球员 void club_print(Club*); /打印俱乐部内部信息 ;2.2 球员条件搜索功能2.2.1 实现截图2.2.2 实现思路先读取输入的条件字符串,然后进行分析,程序里面定义了三个数组分别是,在分析字符串的时候还用到了字符串的连接即:s1=s1+s2(把 s2 所指向的字符串接的 s1 的尾部),遇到一个就把数组下标加 1,分别是 string st20; char op20=0;int num20=0; st 存字母信息,如:age,kic
7、k 等,op 存操作符(,) ,并能实现对球员姓名的模糊查找(运算符为) ,输出球员的详细信息。例如:1. “年龄不大于 25 且服役年限大于 5 年,或者进球数大于 100 的球员” ,查询表达式:( !(age25) Staff *nowPtr2;ofstream outf(“club.txt“);outfnextPtr)outfnamecashPlayer:headPtr;nowPtr2=currentPtr-Staff:headPtr;if(nowPtr=NULL)outfplayer_numnextPtr)outfnameageabilitysalary;outffeekickexp
8、eriencestaff_numnextPtr)outfnameageabilitysalaryendl; outf.close();2.2 高级搜索功能2.2.1 实现截图2.2.2 实现思路在第一版的基础上对条件搜索进行了增加功能,使条件搜索变得高级,能实现对球员姓名的模糊查找,以及对球员所在俱乐部的条件限定。通过与上一版的方法的改进,实现了要求。2.2.3 代码见源程序 题目三:足球俱乐部管理程序(企业版)1 题目描述以及要求 描述:在题目二的程序基础上,增加远程访问功能,采用客户端/服务器的方式,实现两种远程操作 高级搜索,在客户端上执行搜索,其搜索范围除了本地数据以外,也应该返回服务
9、端的搜索结果; 球员买卖,客户端可以发起向服务端买入球员的请求,如果符合买卖条件,交易成功,该球员从服务端删除,进入客户端选定的俱乐部。 要求: 必须在题目二的代码基础上来修改; 必须使用 Socket 作为远程通信技术,可以使用更高层次的 Socket封装类; 其他要求与题目二相同; 在题目要求基础上可以自行扩展功能,提供扩实用扩展功能者适当加分(加分不超过 5 分) 。2.各功能实现模块题目三要求的功能有远程操作功能实现细明叙述如下。2.1 远程操作功能2.2.1 实现截图(1)客户端(2)服务端2.2.2 实现思路远程操作主要是在前面程序的基础上运用一些模板,添加新的东西,使用 sock
10、et 实现客户端和服务端的信息传递,主要还是传递问题,而因为传递时候只能传字符型的信息,所以在传信息之前必须将信息用强制类型转化方式转成 char 型,才能进行传递,所有信息都用一个 char 数组接收,所以每接受一个数据就得初始化。当客户端想买球员的时候会发一个特定的数到服务端,服务端接收的信息,判断以后发现是要买球员,客户端同时会询问想要买球员的俱乐部,选择以后,就将俱乐部的现金再传给服务端,服务端会将所有俱乐部的所有球员的信息列出,供人参考,然后你选择你想买的球员,判断符合买卖条件,则买卖成功,将这个球员的信息一一传递到客户端,客户端接受以后再添加到相应的俱乐部里,同时服务端球员所属的俱
11、乐部将该球员信息删除,同时服务端卖球员的俱乐部的现金增加,客户端买球员的俱乐部现金减少,最后把更改后的信息写入文件里。这样就实现了远程访问功能。2.1.3 主要代码见源程序int main()WSADATA wsaData;WSAStartup(MAKEWORD(2,2),SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN clientsock_in;clientsock_in.sin_family=AF_INET;clientsock_in.sin_port=htons(6000);clientsock_in.sin_a
12、ddr.S_un.S_addr=inet_addr(“127.0.0.1“);connect(clientSocket,(SOCKADDR*)/开始连接心得体会:综合运用 C+中类,函数,输入输出流等操作。体会 C+综合程序设计的流程,设计,编码调试到最终基本实现要求的程序完成的过程。经过这学期面向对象程序设计课程的学习,我熟悉了C+编程环境。同时具备了使用 C+编程解决一些实际问题的能力,基本实现了预期实验目的,达到了课程要求。感觉 C+面向对象在解决复杂问题非常好用,老师课上讲了继承与派生,我的程序里面也用到了,从而对继承与派生有了更深刻的认识,发现用继承真的很省事;还有关于公有成员,私有
13、成员的问题,但是虽然私有成员无法访问,但可以设置很多成员函数,通过成员函数来获取,改变,设置私有成员。多数需要的是我们自学的能力,需要自看书,编程去体会。然后,我们对语言的掌握能力才能有进步。总之,通过这次课程的学习我觉得在自己对 C+语言的理解上面也深刻了一些。平时虽然说上课的时候老师讲的一些知识和内容也不是不懂,就以为自己真的学懂一些了。但是等到要真把我们所做的运用到实际中做,写程序的时候,才发现其实平时学的那些东西不能很好的融入进自己所想写的程序里。然后想了很多,和别人的交流。发现这是一种对编程思想的培养。因为当初刚来这里的时候,老师就告诉我们,计算机语言和程序本身是需要严密的逻辑思维的。所以现在我们还不能很熟练的运用进自己所学的融入进自己想写的程序,就是因为我们还没培养好那种对程序的编程思想。所以当看到别人的代码的时候会明白,但是让自己写就有点无从下手的感觉。就比如老师在讲函数的时候给我们说的,知道函数的意思和功能,却不能明确的知道在什么时候该用和不该用。所以我觉得改变这个现状和培养自己的方法就是先要熟练的知道自己所学,然后自己要动手多练多写代码。多加练习,我想就可以培养自己对程序设计的思维了。