ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:433.31KB ,
资源ID:2941582      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2941582.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计职工信息管理系统链表学习资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计职工信息管理系统链表学习资料.docx

1、C语言程序设计职工信息管理系统链表学习资料信息与电子工程学院C语言课程设计职工信息管理系统设计实验日期和时间: 2011年06月27日06月29日实验类别:课程设计实验类型:设计性一、 实验环境操作系统:windows xp编程工具:Microsoft Visual C+ 6.0开发环境:CPU(Inter(R)Core(TM)2 Quad cpu QB200 2.33GHz) 内存:2.76GB硬盘:228.3GB开发地点:现代教育中心201机房A17座IP:10.250.11.17二、实验目的和要求实验目的:(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操

2、作算法。(2)使学生进一步掌握程序设计、编写、调试能力。(3)使学生了解软件开发的基本步骤和内容。实验要求:完成一个职工信息管理系统程序,具体内容如下:(1)在内存中用链表记录,在硬盘上用二进制文件保存。(2)设计完的程序能够以命令行或者菜单形式增加、删除、更新和查询数据的内容。数据内容能够排序以方便查询。(3)数据库中应该有至少20条记录。三、实验内容和结果(1)程序整体功能;1、系统总体框2、模块设计该程序主要分为7个模块,分别是创建与添加模块、显示模块、查找模块、修改模块、删除模块、存档模块、文件统计模块、退出模块(2)程序组成及各模块/函数功能;创建与添加模块:该模块的功能是输入职工信

3、息。函数为void Add(Node *woker)原理:采用尾插法,先建立链表与头结点,新增一个结点,键盘输入职工号、职工姓名、职工性别、职工出生年月、职工学历、职工职位、职工工资,将这些信息存储到新增结点中,将新增加的节点连到链表的尾端,如此以往,将尾结点的指针域置空,这样就得到了一条存储职工信息的链表,这样就完成了职工信息的创建与增加。显示模块:该模块功能是显示职工信息。函数为void Disp(Node *woker)原理:先新建一个指针P指向头结点,判断它的指针域是否为空,若为空,则输出“没有记录可以显示”;若不为空,则输出它的指针域所指向节点所储存的职工信息,并将该指针向后移一个结

4、点,直到P指向空,即输出了所有职工的信息,这样就完成了所有职工信息的显示。查找模块:该模块功能是查找职工信息。函数为void Tongji(Node *woker)原理:该模块分为两种查找方法,分别是按职工号查找和按职工姓名查找,因为这两种查找方法雷同,所以这里将只解释按职工号查找的原理。先键盘输入一个要查找的职工号并新建一个指针P指向头结点,判断它的指针域是否为空,若为空,则输出“没有资料可以统计分类”,若不为空,则判断它的指针域所指向节点所储存的职工信息中的职工号,若相等,则输出这个职工的其他所有信息,并将P指向下一个结点,再次进行判断,直到P指向空,即输出了所有查找到的信息。若不相等,则

5、P指向下一个结点,再次进行判断,直到P指向空,即输出了所有查找到的信息,这样就完成了职工信息的查找。修改模块 :该模块功能是修改职工信息。函数为void change(Node *woker)原理:根据查找原理,查找到要修改信息的职工,删除这一节点,并新建一个节点,键盘输入想要修改的内容,并储存到新的结点中,将新的节点连接到链表中原先删除结点的位子,这样就完成了职工信息的修改。删除模块:该模块功能是删除管理职工信息。函数为void dismiss(Node *woker)根据查找的原理,查找到要修改信息的职工,删除这一节点,并将其前驱结点的指针域指向其后继结点,这样就完成了职工信息的删除。存档

6、模块:将内存中的信息存储到文件中。函数为void save(Node *woker)原理:打开文件,新建一个指针P指向头结点,判断它的指针域是否为空,若为空,则输出“无记录”,若不为空,则将这个职工的所有信息输入到文件中,并将P指向下一个结点,直到P指向空,即输入了的信息,文件统计模块:打开文件,统计职工数目,并输出。函数为void load(Node *woker)退出模块:该模块功能是退出管理档案。(3)重要数据结构,重要模块/函数算法;1:创建与添加模块:void Add(Node *woker) /添加记录Node *p,*r,*s; char n10; /先用于输入职工号,也用于判断

7、是否跳出循环r=woker;s=woker-next; /使s为第一个有用的结点while(r-next!=NULL) /这个循环的作用是使r为最后一个有用的结点r=r-next; /将指针置于最末尾while(1) printf(提示:输入0则返回主菜单!n); printf(n请你输入职工号:); scanf(%s,n); if(strcmp(n,0)=0) break; p=(Node *)malloc(sizeof(Node); /申请空间 strcpy(p-data.num,n); printf(n请输入姓名:); scanf(%s,p-data.name); printf(n请输入

8、性别:); scanf(%s,p-data.sex); printf(n请输入出生年月:); scanf(%s,&p-data.birthday); printf(n请输入学历:); scanf(%s,&p-data.degree); printf(n请输入职位:); scanf(%s,&p-data.position); printf(n请输入工资:); scanf(%s,&p-data.salary); printf(提示:已经完成一条记录的添加。n); p-next=NULL; r-next=p; /这一步是必需的,将p与先前的链表连起来构成一条新链表 r=p; /也是必需的.将r 又重

9、设为新链的最后一个有用结点 2:显示模块void Disp(Node *woker) /输出职工信息Node *p;p=woker-next;if(!p) printf(n提示:没有记录可以显示!n); return; printf(tttt显示结果n); printf(职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资n); while(p) printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.degree,p-data.posi

10、tion,p-data.salary); p=p-next;3:查找模块void Tongji(Node *woker) /查找统计函数Node *p;int sel;int flag2=0,ha=0;p=woker-next;char find20; if(!woker-next) /若链表为空 printf(n提示:没有资料可以统计分类!n); return;printf(提示:n=0退出n=1按职工号统计n=2按职工姓名名称统计n);scanf(%d,&sel);if(sel=1) printf(n输入你要统计分类的职工号:);scanf(%s,find); while(p) if(st

11、rcmp(p-data.num,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); ha=flag2; else if(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10

12、s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按设备号%s统计分类的有%d条记录:*nn,find,flag2); else printf(n按职工号%s统计的结果为0个nn,find);else if(sel=2) printf(n输入你要统计分类的职工姓名:); scanf(%s,find); while(p) if(strcmp(p-data.name,f

13、ind)=0) flag2+; if(flag2=1&ha!=flag2) printf(职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); ha=flag2; else if(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按设备名称%s统计的有%d条记录:*nn,find,flag2); else printf(n按职工姓名%s统计分类的结果为0个nn,find);else if(sel=0) return;4:修改模块void change(Node *woker) /修改职工信息函数Node *p;char find20;if(!woker-next)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1