C语言职工信息管理系统(链表).doc

上传人:pu****.1 文档编号:545068313 上传时间:2023-05-23 格式:DOC 页数:23 大小:359.52KB
返回 下载 相关 举报
C语言职工信息管理系统(链表).doc_第1页
第1页 / 共23页
C语言职工信息管理系统(链表).doc_第2页
第2页 / 共23页
C语言职工信息管理系统(链表).doc_第3页
第3页 / 共23页
C语言职工信息管理系统(链表).doc_第4页
第4页 / 共23页
C语言职工信息管理系统(链表).doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言职工信息管理系统(链表).doc》由会员分享,可在线阅读,更多相关《C语言职工信息管理系统(链表).doc(23页珍藏版)》请在金锄头文库上搜索。

1、程序设计综合训练设计报告专 业: 数字媒体技术班 级: 11媒体Z学 号: 11145107姓名: 朱毅指导教师:陈湘军 陈明霞成绩: 计算机工程学院 2012年10月第一部分题目:1.编写函数 int hamming(int x,int y,char a,char b)实现以下功能:先将形参x和y分别转换为2个合法代码并按从低位到高位的顺序为别保存2个合法代码的码距,函数返回该码距。2.编写函数main()函数实现以下功能:声明字符数组a、b和变量m、n输入两个整数冰保存到m和n中,若m、n的值在032767范围内则用m、n和数组a、b做实参调用haming函数,计算由m和n生成的两个合法代

2、码的码距输出的到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。来自:2009年(秋)上机试卷(03)的编程题。解题的基本思路:子函数就是将形参X,Y分别转换为2个合法的代码并按从低位到高位的顺序分别保存2个合法代码到a和b指向的数组中,在计算a数组和b数组中的两个合法代码的码距,函数返回码距。主函数就是调用子函数,并输出结果。设计方案:主函数main()(1) 功能模块框图:调用子函数:hamming()子函数调用函数:bin()主函数(2)程序流程图:入 口 读文件创建文件,输入m,n调用函数hamming() 返回count;出 口用hamming()

3、调用函数bin()Hamming函数循环体Bin函数循环体循环体算法设计:(1)算法描述:由于hamming函数需要分别将两个整数转换为合法代码,因此编写函数“void bin(int n,char str)”。Bin函数的功能是将形参n转换为合法代码并保存到b指向的一维数组中。Hamming函数先两次调用bin函数,分别将形参X和Y转换为合法代码并分别保存到a和b指向的一维数组中,在用循环语句从前向后遍历a和b指向的数组各元素,函数最后返回统计结果。(2)实现方法:用VC6.0软件进行调试,分析,输入m,n两个值,进行分析,调用函数hanmming(),在从hanmming()函数中调用函数

4、bin(),返回count的值,输出,a,b数组中的值和返回值count的值。源代码:#includevoid bin(int n,char str)int i=15,j;while(n!=0)stri-=n%2+0;n/=2;for(j=0;j=i;j+)strj=0;str16=0;int hamming(int x,int y,char a,char b)int count=0,i;bin(x,a);bin(y,b);for(i=0;i32767&m32767&n0);x=hamming(m,n,a,b);printf(n%sn%sndistance of %d and %d is %d

5、 n,a,b,m,n,x);fprintf(fp,n%sn%sndistance of %d and %d is %d n,a,b,m,n,x);fprintf(fp,11145107);fclose(fp);程序调试:就是输入的时候,n和m的值范围问题,当输入范围不正确时候跳不出来解决方法:用一个dowhile;循环条件为大于32767和小于0的时候退出。测试: 第二部分职工信息管理系统(1)题目名称:职工信息管理系统内容:职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:1、职工信息录入功能(职工信息用文

6、件保存,也可不用) 2、职工信息浏览功能 3、排序:按工资排序4、查询或排序功能:(至少一种查询方式:顺序、折半查找)按工资范围查询5、职工信息删除、修改功能(任选一项)(2)解题的基本思路程序采用模块化,每一个模块对应一种功能,调用函数予以实现,分别为7个模块,分别是创建与添加模块、显示模块、查找模块、修改模块、删除模块、存档模块、文件统计模块、退出模块,把复杂的问题分成每一个独立功能的小问题来解决。(3)设计方案1、功能模块图菜单开始根据菜单输入序号值选择程序结束是否继续进行 NY2修改职工信息3浏览职工信息4分类查找职工信息5删除职工信息6从文件读取信息0退出1录入职工信息按职工号查找按

7、姓名查找(4) 算法设计该程序主要分为7个模块,分别是创建与添加模块、显示模块、查找模块、修改模块、删除模块、存档模块、文件统计模块、退出模块创建与添加模块:该模块的功能是输入职工信息。函数为void Add(Node *woker)原理:采用尾插法,先建立链表与头结点,新增一个结点,键盘输入职工号、职工姓名、职工性别、职工出生年月、职工学历、职工职位、职工工资,将这些信息存储到新增结点中,将新增加的节点连到链表的尾端,如此以往,将尾结点的指针域置空,这样就得到了一条存储职工信息的链表,这样就完成了职工信息的创建与增加。显示模块:该模块功能是显示职工信息。函数为void Disp(Node *

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

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

10、。函数为void dismiss(Node *woker)根据查找的原理,查找到要修改信息的职工,删除这一节点,并将其前驱结点的指针域指向其后继结点,这样就完成了职工信息的删除。存档模块:将内存中的信息存储到文件中。函数为void save(Node *woker)原理:打开文件,新建一个指针P指向头结点,判断它的指针域是否为空,若为空,则输出“无记录”,若不为空,则将这个职工的所有信息输入到文件中,并将P指向下一个结点,直到P指向空,即输入了的信息,文件统计模块:打开文件,统计职工数目,并输出。函数为void load(Node *woker)退出模块:该模块功能是退出管理档案。(5)程序调

11、试与测试:欢迎界面:主界面: 创建与增加模块:输入职工信息为:职工号职工姓名职工性别职工出生年月职工学历职工职位职工工资1Af11bena10002Bm22benb20003Cf33benc30004Dm44bend4000输入第一次时:输入第二次时:输入第三次时:输入第四次时:显示模块:输入四次后显示的结果为:查找模块:输入查找职工号为3的职工信息:输入查找职工姓名为c的职工信息:修改模块:修改职工号为3的职工信息为:职工号职工姓名职工性别职工出生年月职工学历职工职位职工工资5Ef55eee5000职工信息变成:删除模块:删除职工号为5的职工信息:删除后的结果为:退出模块:(6)总结此次实践

12、课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。本次C 语言的实习课让我对C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上学到的,这次程序设计课让我增添了许多程序设计经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学和老师的帮助下,我顺利的结

13、束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰。(7)附录:源代码#include #include stdlib.h#include struct wokers/定义一个woker的结构体char num10;/职工号char name15;/职工姓名char sex15;/职工性别char birthday15; /职工出生年月char degree10; /职工学历char position10; /职工职位char salary10; /职工工资;typedef struct nodestruct wokers data;struct node *next;/建立一个链表。Node;void Add(Node *woker)/添加记录

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号