数据结构课程设计报告企业员工管理系统.docx
《数据结构课程设计报告企业员工管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告企业员工管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构课程设计报告企业员工管理系统
广东某某学院
《数据结构课程设计》
题目:
企业员工管理系统
学号:
姓名:
年级:
学院:
专业:
指导教师:
一、功能需求
运用所学知识设计一个企业员工管理系统,对单位的员工进行管理,包括插入、删除、查找、排序等功能。
员工对象包括姓名、性别、年龄、职位、工龄等信息。
二、功能分析
员工对象包括姓名、性别、年龄、职位、工龄等信息。
(1)新增一名员工:
将新增员工对象按姓名以字典方式员工管理文件中,基本信息中的编号是按照添加顺序自动增加的。
(2)删除一名员工:
从员工管理文件中删除一名员工对象,分为根据编号删除、根据姓名删除。
(3)查询:
从员工管理文件中查询符合某些条件(编号、姓名)的员工。
(4)修改:
根据编号检索出对象,既可以对整个对象修改,也可对某个属性修改。
(5)排序:
按照年龄、工龄对所有的员工排序(降序),也可以回复排序以前的员工现实状态。
三、基本思想
数据结构
链表:
可以不需要初始化容量并且可以任意增减元素
链式存储:
插入及删除元素时方便
四、
流程图
五、测试结果
六、调试情况分析
1.操作界面相对简洁,基本功能已实现
七、心得体会
1.这是一个特殊的学期,因为疫情在学习上的常态都被打乱了,在家度过了这个特殊的学期。
在这个学期虽然在家也没有停止学习的步伐,但是比起在学校的学习效率差了不少。
经过了一个学期的学习,我对于数据结构有了一定的了解,也对于c/c++有了进一步认识。
在线上的学习过程,我一开始对数据结构不太上心在一些基础知识的掌控上不是很到位,在做课程设计的任务当中比较常在一些基础知识的认识上犯错。
不过因为在线上学习,所以在不懂的时候还可以通过看课堂视频的回放,查补自己的一些缺漏。
2.因为长期在家学习,所以对于学习怠慢了不少。
我在上一个学期对于c/c++掌握得不够透彻,又因为这个学期的怠慢,在这次课程设计过程中被指针绕晕过不少回,在一些函数类型的定义上也出过不少的错误。
学习不进则退,在这次课程设计中我认识到了,多练习才可以更好的掌握这个课程的知识,它不是一个可以通过死记硬背就可以掌握好的。
3.通过这次课程设计,我认识到了我自身的不足,同时也对课本上的知识有了进一步的了解,在函数上的调用、程序结构设计等方面有了进一步的实践认知。
也给我在今后的学习与实践之中提供不少提醒。
通过实践,我检验所学的各项不足之处,也对于知识运用上有了新的认知。
4.本次课程设计对于企业员工管理系统的功能分析及设计,实现了它一些基本上的功能操作。
经过这次实践,我在遇到问题及解决问题上对于知识的掌握及运用有了一些进步。
在课程设计的测试阶段,常有错误导致程序编译失败,有时候在网上也没有找出很好的解决方法,因为宅家学习,在一些问题交流上并不是很顺畅,通过反复的调试才找到较好的解决方案。
在这次程序设计实践中,增长了一定的编程经验。
在这次实践中,清晰的认识到自己对于知识的各处不足,同时也加深对编程上的理解与认知。
在学习的同时也加强了与同伴之间的交流与共同进步,在完成每一步的实际操作时都能从中得到收获,在一次次发现错误和改正的过程中,一步步加深对知识的理解与运用,又通过总结经验,提高自身的编写程序能力。
5.在平常的课堂上虽然也有小范围的实验课,不过像如今课程设计这样统筹的编写一个程序,将平时相对零散的知识运用到一起有着不一样的体验,在进行实际的操作时才发现,要设计一个程序不是随便的几段代码就能完成的,在实践中,更容易总结到所学知识的不足和积累实践经验。
在平时的理论学习中,没有经过一定实践检验,很难将理论上上的知识升华到实际应用当中。
理论到实践,在实验的期间,我学到了很多东西,同时也巩固了所学的知识。
通过这次实验我再次感到理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学理论知识与实践相结合才能更好的掌握所学的知识。
通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
基本完成完成课程设计的目的,分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。
作为整个学习体系的有机组成部分,课程设计虽然安排在一定时间内进行,但并不具有绝对独立的意义。
它的一个重要功能,在于运用学习成果,检验学习成果。
运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。
检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。
这也是一次预演。
通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。
课程设计促进了我系人才培养计划的完善和课程设置的调整。
近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。
课程设计达到了专业学习的预期目的。
在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。
附录:
#include
#include
usingnamespacestd;
structStaff*p,*q,*t;
intnumber=1;
structStaff
{
intnum;//工号
charname[20];//姓名
charsex[4];//性别
intage;//年龄
charposition[30];//职位
intseniority;//工龄
structStaff*next=NULL;
};
Staff*Add1(Staff*head)//添加
{
charname[20];
intk=0;
system("cls");
p=0;
q=0;
cout<<""<<"当输入姓名为0时输入结束"<cout<<"请输入名字:
";
cin>>name;
while(strcmp(name,"0"))
{
k++;
p=newStaff;
p->num=number++;
strcpy(p->name,name);
cout<<"请输入性别:
";
cin>>p->sex;
cout<<"请输入年龄:
";
cin>>p->age;
cout<<"请输入职位:
";
cin>>p->position;
cout<<"请输入工龄:
";
cin>>p->seniority;
if(k==1)
head=p;
else
q->next=p;
q=p;
cout<cout<<"请输入名字:
";
cin>>name;
}
t=head;
FILE*fp;
fp=fopen("./员工管理文件.txt","w");
if(fp==0)
cout<<"文件打开失败";
else
{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n","工号","姓名","性别","年龄","职位","工龄");
while(head!
=0)
{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\n",head->num,head->name,head->sex,head->age,head->position,head->seniority);
head=head->next;
}
cout<<"已添加";
}
head=t;
Sleep(1000);
fclose(fp);
system("cls");
returnhead;
}
voidAdd2(Staff*head)//追加
{
while(head!
=0)
{
head=head->next;
}
charname[20];
intk=0;
system("cls");
p=0;
q=0;
cout<<""<<"当输入姓名为0时输入结束"<cout<<"请输入名字:
";
cin>>name;
while(strcmp(name,"0"))
{
k++;
p=newStaff;
p->num=number++;
strcpy(p->name,name);
cout<<"请输入性别:
";
cin>>p->sex;
cout<<"请输入年龄:
";
cin>>p->age;
cout<<"请输入职位:
";
cin>>p->position;
cout<<"请输入工龄:
";
cin>>p->seniority;
if(k==1)
head=p;
else
q->next=p;
q=p;
cout<cout<<"请输入名字:
";
cin>>name;
}
FILE*fp;
fp=fopen("./员工管理文件.txt","a");
if(fp==0)
cout<<"文件打开失败";
else
{
while(head!
=0)
{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\n",head->num,head->name,head->sex,head->age,head->position,head->seniority);
head=head->next;
}
cout<<"已添加";
}
Sleep(1000);
fclose(fp);
system("cls");
}
voidQuery(Staff*head)//查询
{
if(head==NULL)
{
cout<Sleep(2000);
system("cls");
return;
}
intt;
cout<<"1:
工号查询2:
姓名查询"<cin>>t;
system("cls");
if(t==1)
{
intnum;
cout<<"请输入要查询的工号:
";
cin>>num;
cout<while(head!
=0)
{
if(num==head->num)
{
cout<<"工号:
"<num<cout<<"姓名:
"<name<cout<<"性别:
"<sex<cout<<"年龄:
"<age<cout<<"职位:
"<position<cout<<"工龄:
"<seniority<break;
}
head=head->next;
}
system("pause");
system("cls");
}
elseif(t==2)
{
charname[20];
cout<<"请输入要查询的姓名:
";
cin>>name;
while(head!
=0)
{
if(strcmp(name,head->name)==0)
{
cout<<"工号:
"<num<cout<<"姓名:
"<name<cout<<"性别:
"<sex<cout<<"年龄:
"<age<cout<<"职位:
"<position<cout<<"工龄:
"<seniority<cout<}
head=head->next;
}
system("pause");
system("cls");
}
else
{
cout<<"请输入选择正确选项";
Sleep(2000);
system("cls");
Query(head);
}
}
Staff*Delete(Staff*head)//删除
{
system("cls");
if(head==NULL)
{
cout<Sleep(1000);
system("cls");
returnhead;
}
q=head;
p=NULL;
intnum;
intt;
cout<<"1:
按工号删除2:
按姓名删除"<cin>>t;
system("cls");
if(t==1)
{
cout<";
cin>>num;
while(num!
=q->num)
{
p=q;
q=q->next;
}
if(head==q)//删除的工号在第一个
head=head->next;
elseif(q->next==0)//删除的工号在最后一个
p->next=0;
else
p->next=q->next;//删除的工号在中间
cout<}
elseif(t==2)
{
charname[20];
cout<";
cin>>name;
while(strcmp(name,q->name)!
=0)
{
p=q;
q=q->next;
}
if(head==q)//删除的工号在第一个
head=head->next;
elseif(q->next==0)//删除的工号在最后一个
p->next=0;
else
p->next=q->next;//删除的工号在中间
cout<}
else
{
cout<<"请输入选择正确选项";
Sleep(1000);
Delete(head);
system("cls");
}
q=head;
FILE*fp;
if(head!
=0)
{
fp=fopen("./员工管理文件.txt","w");
if(fp==0)
cout<<"文件打开失败";
else
{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n","工号","姓名","性别","年龄","职位","工龄");
while(head!
=0)
{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\n",head->num,head->name,head->sex,head->age,head->position,head->seniority);
head=head->next;
}
fclose(fp);
}
}
else
{
fp=fopen("./员工管理文件.txt","w");
fclose(fp);
}
Sleep(1000);
system("pause");
system("cls");
returnq;
}
voidModify(Staff*head)//修改
{
if(head==NULL)
{
cout<Sleep(2000);
system("cls");
}
intt,num,age,seniority;
charname[20],sex[4],position[30];
system("cls");
cout<";
cin>>num;
while(head->num!
=num)
{
head=head->next;
}
cout<<"工号:
"<num<cout<<"姓名:
"<name<cout<<"性别:
"<sex<cout<<"年龄:
"<age<cout<<"职位:
"<position<cout<<"工龄:
"<seniority<cout<";
cout<cout<<"";
cin>>t;
system("cls");
switch(t)
{
case1:
cout<<"请输入新名字:
";break;
case2:
cout<<"请输入新性别:
";break;
case3:
cout<<"请输入新年龄:
";break;
case4:
cout<<"请输入新职位:
";break;
case5:
cout<<"请输入新工龄:
";break;
}
switch(t)
{
case1:
cin>>name;strcpy(head->name,name);break;
case2:
cin>>sex;strcpy(head->name,sex);break;
case3:
cin>>age;head->age=age;break;
case4:
cin>>position;strcpy(head->position,position);break;
case5:
cin>>seniority;head->seniority=seniority;break;
}
FILE*fp;
fp=fopen("./员工管理文件.txt","w");
if(fp==0)
cout<<"文件打开失败";
else
{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\n","工号","姓名","性别","年龄","职位","工龄");
while(head!
=0)
{
fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\n",head->num,head->name,head->sex,head->age,head->position,head->seniority);
head=head->next;
}
fclose(fp);
}
cout<Sleep(1000);
system("cls");
}
voidBrowse(Staff*head)
{
if(head==NULL)
{
cout<Sleep(1000);
system("cls");
return;
}
q=head;
intt,num,age,seniority;
charname[20],sex[4],position[30];
cout<cout<<"1:
按工号排序2:
按年龄排序3:
按工龄排序"<cin>>t;
system("cls");
if(t==1)
{
for(;head!
=0;head=head->next)
{
p=head->next;
for(;p!
=0;p=p->next)
{
if(head->num>p->num)
{
num=head->num;
strcpy(name,head->name);
strcpy(sex,head->sex);
age=head->age;
strcpy(position,head->position);
seniority=head->seniority;
head->num=p->num;
strcpy(head->name,p->name);
strcpy(head->sex,p->sex);