版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件技术基础课程设计报告题目:单位员工通讯录管理系统所在学院:信息工程学院班级:1111111111学号:1111111111姓 名:111111指导教师:1111112015年12月30日目录 TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 一、题目概述与需求分析1 HYPERLINK l bookmark6 o Current Document 二、数据结构设计(逻辑结构与物理结构)1 HYPERLINK l bookmark12 o Current Document 三、代码实现3 HYPERLINK l bookmark95
2、 o Current Document 四、测试结果18五、总结 21、题目概述与需求分析本课程设计为单位建立一个员工通讯录管理系统,可以查询每个员工的编 号、姓名、办公室电话号码、手机号码及电子邮箱。其功能包括:(1)通讯录链表的建立。(2)员工通讯信息的查询、修改、插入与删除。(3)显示通讯录表的信息。(4)查询员工编号重复、数据结构设计(逻辑结构与物理结构)2.2逻辑结构设计(1)创建员工信息数据结构体 DataType,其中包括员工编号、员工姓名、 办公室电话号码、手机号码、电子邮箱信息。创建节点结构体,其中包括数据域 和指针域。代码如下:typedef struct(char num
3、5;char name10;char phone15;char call15;char e_mail30;/*员工编号*/*员工姓名*/*办公室电话号码*/*手机号码*/*电子邮箱*/DataType;typedef struct node(DataType data;/*结点的数据域*/struct node *next;/* 结点的指针域 */ListNode;(2)建立通讯录单链表。本设计运用尾插入法将新插入的结点接到单链表的 尾部。核心部分代码如下:rear-next=p;rear=p;(3)插入结点。结点插入式按照通讯录中员工编号的顺序进行插入,以保证 其编号按照从小到大顺序依次排列
4、,方便查询。核心代码如下:p1=head;p2=p1-next;while(p2!=NULL&strcmp(p2-data.num,p-data.num)next; /p2指向表的下一个结p1-next=p;/插入p所指向的结点p-next=p2;连接表中剩余部分(4)删除结点。从头结点处依次访问表中的结点并与需要删除的结点进行 比较,信息吻合则删除。核心代码如下:while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0)p=NULL;(5)查询结点。从头结点处依次访问表中的结点并与需要查询的结点进行比 较,信息吻
5、合则返回一个指针。核心代码如下:while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0)p=NULL;return p;(6)输出信息。从头结点处依次访问表中的结点并输出,直到表尾。(7)修改结点信息。从头结点处依次访问表中的结点,直到找到需要修改的 结点并修改。核心代码如下:printf(修改员工姓名n);strcpy(,k);printf(请输入修改后的姓名:n);getchar();gets(k);printf(n);strcpy(,k);(8)查询重复信息。在创
6、建链表和添加结点的时候调用查询函数,查询是否 有重复的员工编号,重复则会跳出一个重新输入提示框。核心代码如下:if(judge(head,p)=1)三、代码实现#include #include #include/*员工通讯录信息的结构类型定义*/typedef structchar num5;char name10;char phone15;char call15;char e_mail30;DataType;/*员工编号*/*员工姓名*/*办公室电话号码*/*手机号码*/*电子邮箱*/菜单函数通讯录单链表函数插入函数删除函数查找函数显示信息函数/节点定义typedef struct nod
7、eDataType data;/*结点的数据域*/struct node *next; /* 结点的指针域 */ ListNode;ListNode *head;ListNode *p;typedef struct node linklist;int menu();ListNode *createlist();void Add(ListNode *head,ListNode *p);void Delete(ListNode *head);ListNode *research(ListNode *head); void print_list(ListNode *head);ListNode *C
8、hange(ListNode *head,char k); / 修改信息函数void Save();保存到文件函数void Open();打开文件函数int judge(ListNode *head,ListNode *p); 判断是否重复函数 返回1就是重复 就是不重复/输出各种信息的固定界面void printcreate();void printadd();void printdelete();void printresearch();void printlist();void printchange();void printcontinue();int main()Open();whi
9、le(1)switch(menu()printcreate();head=createlist(); /调用建立通讯录链表函数 break;printadd();Add(head,p);printcontinue();break;printdelete();Delete(head);调用删除函数printcontinue();break;printresearch();p=research(head);调用查询函数if(p!=NULL)手机号printf(员工编号员工姓名办公室电话号码码电子邮箱)printf(n);printf(%-8st,p-data.num);printf(%-8st,p
10、-);printf(%-9st,p-data.phone);printf(%-11st,p-data.call);printf(%-10stn,p-data.e_mail); printcontinue(); else printf(对不起没有您要查询者的信息);printcontinue(); break;printlist();print_list(head);调用通讯录链表输出函数printcontinue();break;char b5;printchange();Change(head,b);printcontinue();break;Save();保存并释放内存e
11、xit(0); break;return 0;int menu()菜单函数清屏int i;system(cls);printf(*);printf(n);printf(*);printf(n);printf(*通 讯 录 系 统 清 单*);printf(n);printf(*printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);p
12、rintf(*1.建立通讯录.添加信息.删除信息.查询信息.输出信息.修改信息.退出菜单*);printf(n);printf(*);printf(n);printf(*);pr请选择 1-7:/提示输入是否错误intf(n);printf( );printf(n);scanf(%d,&i);while(i7)printf(输入错误!n);printf(请重新输入1-7:);scanf(%d,&i); printf(n);return i;ListNode *createlist()通讯录单链表函数 ListNode *head=(ListNode *)malloc(sizeof(ListNo
13、de);申请头结点ListNode *p; ListNode *rear;尾指针char c=c; rear=head;尾指针初始指向头结点int i=0;while(c=c)(p=(ListNode *)malloc(sizeof(ListNode);printf(请输入员工编号:n);scanf(%s,p-data.num);printf(请输入员工姓名:n);scanf(%s,);printf(请输入办公室电话号码:n);scanf(%s,p-data.phone);printf(请输入员工手机号码:n);scanf(%s,p-data.call);printf(请
14、输入电子邮箱:n);scanf(%s,p-data.e_mail);if(i=0)新结点连接到尾结点之后尾指针指向新结点(rear-next=p;rear=p;else( if(judge(head,p)=1)/要插入某个函数判断编号是否重复( printf(员工的编号重复!请重新输入!!n);else( rear-next=p;新结点连接到尾结点之后rear=p;尾指针指向新结点i+;printf(继续创建请按(c),结束创建请按其它键:n);读入flag数据终端结点指针域置空返回链表头指针getchar();scanf(%c,&c);rear-next=NULL;printf(一共创建了
15、d个员工信息! ! ”,i);return head; void Add(ListNode *head,ListNode *p) (p=(ListNode *)malloc(sizeof(ListNode);ListNode *p1;ListNode *p2;printf(员工编号:n);scanf(%s,p-data.num);printf(员工姓名:n);scanf(%s,);printf(员工办公室电话号码:n);scanf(%s”,p-data.phone); printf(员工手机号码:n);scanf(%s,p-data.call); printf(请输入电子
16、邮箱:n); scanf(%s,p-data.e_mail);if(judge(head,p)=1)/要插入某个函数判断编号是否重复printf(员工的编号重复!请重新输入!!n); else p1=head; p2=p1-next;while(p2!=NULL&strcmp(p2-data.num,p-data.num)next; /p2指向表的下一个结点 p1-next=p;插入p所指向的结点p-next=p2;连接表中剩余部分printf(操作已成功!n);void Delete(ListNode *head)char a,b;ListNode *p; ListNode *q; char
17、 num5; char name10; int x;p=head-next; scanf(%d,&x);while(x2)提示输入是否错误printf(输入错误!n); printf(请重新输入1-2:);scanf(%d,&x);printf(n);)if(x=1)printf(请输入员工的编号:);scanf(%s,num);while(p&strcmp(p-data.num,num)next;if(p=NULL|strcmp(p-data.num,num)0) p=NULL;)else if(x=2)printf(请输入员工的姓名:);scanf(%s,name);while(p&str
18、cmp(,name)!=0) p=p-next;)scanf(%c,&b);if(p=NULL)printf(对不起没有您要查询员工的信息n);return;)printf(确定要删除该信息吗?(y/n) :);scanf(%c,&a);if(a=y|a=Y)q=head;while(q!=NULL&q-next!=p)q=q-next;q-next=p-next;删除结点free(p);释放被删除的结点空间printf(该员工信息已被删除n);)ListNode *research(ListNode *head)ListNode *p;char num5;char na
19、me10;char phone15;char call15;int x;p=head-next;有头结点scanf(%d,&x);while(x4)提示输入是否错误 printf(输入错误!n); printf(请重新输入1-4:); scanf(%d,&x); printf(n); if(x=1) printf(请输入员工的编号:); scanf(%s,num); while(p&strcmp(p-data.num,num)next; if(p=NULL|strcmp(p-data.num,num)0)没有查到要查找的通讯者p=NULL; else if(x=2) printf(请输入员工的
20、姓名:); scanf(%s,name); while(p&strcmp(,name)!=0) p=p-next; else if(x=3) printf(请输入员工的办公室电话号码:);scanf(%s,phone); while(p&strcmp(p-data.phone,phone)!=0) p=p-next; else if(x=4) printf(请输入员工的手机号码:); scanf(%s,call); while(p&strcmp(p-data.call,call)!=0) p=p-next;return p;10void print_list(ListNo
21、de *head) (ListNode *p;链表带头结点p=head-next;printf(员工编号 员工姓名办公室电话号码手机号码电子邮箱n);printf(n);while(p!=NULL)(printf(%-8st,p-data.num);printf(%-8st,);printf(%-9st,p-data.phone);printf(%-11st,p-data.call);printf(%-10stn,p-data.e_mail); p=p-next;后移一个结点使链表数据项全部输出) )ListNode *Change(ListNode *head,char
22、 k口) (ListNode *q;int i;printf(*);printf(n);printf(*1.按员工编号查询*);printf(n);printf(*2.按员工姓名查询*);printf(n);printf(*3.按办公室电话号码查询*);printf(n);printf(*4.按手机号码查询*);printf(n);printf(”*);printf(n);printf(请选择 1-4);printf(n);q=research(head);if(q=0)(printf(没有要修改的信息!n);return 0;11) else (k15=0;printchange();pri
23、ntf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*1.修改员工姓名2.修改员工办公室电话号码.修改员工手机号码.修改员工电子邮箱printf(”*);printf(*);printf(n);n);printf(员工编号员工姓名办公室电话号码手机号码电子邮箱n);printf(%-8st,q-data.num);printf(%-8st,);printf(%-9st,q-data.phone);printf(%-11
24、st,q-data.call);printf(%-10stn,q-data.e_mail);printf(请选择 1-4);printf(n);scanf(%d,&i);while(i4)提示输入是否错误(printf(输入错误!n);printf(请重新输入1-4:);scanf(%d,&i);printf(n);)switch(i)(printf(修改员工姓名n);strcpy(,k);printf(请输入修改后的姓名:n);getchar();12gets(k);printf(n);strcpy(,k);break;printf(修改员工办公室
25、电话号码n);strcpy(q-data.phone,k);printf(请输入修改后的办公室电话号码:n);getchar();gets(k);printf(n);strcpy(q-data.phone,k);break;printf(修改员工手机号码n);strcpy(q-data.call,k);printf(请输入要修改的号码:n);getchar();gets(k);printf(n);strcpy(q-data.call,k);break;printf(修改员工电子邮箱n);strcpy(q-data.e_mail,k);printf(请输入修改后的电子邮箱:n);getchar(
26、);gets(k);printf(n);strcpy(q-data.e_mail,k);break;default :printf(输入错误!n);break;)return q;)void Save()(linklist *p=NULL;FILE *fp;char kechengsheji尸kechengsheji.txt;13if(head=NULL) (printf(n 记录为空! n);return;) elsep=head-next;if(fp=fopen(kechengsheji,wb+)=NULL) (printf(n 打不开文件!n);return;)while(p!=NULL
27、)保存信息(fwrite(p,sizeof(linklist),1,fp);p=p-next;)printf(保存完毕!n);fclose(fp);for( ;head-next!=NULL;)释放链表空间(p=head-next;head-next=head-next-next;free(p);)free(head);) void Open()(FILE *fp;linklist *p1=NULL,*p2=NULL,*temp=NULL;if(fp=fopen(kechengsheji.txt,rb+)=NULL) (printf(ntt* return;通讯录 *n);)head=(lin
28、klist *)malloc(sizeof(linklist);head-next=NULL;temp=p2=head;/*循环读取*/while(! feof(fp) (p1=(linklist *)malloc(sizeof(linklist);temp=p2;14p2-next=p1;p2=p1;fread(p1,sizeof(linklist),1,fp);)temp-next=NULL;fclose(fp);/* 关闭文件 */)int judge(ListNode *head,ListNode *p) ListNode *q;q=head;char num5;while(q&str
29、cmp(q-data.num,p-data.num)next;)if(q=NULL|strcmp(q-data.num,p-data.num)0)return 0; elsereturn 1; ) void printcreate()清屏system(cls);printf(”*);printf(n);printf(*);printf(n);printf(* *);printf(n);printf(*);printf(n);printf(*);printf(n);) void printadd()清屏system(cls);15printf(”*);printf(n);printf(*);pr
30、intf(n);printf(*添 加 员 工 信 息*);printf(n);printf(*);printf(n);printf(*);printf(n);)void printdelete()(system(cls);/清屏printf(”*);printf(n);printf(*);printf(n); printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*.按员工编号删除.按员工姓名删除*);printf(n);printf
31、(*);printf(n);printf(*);printf(n);printf(请选择 1-2:);printf(n);)void printresearch() (system(cls);/清屏printf(*);pr16printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*);printf(n);printf(*.按员工编号查询.按员工姓名查询*);printf(n); printf(*3.按办公室电话号码查询*);printf
32、(n); printf(*);printf(n);printf(*);printf(n);4.按手机号码查询printf(*);printf(n);printf( );printf(n); )请选择 1-4:void printlist()(system(cls);清屏printf(”*);printf(n);printf(*);printf(n); printf(*输 出 通 讯 录*);printf(n);printf(*);printf(n);printf(*);printf(n);)void printchange()17system(cls);/清屏printf( * );print
33、f( n);*1*1*1printf(*);printf(n);printf(*);printf(n);printf(* );printf(n);printf(*);pr intf(n);) void printcontinue() (printf(n);printf(继续请按任意键);getchar();getchar();、测试结果4,1界面C:Us ersvweis i sD es kto pDev-Cp pCo nsolePauser.exe通讯录系统清单自u.自心自I2J自曰单 Fard后史;星;史-5恃m 如加出木一 建添曹一 12 3 4 5 6 7看餐 MM MUX,),X)(
34、,)(,)(,)(101)(看)(看(看舅看看1)1)餐)餐 MM )(*)(,)(,)(请选择1-7:18建立通讯录 TOC o 1-5 h z 1 C;LJ; c-r5ww-i ikitQ pXDcv-GppCon 5 q IM 5 Cr, CXC= 口 XX建立通讯录XM*KKHK3KHK3KHK3KHK3KHH3KHH3KHH3KHH3KKH3KKH3KKHKKKHKKKHKKKHKKKHKKKHK 诂输入员_L编4二 1请输入员工姓名:i请输入办公空山,话号码二1请输入员I手机号码:1请输入电子邮箱;1组续创建请按船束创建清投其它铺二济输入S工编f住输入员工姓名二篙输入办公室电诏号3:添加信息Cl:LJ 占 e? r svwe-s i %口 一鼻 krt。|3D? v-Op pXCan-SO Ie-Pai u 与 u r- e-xe*1,X - X - X,X,X X X M X - X X K X MX x-x x- X X X X,X,X,X,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年组合卤钨灯杯项目投资价值分析报告
- 2024至2030年溶剂型纳米氧化铝溶液项目投资价值分析报告
- 2024至2030年气管卷筒项目投资价值分析报告
- 2024至2030年旋压劈开轮项目投资价值分析报告
- 2024至2030年承重型工程塑料拖链项目投资价值分析报告
- 2024至2030年中国刺绳网行业投资前景及策略咨询研究报告
- 2024至2030年内胎硫化胶水项目投资价值分析报告
- 2024至2030年上斜举重机项目投资价值分析报告
- 2024年中国香叶木素市场调查研究报告
- 2024年钛合金环项目可行性研究报告
- 太阳系中的有趣科学学习通超星期末考试答案章节答案2024年
- 走近湖湘红色人物智慧树知到答案2024年湖南工商大学
- 2023年版《安宁疗护实践指南(试行)》解读课件
- AQ6111-2023个体防护装备安全管理规范
- FZ∕T 32001-2018 亚麻纱行业标准
- (高清版)TDT 1031.1-2011 土地复垦方案编制规程 第1部分:通则
- 国开2023秋《人文英语3》第5-8单元作文练习参考答案
- 2023版押品考试题库必考点含答案
- 刚晓观所缘缘论略讲
- lonely-planet-PDF-大全
- 烟花爆竹零售店点安全技术规范
评论
0/150
提交评论