员工管理系统课程设计问题描述:为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址。设计散列表存储,设计并实现通讯录查找系统。难点:哈希表的构造与哈希冲突方案的设计3.作业及课外学习要求:按照题意要求独立进行设计,设计结束后要按要求写出课程设计报告。

员工管理系统课程设计?问题描述:为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址设计散列表存储,设计并实现通讯录查找系统,下面我们就来说一说关于员工管理系统课程设计?我们一起去了解并探讨一下这个问题吧!
员工管理系统课程设计
问题描述:
为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址。设计散列表存储,设计并实现通讯录查找系统。
1.基本要求(1)每个记录有下列数据项:电话号码、用户名、地址;
(2)从键盘输入各记录,分别以电话号码为关键字建立散列表;
(3)采用二次探测再散列法解决冲突;
(4)查找并显示给定电话号码的记录;
(5)通讯录信息文件保存。
2.重点、难点重点:
(1)通过实验深入理解哈希表既是一种存储形式,又是一种查找方法;
(2)哈希表的构造;
(3)哈希冲突方案的设计。
难点:哈希表的构造与哈希冲突方案的设计
3.作业及课外学习要求:按照题意要求独立进行设计,设计结束后要按要求写出课程设计报告。
本知识点的讲授和学习,可以支撑“毕业要求4研究”中的“指标点4.1能够运用科学的研究方法对复杂软件工程问题进行需求分析研究;指标点4.2熟悉复杂软件系统的开发和应用环境,研究制定合理的软件设计与开发方案。指标点4.3能够对原型验证方法进行研究与分析,合理验证软件系统”的指标达成度进行评估。使学生在解决具体问题的过程中,能够灵活熟练地选择合适的数据结构及设计有效的算法,从而加深对常用数据结构的理解,强化学生的逻辑思维能力和动手能力,巩固良好的编程习惯,掌握工程软件设计的基本方法,为后续课程的学习打下坚实基础。
4.代码:#include<cstdio>#include<stdlib.h>#include<iostream>#include<cstring>#include<cmath>#define MAXSIZE 300#define L 300using namespace std;class individual{public:char tel[12];char name[15];char addr[20];int key;};class population{public:individual addr_list[MAXSIZE 1];individual hash_list[L];void info_input();void init_hash_list();void hash_list_do();void search_tel();void hash_out();int m,n;int individuals;};population all;int max_prime(int m)//m>2{int i;if(m%2==0)m--;while(m>=3){for(i=3;i<=sqrt(m);i =2)if(m%i==0) break;if(i>sqrt(m))break;m-=2;}return m;}void population::info_input(){printf("输入通讯录最大长度(<%d):\n",MAXSIZE);cin>>all.m;printf("批量输入人数:");cin>>all.individuals;printf("批量输入%d个成员的信息(用户名、电话号码(11位)、地址):\n",all.individuals);for(int i=1;i<=all.individuals;i){cin>>all.addr_list[i].name;cin>>all.addr_list[i].tel;cin>>all.addr_list[i].addr;if(strlen(all.addr_list[i].tel)!=11){printf("重新输入第%d位成员的信息:\n",i);cin>>all.addr_list[i].name;cin>>all.addr_list[i].tel;cin>>all.addr_list[i].addr;}all.addr_list[i].key=all.addr_list[i].tel[3] all.addr_list[i].tel[10];}printf("批量创建成功!!!\n");}void population::init_hash_list(){for(int i=0;i<L;i){strcpy(all.hash_list[i].addr,"");strcpy(all.hash_list[i].name,"");strcpy(all.hash_list[i].tel,"");all.hash_list[i].key=0;}}void population::hash_list_do(){init_hash_list();int i,j=1,x,temp;init_hash_list();all.n=max_prime(all.m);printf("\n最大长度为:%d模n=%d\n",all.m,all.n);for(i=1;i<=all.individuals;i){temp=x=all.addr_list[i].key%all.n;while(all.hash_list[x].key!=0)//此处需要用二次探测再散列法解决冲突{x=temp;x=(x j*j)%all.n;if(all.hash_list[x].key!=0){x=temp;x=(x-j*j)%all.n;}j;}all.hash_list[x].key=all.addr_list[i].key;strcpy(all.hash_list[x].addr,all.addr_list[i].addr);strcpy(all.hash_list[x].name,all.addr_list[i].name);strcpy(all.hash_list[x].tel,all.addr_list[i].tel);}cout<<"哈希表创建成功!!"<<endl;}void population::hash_out(){FILE *fp;if((fp=fopen("address_list.txt","w"))==NULL){printf("open file failed!\n");exit(0);}fprintf(fp,"用户电话号码地址\n");printf("\n输出Hash表:\n");printf("用户电话号码地址关键字\n");for(int i=0;i<all.m;i){if(all.hash_list[i].key!=0){cout<<all.hash_list[i].name<<"";cout<<all.hash_list[i].tel<<"";cout<<all.hash_list[i].addr<<"";cout<<all.hash_list[i].key<<""<<endl;fprintf(fp,"%s%s%s\n",all.hash_list[i].name,all.hash_list[i].tel,all.hash_list[i].addr);}}fclose(fp);}void population::search_tel(){int i,temp,x,j=1;char room[12];printf("\n输入电话号码:");cin>>room;temp=room[3] room[10];x=temp%all.n;if(strcmp(all.hash_list[x].tel,room)==0)printf("姓名:%-15s电话号码:%s地址:%-5s \n\n",all.hash_list[x].name,all.hash_list[x].tel,all.hash_list[x].addr);else{while(strcmp(all.hash_list[x].tel,room)){x=(temp j*j)%all.n;if(strcmp(all.hash_list[x].tel,room)){x=temp;x=(x-j*j)%all.n;}j;}printf("姓名:%-15s电话号码:%s地址:%-5s \n\n",all.hash_list[x].name,all.hash_list[x].tel,all.hash_list[x].addr);}}void msgbox(){printf("================================\n");printf("= 基本操作:=\n");printf("= 电话查询--S=\n");printf("= 通信录人员名单--H=\n");printf("= 退出系统--E=\n");printf("================================\n");}int main(){char op;cout<<"警告:当前通信录还未初始化!!!\n\n";all.info_input();all.hash_list_do();msgbox();cout<<"选择操作\n-";while(cin>>op){msgbox();switch(op){case 'S': all.search_tel();break;case 'H': all.hash_out();break;case 'E': exit(0);break;default: continue;}}cout<<"谢谢使用!!!";}
写在最后:对于准备学习C/C编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
