c++课程设计....在线等..追200分

职工信息管理
设计要求:
设计要求实现如下功能:
(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。
(2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。(可选功能)
(3)使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类)使用相应的对象放置10个职工信息。
(4)编写同名display()成员函数,用来输出数组的内容。
(5)按不同类别输出职工信息,比如按系输出教师信息。(可选功能)
(6)要求对“<<”和“>>”运算符进行重载。考虑到输人职工编号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“>>’’运算符时,需要满足这个要求。
(7)抽取并计算职工的平均年龄。
(8)检索(查找)指定信息。(如按姓名检索、按年龄检索)
(9)
参考界面如下:
增加一位教师记录
增加一位工人记录
显示全部职工记录
计算教师平均年龄
计算工人平均年龄
删除一个教师
删除一个工人
按系输出教师信息(可选)
按姓名检索所有信息
结束程序运行
.............我是在不会写,,纯粹的菜鸟..请详细注明
问题解决了.我追加200分..分不是问题只要你有能力
请给我一个方式把后面的140分给你..
我只能只能连续提高悬赏2次 ..
我的QQ330390511..一定要给我个机会 ..
虽然我没学链表..但是 还是很谢谢你
你给的程序功能很强大//呵呵

**************************************************/
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <memory.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

struct Employee
{//声明职工的结构作为链表节点。
//-----数据域-----
string m_Code;
string m_Name;
unsigned short int m_Year;
string m_Sex;
string m_Post;
string m_Department;
unsigned int m_Wage;
//链表节点的指针域---
struct Employee* Next;
};

//-----个人习惯:取别名-------
typedef struct Employee Node;
typedef Node* Link;

//-------函数声明-------------
Link Create(Link Head);
void Release(Link Head);
Link Add(Link Head);
bool Search(Link Head);
Link Search_Unique(Link Head);
void Display_List(Link Head);
void Display_Node(Link pNode);
Link Modify(Link Head);
Link Del(Link Head);
void Save_ByFile(Link Head,fstream& ofile);
Link Sort(Link Head);
//-------函数实现--------------------------
Link Create(Link Head)
{//创建一个带头节点的空链表。
Head=(Link)new Node;
if(!Head)
{
cout<<"分配内存失败!"<<endl;
return NULL;
}
Head->m_Code="";
Head->m_Name="";
Head->m_Year=0;
Head->m_Sex="";
Head->m_Post="";
Head->m_Department="";
Head->m_Wage=0;
Head->Next=NULL;

return Head;
}

void Release(Link Head)
{//释放链表。
Link ptr;//声明一个操作用的指针。
while(Head!=NULL)
{
ptr=Head;
Head=Head->Next;
delete ptr;//释放节点资源。
}
}

Link Add(Link Head)
{//前插法添加数据。
Link pNew;// 声明一个新节点。
char again;
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
do
{
pNew=(Link)new Node;
//数据域。
cout<<"请输入职工代码:";
cin>>code;
cout<<endl<<"请输入职工姓名:";
cin>>name;
cout<<endl<<"请输入职工出生年份:";
cin>>year;
while(cin.fail())
{
cout<<"请输入正确的年份格式。"<<endl;
cin.clear();
fflush(stdin);
cin>>year;
}
cout<<endl<<"请输入职工性别:";
cin>>sex;
cout<<endl<<"请输入职工职称:";
cin>>post;
cout<<endl<<"请输入职工部门:";
cin>>department;
cout<<endl<<"请输入职工工资:";
cin>>wage;
while(cin.fail())
{
cout<<"请输入正确的工资数据。"<<endl;
cin.clear();
fflush(stdin);
cin>>wage;
}
cout<<endl;
pNew->m_Code=code;
pNew->m_Name=name;
pNew->m_Year=year;
pNew->m_Sex=sex;
pNew->m_Post=post;
pNew->m_Department=department;
pNew->m_Wage=wage;
//指针域。
pNew->Next=Head->Next;
Head->Next=pNew;
cout<<"数据添加成功!是否继续添加?(Y/N)"<<endl;
cin>>again;
}while(again=='Y'||again=='y');
return Head;
}

bool Search(Link Head)
{//查询同时满足“姓名”和“部门”的职工信息。
Link ptr;
string department;
string name;
ptr=Head->Next;
cout<<"请输入部门:";
cin>>department;
cout<<endl<<"请输入姓名:";
cin>>name;
cout<<endl<<"----------------查询结果------------------"<<endl;
while(ptr)
{
if((ptr->m_Name==name)&&(ptr->m_Department==department))
{
Display_Node(ptr);//打印满足条件的节点。
return true;
}
ptr=ptr->Next;//查询下一节点。
}
cout<<"无此职工的信息。"<<endl;
return false;
}

Link Search_Unique_Front(Link Head)
{//查询满足“职工代码“的职工信息(职工代码必需唯一)。
Link ptr;
string code;
ptr=Head;
cout<<"请输入职工代码:";
cin>>code;
cout<<endl<<"----------------查询结果------------------"<<endl;
while(ptr->Next)
{
if(ptr->Next->m_Code==code)
//Display_Node(ptr);//打印满足条件的节点。
return ptr;//注意,是返回的查询到的节点的直接前趋节点。
ptr->Next=ptr->Next->Next;//查询下一节点。
}
return ptr;
}

void Display_List(Link Head)
{
Link ptr;
ptr=Head->Next;
cout<<"==================所有职工信息=================="<<endl;
while(ptr)
{
Display_Node(ptr);
ptr=ptr->Next;
}
}

void Display_Node(Link pNode)
{//在标准输出设备上输出。
cout<<setw(10)<<left<<pNode->m_Code
<<setw(10)<<left<<pNode->m_Name
<<setw(10)<<left<<pNode->m_Year
<<setw(10)<<left<<pNode->m_Sex
<<setw(10)<<left<<pNode->m_Post
<<setw(10)<<left<<pNode->m_Department
<<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。
}

Link Modify(Link Head)
{// 修改单一个节点。
Link ptr;
ptr=Search_Unique_Front(Head);
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
if(ptr->Next)
{
cout<<"-------你现在可以修改此职工的信息了-------"<<endl;
//数据域。
cout<<"请输入职工代码:";
cin>>code;
cout<<endl<<"请输入职工姓名:";
cin>>name;
cout<<endl<<"请输入职工出生年份:";
cin>>year;
while(cin.fail())
{
cout<<"请输入正确的年份格式。"<<endl;
cin.clear();
fflush(stdin);
cin>>year;
}
cout<<endl<<"请输入职工性别:";
cin>>sex;
cout<<endl<<"请输入职工职称:";
cin>>post;
cout<<endl<<"请输入职工部门:";
cin>>department;
cout<<endl<<"请输入职工工资:";
cin>>wage;
while(cin.fail())
{
cout<<"请输入正确的工资数据。"<<endl;
cin.clear();
fflush(stdin);
cin>>wage;
}
cout<<endl;
ptr->Next->m_Code=code;//因ptr是前趋节点,所以要用ptr->Next;
ptr->Next->m_Name=name;
ptr->Next->m_Year=year;
ptr->Next->m_Sex=sex;
ptr->Next->m_Post=post;
ptr->Next->m_Department=department;
ptr->Next->m_Wage=wage;
}
cout<<"没找到此职工的记录,无法修改。"<<endl;
return Head;
}

Link Del(Link Head)
{
Link ptr;
Link ptr_front;
ptr_front=Search_Unique_Front(Head);
ptr=ptr_front->Next;
if(ptr)
{
ptr_front->Next=ptr->Next;
delete ptr;//删除此节点。
}
cout<<"没找到此职工的记录,无法删除。"<<endl;
return Head;
}

void Save_ByFile(Link Head,fstream& ofile)
{
Link pNode;
pNode=Head->Next;
ofile.clear();//清除文件结束状态。
while(pNode)
{
ofile<<setw(10)<<left<<pNode->m_Code
<<setw(10)<<left<<pNode->m_Name
<<setw(10)<<left<<pNode->m_Year
<<setw(10)<<left<<pNode->m_Sex
<<setw(10)<<left<<pNode->m_Post
<<setw(10)<<left<<pNode->m_Department
<<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。
pNode=pNode->Next;
}
cout<<"数据文件保存成功!"<<endl;
}

Link Sort(Link Head)
{//我创建的是带头节点的链表。用直接插入法。
if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。
{
cout<<"数据节点数少于2个,不用排序!"<<endl;
return Head;
}
//-----------第二步;
Link ptr;
Link ptr_F;
Link ptr_N;
ptr=Head->Next->Next;
ptr_F=Head;
Head->Next->Next=NULL;//到此,分成了两个链表。
//第三步。
while(ptr)
{
ptr_N=ptr->Next;
ptr_F=Head;//ptr_F的归位。
while(ptr_F->Next)
{
if(ptr->m_Wage>ptr_F->Next->m_Wage)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;
break;

}//if
else
{
ptr_F=ptr_F->Next;
}
}//while(ptr_F->Next)
if(ptr_F->Next==NULL)
{
ptr->Next=ptr_F->Next;
ptr_F->Next=ptr;//表示插到有序链表的最后面了。
}

ptr=ptr_N;//归位,准备下一次排序。

}//while(ptr)
cout<<"从高到低,排序成功!"<<endl;
return Head;
}

int main()
{
Link Head=0;
Head=Create(Head);
fstream iofile;
iofile.open("d:\\iofile.txt",ios_base::in|ios_base::out|ios_base::app);//文件以三种方式打开。
if(!iofile)
{
cout<<"打开文件失败!"<<endl;
return -1;
}
int menu;
while(1)
{
cout<<"*****************************************************"<<endl;
cout<<"*====================菜单选顶=======================*"<<endl;
cout<<"*===================================================*"<<endl;
cout<<"* 1.注册职工 2.修改信息 3.删除信息 4.信息查询 *"<<endl;
cout<<"* 5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"<<endl;
cout<<"*****************************************************"<<endl;
cout<<endl<<"请选择相应操作菜单项:";
cin>>menu;
while(cin.fail())
{
cout<<"请选择正确的菜单选项。"<<endl;
cin.clear();
fflush(stdin);
cin>>menu;
}
switch(menu)
{
case 0:
cout<<"成功退出系统!"<<endl;
return 0;
case 1:
Head=Add(Head);
break;
case 2:
Head=Modify(Head);
break;
case 3:
Head=Del(Head);
break;
case 4:
Search(Head);
break;
case 5:
Save_ByFile(Head,iofile);
break;
case 6:
Sort(Head);
break;
case 7:
Display_List(Head);
break;
default:
cout<<"请选择正确的菜单项进行操作。多谢合作!"<<endl;

}
}
Release(Head);
iofile.close();
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-25
建议看看数据结构先
第2个回答  2008-12-25
你这也太没诚意.
第3个回答  2008-12-25
直接人民币交易好些.

追加200 求计算机网络课程设计
设计8:RS-232串行接口通信软件设计 http:\/\/www.bjx.com.cn\/files\/wx\/xddzjs\/2002-4\/33.htm

额是一大一新生,初学c++
第一种,是深入继续学C++,那么可以看C++之父Bjarne Stroustrup的《C++语言程序设计》,也就是著名的TC++PL,把题目做掉百分之八十吧,其它还有一些,如Essential系列、Effective系裂,很多都是在这本书的基础上衍生详解出来的。但是这个方向我不建议,因为前面那些弄好以后,足够用了,再深入语法这些没什么必要。这本书可能...

谁有C++程序设计? 基础、编程抽象与算法策略,求发这书籍的网盘链接_百 ...
提取码:1234 C++程序设计是西北工业大学建设的慕课、国家精品在线开放课程、国家级一流本科课程,于2016年03月21日在中国大学MOOC首次开设,该课程授课教师为魏英、张秀伟、姜学锋、汪芳。据2021年9月中国大学MOOC官网显示,该课程已开课12次。

我需要 C++程序设计进阶教程,帮忙找一下教材百度网盘资源呗!
https:\/\/pan.baidu.com\/s\/15xYnCsIuniit4UBk-zVVeA 提取码:1234 2019年清华大学出版社出版的图书 《C\/C++程序设计进阶教程》是由张玉春主编,2019年清华大学出版社出版的高等学校计算机基本教育规划教材。该教材既可作为高等学校本科及专科程序设计课程的教材,又可作为自学者的参考用书,还可供各类考试...

VC++.NET(2008)课程设计经典案例——基于C++\/CLI目录
在VC++.NET(2008)课程设计中,涵盖了多个实用案例,从基础到进阶,以帮助学习者逐步掌握C++\/CLI编程技术。以下是部分内容概要:第1部分是基础应用,包括:第1章介绍了Visual C++ 2008环境,阐述了.NET Framework和Visual C++.NET的基本概念,以及集成开发环境的创建、编辑、生成和设置解决方案的过程。第...

C++课程设计 高分悬赏C++课程设计“有理数运算”,满意还有追分!
小写了一下,,放在LINUX里编译并且运行过了。代码如下:include <stdio.h> include <math.h> include <sys\/types.h> class CRationalNum { public:int SetRationalNum(int a, int b);int GetA();int GetB();CRationalNum operator+(CRationalNum &rRationNum);CRationalNum operator-(C...

C++课程设计!!!设计一个运动会管理系统,用于管理比赛时体操、跳水、滑冰...
。。。C++

用C++编的分数计算器的课程设计报告,急用!!!
include<stdlib.h> include<string.h> define MAX 10 typedef struct { char data[MAX];int top;}StackChar;StackChar StackCharInit(){ StackChar S;S.top=-1;return S;} void StackCharPush(StackChar &S,char x){ if(S.top==MAX-1){ printf("Stcak Full!\\n");exit(0);} S.top...

马上期末了老师让教c语言大作业...不知道怎么办了..满意后 再追加30分...
数据结构,算法都有现成的下载,或者标准里都包含了,你百度一下STL,还有函数 QUICKSORT,这两个直接在C++标准里面就有,也就是说只要包含了头文件,直接可以用的,瞬间就解决了前面两个问题吧?排序甚至都不用自己来,直接用map,把总成绩作为排序的键值,你插入的时候自动就给你排好序了 然后再学习...

C++课程设计的目录
1.3 课程设计的成果1.2 课程设计任务书1.3 课程设计的分析和设计1.4 课程设计日志第2章 浅入浅出mfc对话框程序设计方法2.1 需要先期掌握的相关知识2.1.1 消息与消息映射2.1.2 cstring类2.1.3 消息框2.2 创建第一个基于对话框的mfc程序2.2.1 对话框项目的生成2.2.2 visualc++项目文件...

相似回答
大家正在搜