一个C++作业问题{加急}

由本社区发起的开源项目
回复
头像
mrx8836350
帖子: 80
注册时间: 2010-05-27 1:50
送出感谢: 0
接收感谢: 0

一个C++作业问题{加急}

#1

帖子 mrx8836350 » 2011-01-14 22:37

如何加入
{该系统的每个用户都有自己的用户名和密码。应用程序的管理员具有最高的优先访问使他/她来执行所有的功能,在应用中存在。除此之外,管理员能够从人力资源登记部门的用户。该公司的员工有最低的访问优先权,只有使他们能够查看他们的个人信息。}
这样的功能。。。要交作业了,还没闹明白。。。回答请通俗易懂。。。。本人商科刚转到IT的。。。属于小白。。。
现在code如下:

代码: 全选

#include "stdafx.h"
#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) 
{
 system("cls");
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) 
{ 
 system("cls");
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); 
system("Pause");
return true; 
} 
ptr=ptr->Next;
} 
cout<<"无此职工的信息。"<<endl; 
system("Pause"); 
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) 
return ptr; 
ptr->Next=ptr->Next->Next;
} 
return ptr; 
} 

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

void Display_Node(Link pNode) 
{
cout<<"职工编号: "<<setw(10)<<left<<pNode->m_Code <<endl
<<"姓名: "<<setw(10)<<left<<pNode->m_Name <<endl
<<"出生年份: "<<setw(10)<<left<<pNode->m_Year <<endl
<<"性别: "<<setw(10)<<left<<pNode->m_Sex <<endl
<<"职称: "<<setw(10)<<left<<pNode->m_Post <<endl
<<"部门: "<<setw(10)<<left<<pNode->m_Department <<endl
<<"工资: "<<setw(10)<<left<<pNode->m_Wage<<endl;
} 

Link Modify(Link Head) 
{
 system("cls");
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->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<<"修改成功";
system("Pause");
return Head;} 
cout<<"没找到此职工的记录,无法修改。"<<endl; 
system("Pause"); 
return Head; 
} 

Link Del(Link Head) 
{ 
 system("cls");
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<<"删除成功!";
system("pause");
return Head;
} 
cout<<"没找到此职工的记录,无法删除。"<<endl; 
system("Pause"); 
return Head; 
} 


void Save_ByFile(Link Head,fstream& ofile) 
{ 
 system("cls");
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;
pNode=pNode->Next; 
} 
cout<<"数据文件保存成功!"<<endl; 
system("Pause"); 
} 

Link Sort(Link Head) 
{ 
 system("cls");
if((Head->Next==NULL)||(Head->Next->Next==NULL)) 
{ 
cout<<"数据少于2个,不用排序!"<<endl; 
system("Pause"); 
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;
while(ptr_F->Next) 
{ 
if(ptr->m_Wage>ptr_F->Next->m_Wage) 
{ 
ptr->Next=ptr_F->Next; 
ptr_F->Next=ptr; 
break; 

} 
else 
{ 
ptr_F=ptr_F->Next; 
} 
} 
if(ptr_F->Next==NULL) 
{ 
ptr->Next=ptr_F->Next; 
ptr_F->Next=ptr; 
} 

ptr=ptr_N; 

}
cout<<"从高到低,排序成功!"<<endl; 
system("pause");
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; 
system("pause");
return -1; 
} 
int menu;
while(1) 
{ 
 system("cls");
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: 
 system("cls");
cout<<"成功退出系统!"<<endl; 
system("Pause"); 
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; 
} 
DoubleX
头像
mrx8836350
帖子: 80
注册时间: 2010-05-27 1:50
送出感谢: 0
接收感谢: 0

Re: 一个C++作业问题{加急}

#2

帖子 mrx8836350 » 2011-01-15 19:09

为什么。。。总是没人回答。。。。
DoubleX
头像
crazii
帖子: 560
注册时间: 2010-11-21 1:53
来自: 河蟹墙堡
送出感谢: 0
接收感谢: 0
联系:

Re: 一个C++作业问题{加急}

#3

帖子 crazii » 2011-01-18 23:52

:em05 惊现作业党

楼主应该去百度贴吧问问,那里有很多闲得蛋疼的人.话说我也经常去灌水 :em09

代码: 全选

#touch cock
touch: failed to touch 'cock': Permission denied
头像
ouch_ouch
帖子: 217
注册时间: 2010-12-24 19:52
送出感谢: 0
接收感谢: 0

Re: 一个C++作业问题{加急}

#4

帖子 ouch_ouch » 2011-02-13 15:06

额……作业都问到这里来了呀………………表示作业太长了 :em03
顶人一帖,胜造七级浮屠。。。
Coolulu
帖子: 1
注册时间: 2011-06-06 11:23
送出感谢: 0
接收感谢: 0

Re: 一个C++作业问题{加急}

#5

帖子 Coolulu » 2011-06-06 11:29

:em05 新手赐教
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid
送出感谢: 1 次
接收感谢: 23 次

Re: 一个C++作业问题{加急}

#6

帖子 leeaman » 2011-06-06 11:43

这个什么用dos的画界面的...图形界面的话可能简单多了
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
QUO1991
帖子: 2431
注册时间: 2011-01-20 20:57
送出感谢: 1 次
接收感谢: 2 次
联系:

Re: 一个C 作业问题{加急}

#7

帖子 QUO1991 » 2011-06-06 13:06

作业党。。。= =!
水一下
tusooa
帖子: 6546
注册时间: 2008-10-31 22:12
系统: 践兔
送出感谢: 6 次
接收感谢: 10 次
联系:

Re: 一个C++作业问题{加急}

#8

帖子 tusooa » 2011-07-23 21:56

代码: 全选

system("cls");
这算啥.应该是clear吧.

代码: 全选

● which clear
/usr/bin/clear

代码: 全选

] ls -ld //
头像
dryland718
帖子: 287
注册时间: 2011-08-17 12:54
送出感谢: 0
接收感谢: 4 次

Re: 一个C++作业问题{加急}

#9

帖子 dryland718 » 2011-08-17 13:00

看到stdafx.h,conio.h,我觉得楼主已经发错地方了。。。。
找个vc论坛去问问吧。。。
头像
phoenixlzx
论坛版主
帖子: 2245
注册时间: 2009-07-29 20:11
系统: Arch Linux
来自: Gensokyo
送出感谢: 4 次
接收感谢: 17 次
联系:

Re: 一个C++作业问题{加急}

#10

帖子 phoenixlzx » 2011-08-17 13:35

:em20

缩进哪.....??
头像
qgymib
帖子: 539
注册时间: 2010-04-02 16:44
系统: openSUSE 13.2 x64
送出感谢: 2 次
接收感谢: 9 次

Re: 一个C++作业问题{加急}

#11

帖子 qgymib » 2011-08-17 15:23

#include "stdafx.h"
lz应该去VC论坛问问的。

lz你既然要使用C++,就不用struct了,应该学会使用class。
class中添加一个bool值,public或者private随便,值为1时表示为管理员用户,拥有最高权限,为0时为普通用户。
为了查找方便,还可以将链表的结构接合进来,每声明一个对象,就将此对象作为节点加入链表中。
正在建设中的个人博客
回复

回到 “开源小工具”