




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
103/106*******************实践教学*******************兰州理工大学计算机与通信学院2012年春季学期算法与数据结构课程设计题目:人事管理专业班级:软件工程基地班姓名:学号:10250139指导教师:王旭阳成绩:_______________目录TOC\o"1-3"\h\z摘要 11. 采用类c语言定义相关的数据类型 22. 各模块的伪码算法 23. 函数的调用关系图 164.调试分析 165.测试结果 176.源程序(带注释) 22总结 44参考文献 45致谢 46附件Ⅰ任务一源程序代码 47摘要在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。人事管理系统已成为企事业单位信息化管理中的重要组成部分,从而倍受人们的重视。为了提高企事业单位的办公效率,并为了对自己这两年来学习成果的检验。我这次选择了基于VC++和算法与数据结构的人事管理系统,讲述了人事管理系统的设计、结构组成和适用范围。它的应用实现了人事管理的规范化,数据的准确量化,以及该系统的查询过程等。该系统是一个具有开放性、可查询性和可维护处理性的管理系统。系统功能齐全、操作简单、界面清晰直观、扩充方便。关键词人事管理系统;VC++;人事管理。采用类c语言定义相关的数据类型public: intNo; intID; stringName; stringSex; intBirthday; stringAddress; intPhone; voidinput()各模块的伪码算法录入模块voidinsert()//录入数据{intn;while(1){cout<<"请输入部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>n; if(n==1||n==2||n==3) { if(n==1) { do { Staff<Personnel>*p; p=newStaff<Personnel>; p->bumen.show(); p->input(); p->bumen.input(); intq; do { for(inti=0;i<N;i++) { q=0; if(P[i]==NULL) {break;} elseif(P[i]->No==p->No) {cout<<"此工作号已存在!请修改~!"<<endl; p->input(); p->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(P[j]==NULL) { P[j]=p; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'1',否'0':";cin>>n; }while(n==1); } elseif(n==2) { do { Staff<Maintain>*a; a=newStaff<Maintain>; a->bumen.show(); a->input(); a->bumen.input(); intq; do{ for(inti=0;i<N;i++) {q=0; if(M[i]==NULL) {break;} elseif(M[i]->No==a->No) {cout<<"此工作号已存在!请修改~!"<<endl; a->input(); a->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(M[j]==NULL) { M[j]=a; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'2',否'0':";cin>>n; }while(n==2); } elseif(n==3) {do { Staff<Sell>*s; s=newStaff<Sell>; s->bumen.show(); s->input(); s->bumen.input(); intq; do{ for(inti=0;i<N;i++) {q=0; if(S[i]==NULL) {break;} elseif(S[i]->No==s->No) {cout<<"此工作号已存在!请修改~!"<<endl; s->input(); s->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(S[j]==NULL) { S[j]=s; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'3',否'0':";cin>>n; }while(n==3); } } break; }}2、显示模块voidshow()//显示数据{ intn;while(1) {cout<<"请输入部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>n; if(n==1||n==2||n==3) { if(n==1) { Staff<Personnel>*p; cout<<out<<endl; for(intj=0;j<N;j++) { if(P[j]!=NULL){ p=P[j]; p->output(); p->bumen.output(); } } break; } elseif(n==2) { Staff<Maintain>*a; cout<<out<<endl; for(inti=0;i<N;i++) { if(M[i]!=NULL) { a=M[i]; a->output(); a->bumen.output(); } } break; } elseif(n==3) { Staff<Sell>*s; cout<<out<<endl; for(inti=0;i<N;i++) { if(S[i]!=NULL) { s=S[i]; s->output(); s->bumen.output(); } } break; } } elseif(n=0)break; }}3、查找模块voidfind()//查找数据{stringn;cout<<"输入你要查找姓名"<<endl;cin>>n;for(intj=0;j<N;j++){ if(P[j]!=NULL&&(P[j]->Name)==n) { P[j]->bumen.show(); cout<<out<<endl; P[j]->output();P[j]->bumen.output(); break; }}for(j=0;j<N;j++){ if(M[j]!=NULL&&(M[j]->Name)==n) { M[j]->bumen.show(); cout<<out<<endl; M[j]->output();M[j]->bumen.output(); break; }}for(j=0;j<N;j++){ if(S[j]!=NULL&&(S[j]->Name)==n) { S[j]->bumen.show(); cout<<out<<endl; S[j]->output();S[j]->bumen.output(); break; } }}4、删除模块voidDelete()//删除数据{stringn;intm;cout<<"输入你要查找姓名"<<endl;cin>>n;cout<<"请输入该员工所在的部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>m; if(m==1) {for(intj=0;j<N;j++) { if(P[j]!=NULL&&(P[j]->Name)==n) { cout<<out<<endl; P[j]->output();P[j]->bumen.output(); P[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } } } if(m==2) { for(intj=0;j<N;j++) { if(M[j]!=NULL&&(M[j]->Name)==n) { cout<<out<<endl; M[j]->output();M[j]->bumen.output(); M[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } } } if(m==3) { for(intj=0;j<N;j++) { if(S[j]!=NULL&&(S[j]->Name)==n) { cout<<out<<endl; S[j]->output();S[j]->bumen.output(); S[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } }}}5、修改模块voidrevise()//修改数据{stringn;intm;cout<<"输入你要查找姓名"<<endl;cin>>n;cout<<"请输入该员工所在的部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>m;if(m==1){for(intj=0;j<N;j++) { if(P[j]!=NULL&&(P[j]->Name)==n) { cout<<out<<endl; P[j]->output();P[j]->bumen.output(); P[j]->input();P[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}if(m==2){for(intj=0;j<N;j++) { if(M[j]!=NULL&&(M[j]->Name)==n) { cout<<out<<endl; M[j]->output();M[j]->bumen.output(); M[j]->input();M[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}if(m==3){for(intj=0;j<N;j++){ if(S[j]!=NULL&&(S[j]->Name)==n) { cout<<out<<endl; S[j]->output();S[j]->bumen.output(); S[j]->input();S[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}}6清空模块voidclear()//清空数据{intn,a=1;do{ cout<<"请输入密码"<<"'0'返回界面"<<endl; cin>>n;if(n==a){for(inti=0;i<N;i++){P[i]=NULL;M[i]=NULL;S[i]=NULL; } cout<<"所有员工的资料已被删除!"<<endl;break;}elsecout<<"输入密码失败!"<<endl;}while(n!=0);}7、保存模块voidsave()//保存数据{ofstreamoutput_file;ofstreamoutput_file1;ofstreamoutput_file2;ofstreamoutput_file3;cout<<"正在保存中"<<endl;output_file.open("Personnel.txt");if(!output_file){cout<<"保存Personnel文件失败!"<<endl;}for(inti=0;i<N;i++){if(P[i]!=NULL){output_file<<P[i]->No<<""<<P[i]->Sex<<""<<P[i]->Name<<""<<P[i]->ID<<""<<P[i]->Birthday<<""<<P[i]->Address<<""<<P[i]->Phone<<""<<P[i]->bumen.Job<<""<<P[i]->bumen.Pay<<endl;b1++;}}output_file2.open("Maintain.txt");if(!output_file2){cout<<"保存Maintain文件失败!"<<endl;}for(i=0;i<N;i++){if(M[i]!=NULL){output_file2<<M[i]->No<<""<<M[i]->Sex<<""<<M[i]->Name<<""<<M[i]->ID<<""<<M[i]->Birthday<<""<<M[i]->Address<<""<<M[i]->Phone<<""<<M[i]->bumen.Job<<""<<M[i]->bumen.Pay<<endl;b2++;}}output_file3.open("Sell.txt");if(!output_file3){cout<<"保存Sell文件失败!"<<endl;}for(i=0;i<N;i++){if(S[i]!=NULL){output_file3<<S[i]->No<<""<<S[i]->Sex<<""<<S[i]->Name<<""<<S[i]->ID<<""<<S[i]->Birthday<<""<<S[i]->Address<<""<<S[i]->Phone<<""<<S[i]->bumen.Job<<""<<S[i]->bumen.Pay<<endl;b3++;}}output_file1.open("kongzhi.txt");output_file1<<b1<<""<<b2<<""<<b3<<endl;//保存数据条数output_file1.close();output_file.close();output_file2.close();output_file3.close();cout<<"保存完毕!"<<endl;}、函数的调用关系图人事管理系统人事管理系统删删除员工信息查查找员工信息显显示员工信息录录入员工信息删删除员工信息查查找员工信息显显示员工信息录录入员工信息退退出系统保保存员工信息清清空员工信息退退出系统保保存员工信息清清空员工信息修修改员工信息4.调试分析调试中遇到的问题及对问题的解决方法.cppc:\documentsandsettings\administrator\桌面\人事管理系统\1.cpp(27):errorC2018:unknowncharacter'0xa1'c:\documentsandsettings\administrator\桌面\人事管理系统\1.cpp(27):errorC2018:unknowncharacter'0xa2'c:\documentsandsettings\administrator\桌面\人事管理系统\1.cpp(27):errorC2018:unknowncharacter'0xa1'c:\documentsandsettings\administrator\桌面\人事管理系统\1.cpp(27):errorC2018:unknowncharacter'0xa2'执行cl.exe时出错经反复检查确认,检查程序第27行中的代码中多余输入了某些标点符号,经改正后程序编译显示没有错误。b、算法的时间复杂度和空间复杂度该算法的时间复杂度为:O(n)该算法的空间复杂度为:608KB5.测试结果人事管理系统(1)、人事管理系统界面(2)、员工信息的录入(3)、员工信息的显示(4)、员工信息的查找(5)、员工信息的删除(6)、员工信息的修改(7)、员工信息的清空(8)、员工信息的保存、系统的退出6.源程序(带注释)//basic.h#include"string"#include"iostream"#include"iomanip"usingnamespacestd;classBase{public: intNo; intID; stringName; stringSex; intBirthday; stringAddress; intPhone; voidinput() { cout<<"输入员工的工作号:"<<endl; cin>>No; cout<<"输入员工的姓名:"<<endl; cin>>Name; cout<<"输入员工的性别:"<<endl; cin>>Sex; cout<<"输入员工的身分证:"<<endl; cin>>ID; cout<<"输入员工的生日:"<<endl; cin>>Birthday; cout<<"输入员工的家庭住址:"<<endl; cin>>Address; cout<<"输入员工的家庭电话号码:"<<endl; cin>>Phone; } voidoutput() { cout<<setiosflags(ios::left)<<setw(8)<<No <<setw(8)<<Name<<setw(6)<<Sex<<setw(8)<<ID<<setw(10)<<Birthday <<setw(8)<<Address<<setw(10)<<Phone; }};//branch.h#include"iostream"#include"string"#include"iomanip"usingnamespacestd;classPersonnel//人事部{public: virtualvoidshow() {cout<<"人事部"<<endl; } stringJob; intPay; voidinput() { cout<<"请输入该员工的职务"<<endl; cin>>Job; cout<<"请输入该员工的薪水"<<endl; cin>>Pay; }voidoutput() { cout<<setiosflags(ios::left)<<"职务:"<<setw(6)<<Job <<"薪水:"<<setw(6)<<Pay<<endl; }};classMaintain:publicPersonnel//维修部{public: virtualvoidshow() {cout<<"维修部"<<endl; }};classSell:publicPersonnel//销售部{public: virtualvoidshow() {cout<<"销售部"<<endl; }};template<classType>classBranch{public: Typebumen;};//staff.h#include"iostream"usingnamespacestd;template<classType>classStaff:publicBase,publicBranch<Type>{};//头文件#include"string"#include<string>#include"cstdio"#include"conio.h"#include"fstream"#include"iostream"#include"stdlib.h"#defineN100usingnamespacestd;Staff<Personnel>*P[N];Staff<Maintain>*M[N];Staff<Sell>*S[N];constintSIZE_CHAR=5;constcharCCH[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";intb1=0,b2=0,b3=0;//导入数据条数stringm()//随机生字母{ charch[SIZE_CHAR+1]={0};for(inti=0;i<SIZE_CHAR;++i){intx=rand()%(sizeof(CCH)-1);ch[i]=CCH[x];} returnch;}ostream&out(ostream&stream)//操纵符{returnstream<<setiosflags(ios::left) <<setw(8)<<"工作号"<<setw(8)<<"姓名" <<setw(6)<<"性别"<<setw(8)<<"身分证"<<setw(12)<<"生日"<<setw(8)<<"地址" <<setw(10)<<"电话" <<"部门";}voidinsert()//录入数据{intn;while(1){cout<<"请输入部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>n; if(n==1||n==2||n==3) { if(n==1) { do { Staff<Personnel>*p; p=newStaff<Personnel>; p->bumen.show(); p->input(); p->bumen.input(); intq; do { for(inti=0;i<N;i++) { q=0; if(P[i]==NULL) {break;} elseif(P[i]->No==p->No) {cout<<"此工作号已存在!请修改~!"<<endl; p->input(); p->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(P[j]==NULL) { P[j]=p; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'1',否'0':";cin>>n; }while(n==1); } elseif(n==2) { do { Staff<Maintain>*a; a=newStaff<Maintain>; a->bumen.show(); a->input(); a->bumen.input(); intq; do{ for(inti=0;i<N;i++) {q=0; if(M[i]==NULL) {break;} elseif(M[i]->No==a->No) {cout<<"此工作号已存在!请修改~!"<<endl; a->input(); a->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(M[j]==NULL) { M[j]=a; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'2',否'0':";cin>>n; }while(n==2); } elseif(n==3) {do { Staff<Sell>*s; s=newStaff<Sell>; s->bumen.show(); s->input(); s->bumen.input(); intq; do{ for(inti=0;i<N;i++) {q=0; if(S[i]==NULL) {break;} elseif(S[i]->No==s->No) {cout<<"此工作号已存在!请修改~!"<<endl; s->input(); s->bumen.input(); q++; break; } } }while(q!=0); for(intj=0;j<N;j++) { if(S[j]==NULL) { S[j]=s; cout<<"输入成功!"<<endl; break; } } cout<<"你还要继续执行其操作吗?是'3',否'0':";cin>>n; }while(n==3); } } break; }}voidshow()//显示数据{ intn;while(1) {cout<<"请输入部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>n; if(n==1||n==2||n==3) { if(n==1) { Staff<Personnel>*p; cout<<out<<endl; for(intj=0;j<N;j++) { if(P[j]!=NULL){ p=P[j]; p->output(); p->bumen.output(); } } break; } elseif(n==2) { Staff<Maintain>*a; cout<<out<<endl; for(inti=0;i<N;i++) { if(M[i]!=NULL) { a=M[i]; a->output(); a->bumen.output(); } } break; } elseif(n==3) { Staff<Sell>*s; cout<<out<<endl; for(inti=0;i<N;i++) { if(S[i]!=NULL) { s=S[i]; s->output(); s->bumen.output(); } } break; } } elseif(n=0)break; }}voidfind()//查找数据{stringn;cout<<"输入你要查找姓名"<<endl;cin>>n;for(intj=0;j<N;j++){ if(P[j]!=NULL&&(P[j]->Name)==n) { P[j]->bumen.show(); cout<<out<<endl; P[j]->output();P[j]->bumen.output(); break; }}for(j=0;j<N;j++){ if(M[j]!=NULL&&(M[j]->Name)==n) { M[j]->bumen.show(); cout<<out<<endl; M[j]->output();M[j]->bumen.output(); break; }}for(j=0;j<N;j++){ if(S[j]!=NULL&&(S[j]->Name)==n) { S[j]->bumen.show(); cout<<out<<endl; S[j]->output();S[j]->bumen.output(); break; } }}voidDelete()//删除数据{stringn;intm;cout<<"输入你要查找姓名"<<endl;cin>>n;cout<<"请输入该员工所在的部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>m; if(m==1) {for(intj=0;j<N;j++) { if(P[j]!=NULL&&(P[j]->Name)==n) { cout<<out<<endl; P[j]->output();P[j]->bumen.output(); P[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } } } if(m==2) { for(intj=0;j<N;j++) { if(M[j]!=NULL&&(M[j]->Name)==n) { cout<<out<<endl; M[j]->output();M[j]->bumen.output(); M[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } } } if(m==3) { for(intj=0;j<N;j++) { if(S[j]!=NULL&&(S[j]->Name)==n) { cout<<out<<endl; S[j]->output();S[j]->bumen.output(); S[j]=NULL; cout<<"该员工已被删除!"<<endl; break; } }}}voidrevise()//修改数据{stringn;intm;cout<<"输入你要查找姓名"<<endl;cin>>n;cout<<"请输入该员工所在的部门的代码:1-人事部2-维修部3-销售部"<<endl;cin>>m;if(m==1){for(intj=0;j<N;j++) { if(P[j]!=NULL&&(P[j]->Name)==n) { cout<<out<<endl; P[j]->output();P[j]->bumen.output(); P[j]->input();P[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}if(m==2){for(intj=0;j<N;j++) { if(M[j]!=NULL&&(M[j]->Name)==n) { cout<<out<<endl; M[j]->output();M[j]->bumen.output(); M[j]->input();M[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}if(m==3){for(intj=0;j<N;j++){ if(S[j]!=NULL&&(S[j]->Name)==n) { cout<<out<<endl; S[j]->output();S[j]->bumen.output(); S[j]->input();S[j]->bumen.input(); cout<<"该员工修改成功!"; break; } }}}voidclear()//清空数据{intn,a=1;do{ cout<<"请输入密码"<<"'0'返回界面"<<endl; cin>>n;if(n==a){for(inti=0;i<N;i++){P[i]=NULL;M[i]=NULL;S[i]=NULL; } cout<<"所有员工的资料已被删除!"<<endl;break;}elsecout<<"输入密码失败!"<<endl;}while(n!=0);}voidsave()//保存数据{ofstreamoutput_file;ofstreamoutput_file1;ofstreamoutput_file2;ofstreamoutput_file3;cout<<"正在保存中"<<endl;output_file.open("Personnel.txt");if(!output_file){cout<<"保存Personnel文件失败!"<<endl;}for(inti=0;i<N;i++){if(P[i]!=NULL){output_file<<P[i]->No<<""<<P[i]->Sex<<""<<P[i]->Name<<""<<P[i]->ID<<""<<P[i]->Birthday<<""<<P[i]->Address<<""<<P[i]->Phone<<""<<P[i]->bumen.Job<<""<<P[i]->bumen.Pay<<endl;b1++;}}output_file2.open("Maintain.txt");if(!output_file2){cout<<"保存Maintain文件失败!"<<endl;}for(i=0;i<N;i++){if(M[i]!=NULL){output_file2<<M[i]->No<<""<<M[i]->Sex<<""<<M[i]->Name<<""<<M[i]->ID<<""<<M[i]->Birthday<<""<<M[i]->Address<<""<<M[i]->Phone<<""<<M[i]->bumen.Job<<""<<M[i]->bumen.Pay<<endl;b2++;}}output_file3.open("Sell.txt");if(!output_file3){cout<<"保存Sell文件失败!"<<endl;}for(i=0;i<N;i++){if(S[i]!=NULL){output_file3<<S[i]->No<<""<<S[i]->Sex<<""<<S[i]->Name<<""<<S[i]->ID<<""<<S[i]->Birthday<<""<<S[i]->Address<<""<<S[i]->Phone<<""<<S[i]->bumen.Job<<""<<S[i]->bumen.Pay<<endl;b3++;}}output_file1.open("kongzhi.txt");output_file1<<b1<<""<<b2<<""<<b3<<endl;//保存数据条数output_file1.close();output_file.close();output_file2.close();output_file3.close();cout<<"保存完毕!"<<endl;}voidmain(){ifstreaminput_file;ifstreaminput_file1;ifstreaminput_file2;ifstreaminput_file3;input_file1.open("kongzhi.txt");input_file1>>b1>>b2>>b3;input_file.open("Personnel.txt");input_file2.open("Maintain.txt");input_file3.open("Sell.txt");if(!input_file||!input_file2||!input_file3){cout<<"打开文件失败!"<<endl;cout<<"建立新的数据!"<<endl;for(inti=0;i<N;i++){P[i]=NULL;M[i]=NULL;S[i]=NULL;}for(i=0;i<32;i++){ //随机生成数据 P[i]=newStaff<Personnel>; P[i]->No=100+i;P[i]->Sex='m';P[i]->Name=m();P[i]->ID=1000+rand()%100; P[i]->Birthday=1988000+rand()%100;P[i]->Address=m();P[i]->Phone=13567+rand()%100; P[i]->bumen.Job=m();P[i]->bumen.Pay=2000+rand()%101;M[i]=newStaff<Maintain>; M[i]->No=100+i;M[i]->Sex='m';M[i]->Name=m();M[i]->ID=1000+rand()%100; M[i]->Birthday=1988000+rand()%100;M[i]->Address=m();M[i]->Phone=13567+rand()%100; M[i]->bumen.Job=m();M[i]->bumen.Pay=2000+rand()%101;S[i]=newStaff<Sell>; S[i]->No=100+i;S[i]->Sex='m';S[i]->Name=m();S[i]->ID=1000+rand()%100; S[i]->Birthday=1988000+rand()%100;S[i]->Address=m();S[i]->Phone=13567+rand()%100; S[i]->bumen.Job=m();S[i]->bumen.Pay=2000+rand()%101;}}else{ for(inti=0;i<b1;i++) { P[i]=newStaff<Personnel>;input_file>>P[i]->No>>P[i]->Sex>>P[i]->Name>>P[i]->ID>>P[i]->Birthday>>P[i]->Address>>P[i]->Phone>>P[i]->bumen.Job>>P[i]->bumen.Pay;}for(i=0;i<b2;i++) { M[i]=newStaff<Maintain>; input_file2>>M[i]->No>>M[i]->Sex>>M[i]->Name>>M[i]->ID>>M[i]->Birthday>>M[i]->Address>>M[i]->Phone>>M[i]->bumen.Job>>M[i]->bumen.Pay; }for(i=0;i<b3;i++) {S[i]=newStaff<Sell>;input_file3>>S[i]->No>>S[i]->Sex>>S[i]->Name>>S[i]->ID>>S[i]->Birthday>>S[i]->Address>>S[i]->Phone>>S[i]->bumen.Job>>S[i]->bumen.Pay; }cout<<"录入成功!"<<endl;}input_file.close();input_file1.close();input_file2.close();input_file3.close();charn;while(1){while(1){ system("color006"); b1=0,b2=0,b3=0;//清空原先的数据条数cout<<"☆☆☆☆人事管理管理系统☆☆☆☆"<<endl;cout<<"****************************"<<endl<<"****************************"<<endl<<"**1:录入员工信息**"<<endl<<"**2:显示员工信息**"<<endl<<"**3:查找员工信息**"<<endl<<"**4:删除员工信息**"<<endl<<"**5:修改员工信息**"<<endl<<"**6:清空员工信息**"<<endl<<"**7:保存员工信息**"<<endl<<"**8:退出系统**"<<endl<<"****************************"<<endl<<"****************************"<<endl<<"请选择:";cin>>n;if(n!='1'||n!='2'||n!='3'||n!='4'||n!='5'||n!='6'||n!='7'||n!='8')break; } switch(n) { case'1':insert();break; case'2':show();break;case'3':find();break; case'4':Delete();break; case'5':revise();break;case'6':clear();break; case'7':save();break; case'8':exit(0); default:break; } getch();system("cls");}} 总结在本次课程设计中可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,让我们学会如何把学到的知识用于解决实际问题,培养学生的动手能力。在做课程设计的过程中遇到的问题要多和老师、同学交流、交换意见。积极接受其他人的一些好的想法和技术,努力的找出自己的不足之处,积极改正错误,扩展自己的知识面。通过这次课程设计,我们从中学到了很多东西,经过自己的努力和老师、同学的帮助下,我完成了这次课程设计的任务,以后努力练习,争取自己有更好的发展。 参考文献1严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社.2严蔚敏,吴伟民.《数据结构题集(C语言版)》.清华大学出版社.3《DATASTRUCTUREWITHC++》.WilliamFord,WilliamTopp.清华大学出版社(影印版).4谭浩强.《c语言程序设计》.清华大学出版社.5.数据结构与算法分析(Java版),APracticalIntroductiontoDataStructuresandAlgorithmAnalysisJavaEditionCliffordA.Shaffer,张铭,刘晓丹译
电子工业出版社2001年1月致谢在本次算法与数据结构的课程设计中,我学到了很多的东西,同时也得到了很多人的帮助和指导。在此我非常的感谢他们,感谢他们这些天对我的帮助、感谢他们对我的悉心指导。其次,我更要感谢我们的指导老师王旭阳老师。谢谢她这三周以来对我们的悉心指导和帮助。感谢她能在百忙中抽出时间,在机房高温之下还非常认真的为我们做课设指导,在此,我深深的感谢我的指导老师。最后,我还要感谢我们的学校以及学校领导,感谢他们能够给我们一个这么好的锻炼平台,让我们能够对自己所学的知识充分的利用和学习,让我的个人能力也有所提高。附件Ⅰ任务一源程序代码//图的遍历和生成树求解实现
//(邻接矩阵、邻接表—图的深度广度遍历算法的实现和最小生成树PRIM和KRUSCAL算法的实现)#include<iostream>
#include<malloc.h>
usingnamespacestd;
#defineint_max10000
#defineinf9999
#definemax20
//…………邻接矩阵定义……
typedefstructArcCell
{
intadj;
char*info;
}ArcCell,AdjMatrix[max][max];
typedefstruct
{
charvexs[max];
AdjMatrixarcs;
intvexnum,arcnum;
}MGraph_L;
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
intlocalvex(MGraph_LG,charv)//返回V的位置
{
inti=0;
while(G.vexs[i]!=v)
++i;
returni;
}intcreatMGraph_L(MGraph_L&G)//创建图用邻接矩阵表示
{
charv1,v2;
inti,j,w;
cout<<"…………创建无向图…………"<<endl<<"请输入图G顶点和弧的个数:(46)不包括“()”"<<endl;
cin>>G.vexnum>>G.arcnum;
for(i=0;i!=G.vexnum;++i)
{
cout<<"输入顶点"<<i<<endl;
cin>>G.vexs[i];
}
for(i=0;i!=G.vexnum;++i)
for(j=0;j!=G.vexnum;++j)
{
G.arcs[i][j].adj=int_max;
G.arcs[i][j].info=NULL;
}
for(intk=0;k!=G.arcnum;++k)
{
cout<<"输入一条边依附的顶点和权:(ab3)不包括“()”"<<endl;
cin>>v1>>v2>>w;//输入一条边依附的两点及权值
i=localvex(G,v1);//确定顶点V1和V2在图中的位置
j=localvex(G,v2);
G.arcs[i][j].adj=w;
G.arcs[j][i].adj=w;
}
cout<<"图G邻接矩阵创建成功!"<<endl;
returnG.vexnum;
}
voidljjzprint(MGraph_LG)//邻接矩阵的输出
{
inti,j;
for(i=0;i!=G.vexnum;++i)
{
for(j=0;j!=G.vexnum;++j)
cout<<G.arcs[i][j].adj<<"";
cout<<endl;
}
}
intvisited[max];//访问标记
intwe;
typedefstructarcnode//弧结点
{
intadjvex;//该弧指向的顶点的位置
structarcnode*nextarc;//弧尾相同的下一条弧
char*info;//该弧信息
}arcnode;
typedefstructvnode//邻接链表顶点头接点
{
chardata;//结点信息
arcnode*firstarc;//指向第一条依附该结点的弧的指针
}vnode,adjlist;
typedefstruct//图的定义
{
adjlistvertices[max];
intvexnum,arcnum;
intkind;
}algraph;
//…………队列定义……
typedefstructqnode
{
intdata;
structqnode*next;
}qnode,*queueptr;
typedefstruct
{
queueptrfront;
queueptrrear;
}linkqueue;
//………………………
typedefstructacr
{
intpre;//弧的一结点
intbak;//弧另一结点
intweight;//弧的权
}edg;intcreatadj(algraph&gra,MGraph_LG)//用邻接表存储图
{
inti=0,j=0;
arcnode*arc,*tem,*p;
for(i=0;i!=G.vexnum;++i)
{
gra.vertices[i].data=G.vexs[i];
gra.vertices[i].firstarc=NULL;
}
for(i=0;i!=G.vexnum;++i)
{
for(j=0;j!=G.vexnum;++j)
{
if(gra.vertices[i].firstarc==NULL)
{
if(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
arc=(arcnode*)malloc(sizeof(arcnode));
arc->adjvex=j;
gra.vertices[i].firstarc=arc;
arc->nextarc=NULL;
p=arc;
++j;
while(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
tem=(arcnode*)malloc(sizeof(arcnode));
tem->adjvex=j;
gra.vertices[i].firstarc=tem;
tem->nextarc=arc;
arc=tem;
++j;
}
--j;
}
}
else
{
if(G.arcs[i][j].adj!=int_max&&j!=G.vexnum)
{
arc=(arcnode*)malloc(sizeof(arcnode));
arc->adjvex=j;
p->nextarc=arc;
arc->nextarc=NULL;
p=arc;
}
}
}
}
gra.vexnum=G.vexnum;
gra.arcnum=G.arcnum;
cout<<"图G邻接表创建成功!"<<endl;
return1;
}
voidadjprint(algraphgra)//邻接表输出
{
inti;
for(i=0;i!=gra.vexnum;++i)
{
arcnode*p;
cout<<i<<"";
p=gra.vertices[i].firstarc;
while(p!=NULL)
{
cout<<p->adjvex;
p=p->nextarc;
}
cout<<endl;
}
}intfirstadjvex(algraphgra,vnodev)//返回依附顶点V的第一个点
//即以V为尾的第一个结点
{
if(v.firstarc!=NULL)
returnv.firstarc->adjvex;
}
intnextadjvex(algraphgra,vnodev,intw)//返回依附顶点V的相对于W的下一个顶点
{
arcnode*p;
p=v.firstarc;
while(p!=NULL&&p->adjvex!=w)
{
p=p->nextarc;
}
if(p->adjvex==w&&p->nextarc!=NULL)
{
p=p->nextarc;
returnp->adjvex;
}
if(p->adjvex==w&&p->nextarc==NULL)
return-10;
}
intinitqueue(linkqueue&q)//初始化队列
{
q.rear=(queueptr)malloc(sizeof(qnode));
q.front=q.rear;
if(!q.front)
return0;
q.front->next=NULL;
return1;
}
intenqueue(linkqueue&q,inte)//入队
{
queueptrp;
p=(queueptr)malloc(sizeof(qnode));
if(!p)
return0;
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
return1;
}
intdequeue(linkqueue&q,int&e)//出队
{
queueptrp;
if(q.front==q.rear)
return0;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)
q.rear=q.front;
free(p);
return1;
}
intqueueempty(linkqueueq)//判断队为空
{
if(q.front==q.rear)return1;
return0;
}
voidbfstra(algraphgra)//广度优先遍历
{
inti,e;
linkqueueq;
for(i=0;i!=gra.vexnum;++i)
visited[i]=0;
initqueue(q);
for(i=0;i!=gra.vexnum;++i)
if(!visited[i])
{visited[i]=1;
cout<<gra.vertices[i].data;
enqueue(q,i);
while(!queueempty(q))
{
dequeue(q,e);
for(we=firstadjvex(gra,gra.vertices[e]);we>=0;we=nextadjvex(gra,gra.vertices[e],we))
{
if(!visited[we])
{
visited[we]=1;
cout<<gra.vertices[we].data;
enqueue(q,we);
}
}
}
}
}intdfs(algraphgra,inti)
{
visited[i]=1;
intwe1;
cout<<gra.vertices[i].data;
for(we=firstadjvex(gra,gra.vertices[i]);we>=0;we=nextadjvex(gra,gra.vertices[i],we))
{
we1=we;
if(visited[we]==0)
dfs(gra,we);
we=we1;
}
return1;
}intdfstra(algraphgra)
{
inti,j;
for(i=0;i!=gra.vexnum;++i)
{
visited[i]=0;
}
for(j=0;j!=gra.vexnum;++j)
{
if(visited[j]==0)
dfs(gra,j);
}
return0;
}intbfstra_fen(algraphgra)//求连通分量
{
inti,j;
for(i=0;i!=gra.vexnum;++i)
vis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公关活动策划案例整合
- 教育人事政策宣传周活动
- 小学爱国主题教育课件
- 第8章 书籍装帧中的图形设计
- 安全工作布置会
- 小纽扣找家课件数学
- 山东省聊城市冠县金太阳学校2024-2025学年六年级下学期3月月考语文试题(有答案)
- 河北省邢台市宁晋县质检联盟2024-2025学年高二下学期3月第一次月考数学试卷(含解析)
- 放疗患者的康复护理要点
- 山东省济南市2024-2025学年高三上学期1月期末考试政治试题 含解析
- 项目验收单标准模板
- 24式太极拳教案(1~4课)
- 小学 三年级 心理健康《最好的老师-兴趣的作用》教学设计
- DB12T 1040-2021 建筑工程规划管理技术规范
- 产业经济学的课后复习答案
- 中国绿色经济发展之路(PPT-37张)课件
- G322-1钢筋砼过梁
- 客房控制系统——RCU系统培训PPT通用通用课件
- 压力管道安装许可证换证自评报告
- (会议纪要(2011)第29期)河南煤业化工集团有限责任公司会议纪要
- 起重机械定期检验规则概述
评论
0/150
提交评论