面向对象C++课程设计.doc

上传人:牧羊曲112 文档编号:4298876 上传时间:2023-04-14 格式:DOC 页数:62 大小:198.50KB
返回 下载 相关 举报
面向对象C++课程设计.doc_第1页
第1页 / 共62页
面向对象C++课程设计.doc_第2页
第2页 / 共62页
面向对象C++课程设计.doc_第3页
第3页 / 共62页
面向对象C++课程设计.doc_第4页
第4页 / 共62页
面向对象C++课程设计.doc_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《面向对象C++课程设计.doc》由会员分享,可在线阅读,更多相关《面向对象C++课程设计.doc(62页珍藏版)》请在三一办公上搜索。

1、面向对象C+课程设计面向对象程序设计课程设计任务书2012/2013学年第一学期 班级:计算机1003-1004一、设计目的面向对象程序设计是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。二、设计要求通过这次设计,要求在逻辑特性和结构的设计及其实现等方面中加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。三、设计内容(

2、任意选1个)1有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:1.新增学生信息2.删除学生信息3.导入学生信息(已经保存于的文件信息)4.学生信息搜索(按姓名)5.学生信息统计(按专业或性别或年龄-年龄要自动计算)6.按英语成绩排序7.学生信息保存8.退出*请选择:12假设要为某个公司编写雇员工资支付程序。一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager) 每月按固定工资支付,临时工(Floater )按小时支付。要求

3、设计抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),所有员工用该方法计薪。要求用多态实现。经理工资计算:月工资()销售人员工资计算:基本工资+每件产品提成额*销售的产品数量一般工人工资计算:每天工资额*工作天数临时工工资计算:每小时工资额*总工作小时数文本界面为:1新增员工信息2删除员工信息3员工信息搜索(按姓名)5员工信息统计(按姓名或工资或类别)6员工信息分类存储7员工信息导入8按工资排序9退出*请选择:13编写程序,随机出20道100以内的算术题,每题5分,加减乘除随机,每出一道题,用户答一次,并统

4、计当前得分,最后显示总分及准确率,并把错误题目列出。4.一台自动绘图仪能随机地绘制出矩形、圆形和三角形,且每次绘制的图形个数也是随机的。编制一个程序,实现如下功能:1)每绘制一个图形即输出图形的绘制序号、类型与面积;2)统计输出每次绘制的不同类型的图形的总数及面积和;3)输出某类型(参数)图形的面积序列;如:三角形 21,34,554)对所有图形按其面积由小到大排序并输出排序后的图形序列的绘制序号、图形类型和面积。5)设想用C语言如何实现。四、课程设计报告内容:一 课程设计目的二 课程设计内容1、课程设计的题目及简介2、设计说明3、程序流图4、程序清单三 课程设计的要求 利用学到的编程知识和编

5、程技巧,要求学生:1、对系统进行功能模块分析、控制模块分析正确2、系统设计要能完成题目所要求的功能。3、编程简练,可用,尽可能的使系统的功能更加完善和全面4、使用说明书、流程图要清楚(算法基本思想描述, 属性和方法功能描述列表,主要模块算法描述)。5、特别要求自己独立完成。四 课程设计总结五、时间安排设计时间共2周。第一周:选定题目,明确题目要求、确定数据结构、算法描述,准备好测试数据,并完成初步设计;第二周:前半周进行调试并改正错误,后半周答辩写报告。六、地点 系机房 C2 -418七、指导教师 课程设计题目1有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语

6、入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:1.新增学生信息2.删除学生信息3.导入学生信息(已经保存于的文件信息)4.学生信息搜索(按姓名)5.学生信息统计(按专业或性别或年龄-年龄要自动计算)6.按英语成绩排序7.学生信息保存8.退出运行情况:完整源代码:/ FileName : studentnode.h/ Creator : Berlin/ Date : 2013-3-18 10:20/ Comment :节点类声明/#ifndef _STUDENTNODE_H_#define _STUDENTNODE_H_#include #include #include usin

7、g namespace std;/*学生结点类*/class StudentNodeprivate:int m_no;string m_name;string m_sex;string m_major;string m_birthday;string m_address;float m_EnScore;/英语成绩static int s_count;/静态数据成员,记录学生个数StudentNode *next;public:StudentNode()/无参构造函数this-m_no=0;this-m_name=NO_NAME;this-m_sex=UNKNOWN;this-m_major=U

8、NKNOWN;this-m_birthday=UNKNOWN;this-m_address=UNKNOWN;this-m_EnScore=0;this-next=NULL;StudentNode(string name,string sex,string major,string birthday,string address,float EnScore);StudentNode(string name,string sex,string major,string birthday,string address,float EnScore,StudentNode *p);StudentNode

9、(StudentNode &StuNode);/复制构造函数void setStudentNode(string name,string sex,string major,string birthday,string address,float EnScore,StudentNode *_next=NULL);void setNext(StudentNode *p);StudentNode* getNext();int getNo();string getName();string getSex();string getMajor();string getBirthday();string g

10、etAddress();float getEnScore();void visitStudentNode();static void getCount();/静态函数成员StudentNode()-s_count;/析构函数;#endif/ FileName : studentnode.cpp/ Creator : Berlin/ Date : 2013-3-18 10:20/ Comment :节点类实现/#include stdafx.h#include studentnode.h#include #include #include #include /静态变量初始化int Student

11、Node:s_count=0;/静态函数成员类外实现void StudentNode:getCount()/易出现错误: 少加StuentNode:进行限定couts_countm_no=+s_count;this-m_name=name;this-m_sex=sex;this-m_major=major;this-m_birthday=birthday;this-m_address=address;this-m_EnScore=EnScore;next=NULL;/构造函数 创建第二个及以上学生对象 连接到调用对象尾巴StudentNode:StudentNode(string name,s

12、tring sex,string major,string birthday,string address,float EnScore,StudentNode *p)this-m_no=+s_count;this-m_name=name;this-m_sex=sex;this-m_major=major;this-m_birthday=birthday;this-m_address=address;this-m_EnScore=EnScore;next=p;/设置学生信息void StudentNode:setStudentNode(string name,string sex,string

13、major,string birthday,string address,float EnScore,StudentNode *_next/*=NULL*/)this-m_no=+s_count;this-m_name=name;this-m_sex=sex;this-m_major=major;this-m_birthday=birthday;this-m_address=address;this-m_EnScore=EnScore;this-next=_next;/复制构造函数StudentNode:StudentNode(StudentNode &StuNode)this-m_no=+s

14、_count;this-m_name=StuNode.m_name;this-m_sex=StuNode.m_sex;this-m_major=StuNode.m_major;this-m_birthday=StuNode.m_birthday;this-m_address=StuNode.m_address;this-m_EnScore=StuNode.m_EnScore;this-next=NULL;/本对象 连接到对象pvoid StudentNode:setNext(StudentNode *p)this-next=p;/获取编号int StudentNode:getNo()retur

15、n this-m_no;/获取下一个结点地址StudentNode* StudentNode:getNext()return this-next;/获取英语成绩float StudentNode:getEnScore()return this-m_EnScore;/获取姓名string StudentNode:getName()return this-m_name;/获取性别string StudentNode:getSex()return this-m_sex;/获取专业string StudentNode:getMajor()return this-m_major;/获取地址string

16、StudentNode:getAddress()return this-m_address;/获取生日string StudentNode:getBirthday()return this-m_birthday;/访问学生对象void StudentNode:visitStudentNode()coutsetiosflags(ios:left);coutsetw(5)m_nosetw(10)m_namesetw(5)m_sexsetw(10)m_birthdaysetw(15)m_majorsetw(10)m_EnScoresetw(20)m_addressendl;/ FileName :

17、studentlinklist.h/ Creator : Berlin/ Date : 2013-3-18 10:20/ Comment :链表类声明/#ifndef _STUDENTLINKLIST_H_#define _STUDENTLINKLIST_H_#include studentnode.h#include #include using namespace std;/*学生链表类*/class StudentLinklistprivate:StudentNode *head;public:StudentLinklist();StudentLinklist(string name,s

18、tring sex,string major,string birthday,string address,float EnScore);void addAtEnd(string name,string sex,string major,string birthday,string address,float EnScore);/新增学生记录void addAtEnd(StudentNode *p);void createList();/读取文件内容创建链表void visitAllNode();/浏览学生记录void deleteStuNode();/删除学生记录void searchStu

19、Node();/搜索学生记录void modifyStuNode();/修改学生信息void importStuNode();/导入学生信息void saveStuNode();/保存学生信息void showStuNode(StudentLinklist *sl);/统计学生选择void showMajor();/按专业统计void showSex();/按性别统计void showAge();/按年龄统计void bubbleSort();/冒泡排序StudentLinklist();#endif/ FileName : studentlinklist.cpp/ Creator : Ber

20、lin/ Date : 2013-3-18 10:20/ Comment :链表类实现/#include stdafx.h#include studentlinklist.h#include #include #include #include #include #include #include using namespace std;/无参构造函数StudentLinklist:StudentLinklist()this-head=NULL;/有参构造函数StudentLinklist:StudentLinklist(string name,string sex,string major,

21、string birthday,string address,float EnScore)this-head=new StudentNode(name,sex,major,birthday,address,EnScore);/读取文件内容void StudentLinklist:createList()StudentNode *rear=this-head;/rear=NULL;ifstream fileOut(D:/学生信息.txt,ios:binary|ios:out);if(fileOut.fail()cout文件无法打开!endl;exit(EXIT_FAILURE);while(!(

22、fileOut.peek()=EOF)/peek()是取文件指针的位置StudentNode *p=new StudentNode;/ 临时中转站fileOut.read( reinterpret_cast(p) , sizeof(*p) );if(this-head=NULL)/错误:rear=NULLthis-head=new StudentNode(*p);/错误:rear=new StudentNode(*p);rear=this-head;/没有此句 错误elsewhile( rear-getNext()!=NULL )rear=rear-getNext();rear-setNext

23、(new StudentNode(*p);/调用复制构造函数fileOut.close();/导入学生信息void StudentLinklist:importStuNode()StudentNode *rear=this-head;/rear=NULL;string fileName;cout请输入导入的文件路径及文件名:fileName;ifstream fileOut(fileName,ios:binary|ios:out);if(fileOut.fail()cout文件无法打开!endl;exit(EXIT_FAILURE);while(!(fileOut.peek()=EOF)/pe

24、ek()是取文件指针的位置StudentNode *p=new StudentNode;/ 临时中转站fileOut.read( reinterpret_cast(p) , sizeof(*p) );if(this-head=NULL)/错误:rear=NULLthis-head=new StudentNode(*p);/错误:rear=new StudentNode(*p);rear=this-head;/没有此句 错误elsewhile( rear-getNext()!=NULL )rear=rear-getNext();rear-setNext(new StudentNode(*p);/

25、调用复制构造函数fileOut.close();/增加记录到链表尾void StudentLinklist:addAtEnd(string name,string sex,string major,string birthday,string address,float EnScore)ofstream fileIn;StudentNode *rear=this-head;StudentNode *p;fileIn.open(D:/学生信息.txt, ios_base:app);if(this-head=NULL)p=new StudentNode(name,sex,major,birthda

26、y,address,EnScore);this-head=p;fileIn.write(reinterpret_cast(p),sizeof(*p);elsewhile(rear-getNext()!=NULL)rear=rear-getNext();p=new StudentNode(name,sex,major,birthday,address,EnScore);rear-setNext(p);fileIn.write(reinterpret_cast(p),sizeof(*p);fileIn.close();/链接到链表尾void StudentLinklist:addAtEnd(Stu

27、dentNode *p)StudentNode *pn=this-head;if(this-head=NULL)this-head=p;elsewhile(pn-getNext()!=NULL)pn=pn-getNext();pn-setNext(p);/显示所有学生信息void StudentLinklist:visitAllNode()StudentNode *p;p=this-head;if(p=NULL)cout没有学生记录!endl;elsecouttttt学生情况endl;coutendl;coutsetiosflags(ios:left);coutsetw(5)编号setw(10

28、)学生姓名setw(5)性别setw(10)生日setw(15)专业setw(10)外语成绩setw(20)地址endl;coutgetNext()!=NULL)p-visitStudentNode();p=p-getNext();p-visitStudentNode();coutendl;couthead;StudentNode* follow=p;if(this-head!=NULL)coutname;elsecout没学生可以删除!getName()=name)/若删除的结点为第一个结点head=p-getNext();delete p;elsewhile(p-getNext()!=NU

29、LL&p-getName()!=name)follow=p;/follow一直指向p的前一个结点p=p-getNext();if(p-getName()=name)follow-setNext(p-getNext();delete p;/搜索学生信息void StudentLinklist:searchStuNode()string name;StudentNode* p=this-head;int flag=0;if(this-head!=NULL)cout请输入学生姓名关键字:name;elsecout学生记录为空,没有可搜索的学生。getName().find(name,0)!=stri

30、ng:npos)/string:nops=-1flag+;if(flag=1)cout姓名关键字为:name的学生信息为:endl;coutendl;coutsetw(5)编号setw(10)学生姓名setw(5)性别setw(10)生日setw(15)专业setw(10)外语成绩setw(20)地址endl;coutvisitStudentNode();p=p-getNext();elsep=p-getNext();if(flag)coutendl;elsecout没有名为:name的学生。endl;/统计学生总人数void StudentLinklist:showStuNode(Stude

31、ntLinklist *sl)cout学生总人数为:;StudentNode:getCount();/静态成员函数调用 显示人数coutendl;while(true)coutttendl;couttt 学生信息统计 endl;coutttendl;cout 按专业统计 endl;cout 按性别统计 endl;cout 按年龄统计 endl;cout 退出统计 endl;coutttendl;int choice;coutchoice;switch(choice)case 0:sl-showMajor();break;case 1:sl-showSex();break;case 2:syst

32、em(cls);sl-showSex();break;case 3:system(cls);sl-showAge();break;default:cout输入错误,请从新输入head;string BornYear;int bornyear;CTime currentTime = CTime:GetCurrentTime();/类CTime的对象currentTime获取当前时间 int year = currentTime.GetYear();/获取当前年份int flag=0;if(follow=NULL)cout没有学生统计个屁!getBirthday(),0,4 );/提取 出生日期

33、的前四个字符(年份)bornyear=atoi( const_cast(BornYear.c_str();/将string类年份转换为字符串型再转为整形if( (year-bornyear+1)=0&(year-bornyear+1)10 )flag+;if(flag=1)cout年龄为0-10之间的学生:endlendl;coutsetw(5)编号setw(10)学生姓名setw(5)性别setw(10)生日setw(15)专业setw(10)外语成绩setw(20)地址endl;coutvisitStudentNode();follow=follow-getNext();if(flag=0

34、)cout年龄为0-10之间的学生为0个endl;elsecouthead;flag=0;while(follow!=NULL)BornYear.assign( follow-getBirthday(),0,4 );/提取 出生日期 的前四个字符(年份)bornyear=atoi( const_cast(BornYear.c_str();/将string类年份转换为字符串型再转为整形if( (year-bornyear+1)=10&(year-bornyear+1)20 )flag+;if(flag=1)cout年龄为10-20之间的学生:endlendl;coutsetw(5)编号setw(10)学生姓名setw(5)性别setw(10)生日setw(15)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号