个人信息管理系统C++

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象课程设计报告
个人管理系统
*****
班级:091141
学号: ********
专业:网络工程
****: ***
1
目录
1、实验题目 (3)
2、实验时间、地点 (3)
3、实验目的 (3)
4、实验要求 (3)
5、实现过程 (7)
6、心得体会 (16)
2
一、实验题目:
个人管理系统
二、实验时间及地点:
时间:第十四周(周一至周四)
地点:软件楼505室。

三、实验目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

四、实验要求:
1、使用面向对象方法进行课程设计。

要求使用对象/类,继承,多态性等技术
2、独立完成课程设计,并完成课程设计报告报告记录设计的过程,尤其是分析/设计/实现
过程中的决策课程设计报告的内容应当包括以下内容:声称要完成的功能设计的具体描述完整的实现设计的源代码执行的结果的典型记录设计的优点和需要进一步改进的地方软件的主要结构包括:用户登录,数据的录入、查询、删除、修改、统计等功能。

根据结合自己的实际情况,酌情选择相关的功能,并完成设计。

五、实现过程:
(1)登陆界面:
3
(2)录入功能:
4
(4)删除:
5
(6)保存:
6
代码:
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
struct Employee
{ //声明个人的结构作为链表节点。

//-----数据域-----
string m_Code;
string m_Name;
int m_Year;
string m_Sex;
string m_Post;
string m_Department;
int m_Wage;
//链表节点的指针域---
struct Employee* Next;
};
typedef struct Employee Node; typedef Node* Link;
//-------函数声明------------- Link Create(Link Head);
void Release(Link Head);
7
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_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;
8
int year;
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>>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_Wage=wage;
//指针域。

pNew->Next=Head->Next;
Head->Next=pNew;
cout<<"数据添加成功!是否继续添加?(Y/N)"<<endl; cin>>again;
system("cls");
}
9
while(again=='Y'||again=='y');
return Head;
}
bool Search(Link Head)
{ //查询满足“姓名”的个人信息。

Link ptr;
string department;
string name;
ptr=Head->Next;
cout<<endl<<"请输入姓名:";
cin>>name;
cout<<endl<<"******************查询结果********************"<<endl; cout<<setw(10)<<left<<"序号"
<<setw(10)<<left<<"姓名"
<<setw(10)<<left<<"出生年份"
<<setw(10)<<left<<"性别"
<<setw(10)<<left<<"工资"<<endl;
cout<<"************************************************"<<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;
cout<<"***************************************************"<<endl;
10
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;
cout<<setw(10)<<left<<"序号"
<<setw(10)<<left<<"姓名"
<<setw(10)<<left<<"出生年份"
<<setw(10)<<left<<"性别"
<<setw(10)<<left<<"工资"<<endl;
cout<<"********************************************************"<<end l;
while(ptr)
{
Display_Node(ptr);
ptr=ptr->Next;
}
cout<<"********************************************************"<<end l;
}
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_Wage<<endl; //setw(10)表示占10个字符位置。

}
Link Modify(Link Head)
11
{ // 修改单一个节点。

Link ptr;
ptr=Search_Unique_Front(Head);
string code,name,sex;
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>>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_Wage=wage;
cout<<"恭喜你,修改信息成功!"<<endl;
system("cls");
}
12
else
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_Wage<<endl; //setw(10)表示占10个字符位置。

pNode=pNode->Next;
}
cout<<"你的数据文件保存成功!"<<endl;
}
int main()
{
system("color 0b");
13
cout<<"******************************************************"<<endl;
cout<<" 请登录! "<<endl;
cout<<"******************************************************"<<endl;
int q=111,w=111;
number:
int e;
cout<<"请输入账号"<<endl;
cin>>e;
if(q==e)
{
number1:
int r;
cout<<"请输入密码"<<endl;
cin>>r;
if (w==r)
{
Link Head=0;
Head=Create(Head);
fstream iofile;
if(!iofile)
{
cout<<"打开文件失败!"<<endl;
return -1;
}
int menu;
system("cls");
while(1)
{
system("color 0b");
cout<<"*************************************************"<<endl;
cout<<" 菜单选顶 "<<endl;
cout<<" "<<endl;
cout<<" 1.录入个人信息 2.修改 "<<endl;
cout<<" 3.删除 4.查询 "<<endl;
cout<<" 5.保存文件 0.退出 "<<endl;
cout<<"**************************************************"<<endl;
14
cout<<endl<<" 请选择相应操作菜单选项:";
cin>>menu;
while(cin.fail())
{
cout<<"请选择正确的菜单选项。

"<<endl;
cin.clear();
fflush(stdin);
cin>>menu;
}
switch(menu)
{
case 0:
cout<<" ************************************"<<endl;
cout<<" * 成功退出系统! *"<<endl;
cout<<" * 谢谢你的使用! *"<<endl;
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;
default:
cout<<"请选择正确的菜单选项!"<<endl;
}
}
Release(Head);
iofile.close();
return 0; }
else
cout<<"*********************密码错误!请重新输入*******************"<<endl;
goto number1; }
15
else
cout<<"**********************账号错误!请重新输入*******************"<<endl;
goto number;
}
七、心得体会:
通过这次的C++程序设计,让我对书本上的知识有了更深的了解。

而且对指针有了更好的了解,不过我对文件、链表还是不太懂,有关的代码是向同学同学请教的。

完成了这个课程设计,让我觉得要学的还很多。

朝前看看,路还长这着呢!
16。

相关文档
最新文档