c++课程设计.docx
- 文档编号:26121879
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:37
- 大小:266.79KB
c++课程设计.docx
《c++课程设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计.docx(37页珍藏版)》请在冰豆网上搜索。
c++课程设计
1. 要求利用C++语言面向对象的编程思想来完成系统的设计;
2. 突出C++语言的类和对象的特征,以多个类实现对每一个子功能的封装;
3. 进行简单界面设计,能够实现友好的交互;
4. 具有清晰的程序流程图和类的详细定义;
5. 熟练掌握C++语言对文件的各种操作。
创新要求:
在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同
课程设计具体实现步骤分析及源代码:
目录:
一、选题的目的意义
二、使用技术
三、可行性的研究
四、需求分析
五、总体设计
六、详细分析(代码及调试)
1、把信息录入
2、查找公司人员你(按照姓名)
3、(老板)修改公司的人员-提职/降职
4、添加公司新成员
5、消去公司辞职人员
6、把员工信息从变量中取出
7、把员工的信息写进文件
8、把员工信息在屏幕上显示
9、退出公司人事管理系统
一、选题的目的意义
本题材适用于公司的人事部管理层次人员的使用,在工作时可以使用本系统轻松便捷地运行,顺利运行和维护系统,轻轻松松有条理的管理公司所有人员的详细信息
二、使用技术
利用c++面向对象的思想来完成此次课程设计的设计理念,突出了c++语言实现了类和对象的特征,以类来封装隐藏数据信息,使用c++同样实现了界面的简单设计,分别给老板和普通用户设计不同界面
三、可行性的研究
1、经济可行:
本系统在开发时,使用的是免费工具Vistual C++6.0 ,它操作简单,可操作性强,并且此系统便于广大的公司人事部管理所用,由此可见它在经济上是可行的
2、技术可行性:
只需掌握了C/C++的基础知识,要完成本系统并不是一件很难的事,可以随意按照自己的意愿随意设计更先进的理念,甚至可以设计美观的用户界面,由此可见,它在技术上也是简单可行的
四、需求分析
(1)在采集信息时,给每个公司人员设置一个编号,每添加一个员工信息系统自动给每个员工编一个编号,使用InputData()函数是实现
(2)功能公司的老板有权提升某个员工的职位,也可以给某个员工降职,使用Modify()函数实现
(3)系统要实现给每个员工的,根据不同的级别,给每个员工发放不同层次的薪水,使用DataSwage()函数实现
(4)在系统中实现,显示、查找、增加、删除、修改和保存不同类型的员工信息,分别使用ShowData()函数、FindName()函数、AddStaff()函数、DeleteData()函数、Modify()函数、WriteFile()函数
五、总体设计
此处省略...
六、详细分析(代码及调试)
1、主要界面显示:
在此处,如果你是超级管理员(老板),你可以进入老板管理界面
现在你可以使用不同的功能,对员工进行管理。
。
。
若是进入普通用户界面:
2、各部分函数
(1)采集信息的InputData()函数
(2)查询(按照姓名)---FindName()
(3)修改---Modify()函数
下面是修改员工信息部分运行截图:
(4)添加----AddStaff()函数
(5)删除---DeleteData()函数
(6)显示----ShowData()函数
(7)写入文件---WriteFile()函数
3、代码调试(主要错误):
(1)在InputData()函数中,在开辟动态空间时,使用new 申请
(2)在FindName()函数中,要使用goto函数控制函数的循环,还有在循环查找时,使用的while循环应该有不同的条件我开始使用的是while(p1->G_Number!
=number && p1->G_Number!
=NULL),但实际上这句并不是出错了,只是使用方法在下文与此句不符合,此错误在Modify()函数、DeleteData()函数、AddStaff()函数中都有体现
(3)在文件部分,使用不同的打开方式,会有不同的结果,在此处是使用循环,要多次写入,如果使用默认方式就会覆盖上次写入的文件信息,所以要以追加形式写入文件,这样就不会发生覆盖的情况了
4、总结体会:
通过此次的课程设计,我更熟知了,本学期学习的内容,我更深刻认识到了需求分析在整个过程的重要性,没有做好需求分析就会遗漏或者容易出现错误,问题发现的越晚,所付出的代价就越大。
同时,在开发此系统时,可能会遇到难以预料的问题,这时就需要上网查找相关的知识点,重新温习、查缺补漏,也可以从书上重温经典理论应用于实践操作部分,还可以问同学,也许他们不会给你什么特别帮助,但是你可以从中得到启示,这样也会提升个人实际操作的能力,通过不断地努力,不断反思,你就会得到很不一般地体验,得到提升,去寻找更多地解决方案。
在开发系统完成后,已经能够实现功能描述,也实现了创新,开发了使用密码进入系统的超级管理员,一般的普通用户,可以直接输入No进入普通用户界面,也可以通过三次输入密码错误,直接进入普通用户界面,但是由于个人能力有限,系统做的不是完善,请老师原谅,我一定课下在做改进,争取达到完美的阶段。
5、程序源码:
#include
#include
#include
using namespace std;
//姓名、编号、级别、当月薪水
//定义全局变量(Count计算建立节点数、No动态生成员工编号、
// No_Number记录当前节点创建的员工编号)
int Count=0;
static int No=13156200,No_Number;
//********************************************************************
//********************************************************************
//定义一个类Person(作为基类)
class Person
{
public:
Person()
{
}
//friend class PersonList;//友元类 此处使用类中友元函数也可以实现,但会泄露数据
//protected:
public:
string P_Name; //员工姓名
int P_No; //员工编号
int n; //选择员工薪水选项值
string P_Lever; //员工级别
double P_Sage; //员工薪水
Person *next; //指向连接员工信息的下一个指针
};
//********************************************************************
//********************************************************************
//定义一个类PersonList,继承Person
class PersonList:
public Person
{
public:
int DataSwage(int m); //计算不同级别的员工薪水
void OutChoice(); //输出选择员工薪水列表
void LookInputData(); //调用创建验工信息的函数InputData()
string FindName(); //按照员工姓名查员工详细信息
void Modify(); //修改员工信息(如:
老板员工提升/降职)
void AddStaff(); //添加员工信息(新增员工信息)
void DeleteData(); //删除员工信息
void ShowData(); //展示员工信息(在屏幕上显示)
int ReadFile(); //把员工信息读取出来放到指定变量里
int WriteFile(); //把员工信息写进文件并保存
private:
Person InputData(); //内嵌员工的创建信息
Person *head,*p1,*p2,*p; //创建员工信息所需的指针变量
};
//☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
//☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
//计算员工的不同级别的薪水
int PersonList:
:
DataSwage(int m)
{
switch(m) //switch语句选择不同类型员工工资
{
case 1:
{
cout<<"\n\n\t技术经理 的工资。
。
。
\n\n";
p1->P_Sage=5000;
return p1->P_Sage;
};break;
case 2:
{
int DAIMA; //定义编写的代码多少行?
cout<<"\n\n\t技术人员 的工资。
。
。
\n\n";
cout<<"请输入该技术人员写了多少行代码:
";
cin>>DAIMA;
p1->P_Sage=1000*DAIMA;
return p1->P_Sage;
};break;
case 3:
{
int Sales,Object_Money;//销售额(Sales)、项目额(Object_Money)
cout<<"\n\n\t业务人员 的工资。
。
。
\n\n";
cout<<"请输入当月业务员销售额:
";
cin>>Sales;
cout<<"请输入业务员承接项目额:
";
cin>>Object_Money;
p1->P_Sage=0.15*Sales+0.1*Object_Money;
return p1->P_Sage;
};break;
case 4:
{
cout<<"\n\n\t业务经理 的工资。
。
。
\n\n";
p1->P_Sage=2000+DataSwage(3);
return p1->P_Sage;
};break;
case 5:
{
cout<<"\n\n\t财务人员 的工资。
。
。
\n\n";
p1->P_Sage=2000;
return p1->P_Sage;
};break;
case 6:
{
cout<<"\n\n\t文秘 的工资。
。
。
\n\n";
p1->P_Sage=1500;
return p1->P_Sage;
};break;
}
return 0;
}
//☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
//☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
//选择员工不同级别薪水列表展示
void PersonList:
:
OutChoice()
{
cout<<"\n\n\t1、技术经理 的月薪\n\n";
cout<<"\t2、技术人员 的月薪\n\n";
cout<<"\t3、业务人员 的月薪\n\n";
cout<<"\t4、业务经理 的月薪\n\n";
cout<<"\t5、财务人员 的月薪\n\n";
cout<<"\t6、文秘 的月薪\n\n";
}
void PersonList:
:
LookInputData()//调用创建员工信息的类外(Person_List)实现
{
InputData();
}
//卐卐卐卐卐卐卐卐卐卐卐卐※※※※※※※※※※※※※★★★★★★★★
//卐卐卐卐卐卐卐卐卐卐卐卐※※※※※※※※※※※※※★★★★★★★★
//创建员工信息列表(采集员工信息)
Person PersonList:
:
InputData()
{
system("cls");
p1=p2=new Person; //开辟员工信息内存大小
cout<<"\n\t请输入第 "<<1<<" 个人员的信息...\n\n";
cout<<"员工姓名:
";
cin>>p1->P_Name;
cout<<"员工级别:
";
cin>>p1->P_Lever;
cout<<"请输入不同的数字选择薪水:
\n";
OutChoice(); //调用展示列表
cout<<"请输入 n 的值:
";
cin>>p1->n; //选择薪水
DataSwage(p1->n); //调用薪水计算函数DataSwage()
system("cls");
cout<<"\n\t\t\t你是否要重复此项操作?
\n";
cout<<"\n若不继续,请把货物各项信息设为 0 \n\n";
system("pause"); //系统函数
head=NULL; //确保节点从 0 开始创建
p1->P_No=No; //员工编号的动态生成
while(p1->n!
=0) //根据员工的编号确定是否继续进行采集信息
{
Count++; //记录节点个数
if(Count==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new Person; //再次开辟空间采集信息
cout<<"\n\t请输入第 "< cout<<"员工姓名: "; cin>>p1->P_Name; cout<<"员工级别: "; cin>>p1->P_Lever; cout<<"请输入不同的数字选择薪水: \n"; OutChoice(); cout<<"请输入 n 的值: "; cin>>p1->n; DataSwage(p1->n); WriteFile(); system("pause"); No_Number=No; No++; p1->P_No=No; system("cls"); if(p1->n! =0) { cout<<"\n\t\t\t你是否要重复此项操作? \n"; cout<<"\n若不继续,请把货物各项信息设为 0 \n"; } if(p1->n==0) { cout<<"\n\t你已经完成信息采集输入操作! \n\n"; } system("pause"); } p1->next=NULL; return *head; } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //查询员工信息 string PersonList: : FindName() { char ch; string Name; system("cls"); //系统清屏函数 do { loop: //goto函数的实现 int I=0; cout<<"\n\t请输入你要查找的姓名: "; cin>>Name; //loop: p1=head; //while(p1->G_Number! =number && p1->G_Number! =NULL)第一次犯的错误 while(p1! =NULL) { if(p1->P_Name==Name) //比较名字是否相同 { cout< cout<<"\t员工姓名: "< cout<<"\t员工编号: "< cout<<"\t员工级别: "< cout<<"\t员工月薪: "< cout<<"\n\n你好! 系统已完成你发送的命令操作...\n\n"; system("pause"); //系统函数 return p1->P_Name; //返回名字,提供下个函数使用 break; //跳出while循环 } I++; p1=p1->next; if(I==Count) //判断是否能找到员工的信息 { system("cls"); cout<<"\n\n抱歉,系统没有你要查找的员工信息...\n\n"; //cout<<"\n\t\t你还有一次机会...\n\n"; //cout<<"\n\t请输入你要查找的姓名: "; //cin>>Name; goto loop; //循环控制条件 //return Name; } } cout<<"\n\t你已经成功执行该操作...\n\n"; cout<<"你是否继续执行该操作? 是(输入Y/y),否(输入N/n): "; cin>>ch; } while (ch! ='N' && ch! ='n'); return p1->P_Name; } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //修改员工信息函数 void PersonList: : Modify() { char ch; system("cls"); do { FindName(); //调用查询函数并返回一个再次可以使用的值 system("pause"); cout<<"\n\t\t请输入你要修改的内容...\n"; cout<<"员工姓名: "; cin>>p1->P_Name; cout<<"员工级别: "; cin>>p1->P_Lever; cout<<"请输入不同的数字选择薪水: \n"; OutChoice(); cout<<"请输入 n 的值: "; cin>>p1->n; p1->P_Sage=DataSwage(p1->n); cout< system("pause"); cout<<"\n\t你已经成功执行该操作...\n\n"; cout<<"你是否继续执行该操作? 是(输入Y/y),否(输入N/n): "; cin>>ch; } while (ch! ='N' && ch! ='n'); } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //添加员工信息的函数 void PersonList: : AddStaff() { char ch; int NUM; //定义了一个查询员工编号的数据 system("cls"); loop: //同上 do { cout<<"\n\t\t请你输入编号在 13156200---"< 。 。 \n\n"; cout<<"\n\t请输入你要查找的编号: "; cin>>NUM; if(NUM < 13156200) { cout<<"\n\t你输入的选择不符合要求...\n\n"; goto loop; } while (1) { if(NUM > 0 && NUM <= No_Number)//判断输入的NUM是否在已存在信息范围里 { p=new Person; //重新给要添加的信息开辟空间 cout<<"\n\t请输入你要添加的职员详细信息...\n\n"; cout<<"员工姓名: "; cin>>p->P_Name; cout<<"员工级别: "; cin>>p->P_Lever; cout<<"请输入不同的数字选择薪水: \n"; OutChoice(); cout<<"请输入 n 的值: "; cin>>p->n; p->P_Sage=DataSwage(p->n); p->P_No=No++; WriteFile(); if(p1==NULL) cout<<"\n\t\t找不到员工信息列表\n\n"; p1=head; while(p1! =NULL) { if(p1->P_No==NUM) { p->next=p1->next; p1->next=p; Count++; cout<<"\n\t恭喜你,你已成功添加信息成功! \n\n"; break; } p1=p1->next; } break; } else { cout<<"\n\t\t你刚才输入错误...\n\n"; // cin>>NUM; goto loop; } } cout<<"你是否继续执行该操作? 是(输入Y/y),否(输入N/n): "; cin>>ch; } while (ch! ='N' && ch! ='n'); } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ //执行删除辞职员工信息函数-------按照员工编号来查找 void PersonList: : DeleteData() { char ch; int NUM; system("cls"); loop: do { cout<<"\n\t\t请你输入编号在 0---"< 。 。 \n\n"; cout<<"\n\t请输入你要查找的编号: "; cin>>NUM; if(NUM < 13156200 || NUM > No_Number) { system("cls"); cout<<"\n\t你输入的选择不符合要求...\n\n"; goto loop; } p1=head; while(p1->P_No ! = NUM && p1->next ! =NULL) //循环找是否能找到信息 { p2=p1; p1=p1->next; } if(p1->P_No==NUM)//删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计