面向对象C++课程设计
面向对象C++课程设计
《面向对象程序设计》课程设计任务书
2012/2013学年第一学期班级:计算机
1003-1004
一、设计目的
《面向对象程序设计》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
二、设计要求
通过这次设计,要求在逻辑特性和结构的设计及其实现等方面中加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
三、设计内容
(任意选1个)
1.有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地
址,英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:
1. 新增学生信息
2. 删除学生信息
3. 导入学生信息(已经保存于的文件信息)
4. 学生信息搜索(按姓名)
5. 学生信息统计(按专业或性别或年龄---年龄要自动计算)
6. 按英语成绩排序
7. 学生信息保存
8. 退出
******请选择:1
2.假设要为某个公司编写雇员工资支付程序。一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager)每月按固定工资支付,临时工(Floater )按小时支付。要求设计抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),
所有员工用该方法计薪。要求用多态实现。经理工资计算:月工资()
销售人员工资计算:基本工资+每件产品提成额*销售的产品数量
一般工人工资计算:每天工资额*工作天数临时工工资计算:每小时工资额*总工作小时数
文本界面为:
1.新增员工信息
2.删除员工信息
3.员工信息搜索(按姓名)
5.员工信息统计(按姓名或工资或类别)6.员工信息分类存储
7.员工信息导入
8.按工资排序
9.退出
******请选择:1
3.编写程序,随机出20道100以内的算术题,每题5分,加减乘除随机,每出一道题,用户答一次,并统计当前得分,最后显示总分及准确率,并把错误题目列出。
4.一台自动绘图仪能随机地绘制出矩形、圆
形和三角形,且每次绘制的图形个数也是随
机的。编制一个程序,实现如下功能:
1)每绘制一个图形即输出图形的绘制序
号、类型与面积;
2)统计输出每次绘制的不同类型的图形
的总数及面积和;
3)输出某类型(参数)图形的面积序列;
如:三角形21,34,55
4)对所有图形按其面积由小到大排序并
输出排序后的图形序列的绘制序号、图形类
型和面积。
5)设想用C语言如何实现。
四、课程设计报告内容:
一课程设计目的
二课程设计内容
1、课程设计的题目及简介
2、设计说明
3、程序流图
4、程序清单
三课程设计的要求
利用学到的编程知识和编程技巧,要求学生:
1、对系统进行功能模块分析、控制模块分
析正确
2、系统设计要能完成题目所要求的功能。
3、编程简练,可用,尽可能的使系统的功
能更加完善和全面
4、使用说明书、流程图要清楚(算法基本
思想描述,属性和方法功能描述列表,主要模块算法描述)。
5、特别要求自己独立完成。
四课程设计总结
五、时间安排
设计时间共2周。
第一周:选定题目,明确题目要求、确定数据结构、算法描述,准备好测试数据,
并完成初步设计;
第二周:前半周进行调试并改正错误,后半周答辩写报告。
六、地点系机房C2 -418
七、指导教师
课程设计题目
1.有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:
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
using namespace std;
/****************************************学生结点类***************************************/ class StudentNode
{
private:
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="UNKNOWN";
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(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 getAddress();
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 StudentNode::s_count=0;
//静态函数成员类外实现
void StudentNode::getCount()//易出现错误: 少加StuentNode::进行限定
{
cout< } //构造函数创建第一个学生对象StudentNode::StudentNode(string name,string sex,string major,string birthday,string address,float EnScore) { 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=NULL; } //构造函数创建第二个及以上学生对象连接到调用对象尾巴 StudentNode::StudentNode(string name,string 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 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_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; } //本对象连接到对象p void StudentNode::setNext(StudentNode *p) { this->next=p; } //获取编号 int StudentNode::getNo() { return 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 StudentNode::getAddress() { return this->m_address; } //获取生日 string StudentNode::getBirthday() { return this->m_birthday; } //访问学生对象 void StudentNode::visitStudentNode() { cout< cout< } /////////////////////////////////////////////////////////////// // // FileName : 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 StudentLinklist { private: StudentNode *head; public: StudentLinklist(); StudentLinklist(string name,string 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 searchStuNode();//搜索学生记录 void modifyStuNode();//修改学生信息 void importStuNode();//导入学生信息 void saveStuNode();//保存学生信息 void showStuNode(StudentLinklist *sl);//统计学生选择 void showMajor();//按专业统计 void showSex();//按性别统计 void showAge();//按年龄统计 void bubbleSort();//冒泡排序 ~StudentLinklist(){}