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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《职工档案管理系统》的设计与实现.docx

1、职工档案管理系统的设计与实现苏州科技学院二一四 二一五学年第二学期电子与信息工程学院课程设计报告书课程名称: 程序设计实践 班 级: 电子1412 学 号: 14200106214 姓 名: 孙玮 指导教师: 任建平 二一五年三月1.题目职工档案管理系统的设计与实现2.功能(1)每一条记录包括一个职工的工号、姓名、年龄、性别、出生日期、住址、电话、工资、学历。(2)输入功能:可以依次完成指定条数记录的输入。(3)显示功能:完成职工记录的显示。(4)查找功能:完成按姓名或工号查找职工记录,并显示。(5)排序功能:按职工工号进行排序。(6)插入功能:按工号大小插入一条记录。(7)保存功能:将职工记

2、录保存在指定的文件中。(8)读取功能:将保存在文件中的职工记录读取出来。(9)有一个清晰美观简洁界面来调用各个功能3.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将职工信息保存在文件中。(6)可以将职工信息从文件中读取出来。4.设计内容整个系统除了主函数外,另外还有10个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的详细设计说明分别如下:4.1主函数 main()利用while()和

3、swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数然后利用if()判断是否继续执行。4.2帮助函数 Help()这是一个无参函数,里面只有一些printf语句,它的作用是显示帮助,使用户更易于操作。4.3菜单选择函数 Mainmenu()这是一个无参函数,主要实现“功能选择”的界面的显示,在这个界面里有显示系统的八大功能,根据每个功能前面的序号进行选择。4.4输入记录函数 struct employee *Input(struct employee *head)这是一个有参函数,形参为“链表头的指针”,用来执行指定个数职工信息的输入,函数结束后,带回一个指向链表头的指针

4、head。算法:定义两个整形变量n,i(用于记录个数和进行for循环)并声明一个新节点p,并为其申请空间。每输入一个数据就声明一个新节点p,把p-next设为NULL,并且链接到之前列表的尾端。N-S流程图如下:定义n,i,并键入n的值 声明节点p,申请空间for(i=0;inum等于findnum)是 否删除head结点P指向head的下一结点 P不为NULL且p-num不等于findnum P移向下一结点 否 是否p-num等于findnum 是删除结点p 释放p指针 返回head指针4.8有序插入函数 struct employee *Insert(struct employee *he

5、ad,struct employee *p) 与struct employee *Insertage(struct employee *head,struct employee *p)这是一个有返回值的有参函数,形参为“链表头的指针”和一个指针p,返回一个指向链表头的指针head。算法:比较新插入的结点与其他结点中num(age)的值,找出结点的位置,进行插入。N-S流程图如下:头结点是否为空是 否P结点为第一个结点head=pp-next=NULL判断p的工号(年龄)是否小于head的工号(年龄)是 否则p结点应该插入到head前面,所以 p-next=head;head=pp1=head,

6、判断p-num(age)是否大于p1-num(age)且p1的下一结点不为p0=p1 p1指向下一结点继续循环 判断是 否将p结点插入到p0与p1之间 判断p的工号(年龄)与p1的工号(年龄)是否不等否 是P插入到p1后面,NULL接到p后面返回head指针4.9保存数据到文件函数 void Save(struct employee *head)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把职工记录保存在电脑上指定的TXT文件中。p=head文件是否能打开否 是输出出错信息当p不为空fprintf()函数将信息输入进文件p=p-next,指针后移关闭文件4.10从文件读数据函数 s

7、truct employee *Read(struct employee *head)这是一个有返回值的有参函数,形参为“链表头的指针”,根据文件地址进行读取文件,最后返回头指针head。N-S流程图如下:定义指针变量p,文件指针fp文件是否能打开否 是输出出错信息当文件未结束选择排序方式运用Insert函数建立链表运用Insertage函数建立链表fscanf()函数将信息从文件中输出关闭文件5.调试分析(1)刚开始没有使用链表,程序运行后,因为没有在字符后面输入0,结果运行后显示的是一堆乱码!然后查阅了一些书籍,决定使用链表来完成,果然使用链表后,乱码就消失了。(2)最初使用链表定义读取文

8、件的函数时,运行之后读取不是很成功,显示一堆乱码,后来查阅资料才知道,是因为读取文件时,分配的字符串长度正好与文件长度相等,造成字符串末尾没有0,后来经过重新设计,顺利的解决了这个问题。(3)最初设计时插入功能与排序功能是由两部分组成,后来查阅了书籍后发现两者可以合二为一,更加简洁,就将其学习后运用到了自己的编程中。(4)刚开始界面设计的有点乱,后来经过许多次的修改,并且学习了清屏功能的用法,整个界面顿时清爽了很多。(5)用两种排序最初是放在同一个函数中,造成排序重复,于是重新建立了一个新的函数用来排序,在读取文件时进行排序,然后系统终于可以运用两种排序方式。6.总结经过十几天的的C语言课程设

9、计,感觉自己受益良多!首先,链表本来课是上的很少的,掌握的并不是很熟练,但这个课程设计里面主要都是用链表,因为要达到这些的功能,使用链表更加方便,便于操作,但也不容易理解,所以在这方面我花了很多的时间看课本和上网查阅资料,也是自己对C语言了解的更透彻。其次,在做课程设计的过程中,我也发现了平时很多没有注意到的问题,例如:字符串后要添加0才不会产生乱码,函数引用前要声明. 更重要的是,这次课程设计虽然花了我不少时间,但这些时间很值得,我在这些时间里去学会了自己探索,自己学习,自己去建立一个简洁的操作界面。在这写日子中我也懂得了,编程不仅需要程序好,而且运行界面还要给人以简洁明朗的感觉。我相信这次

10、的课程设计为我以后的专业课打下一个很好的基础。代码:#include #include #include #include #include #define LEN sizeof(struct employee) #define DAT_FILENAME D:职工档案管理系统.txtstruct date int year; int month; int day; ; struct employee int num; char Name12; int age; char sex; char phone15; char address40; struct date birthday; char

11、degree10; char salary10; struct employee *next;void Mainmenu();void Help(); void Display(struct employee *head);struct employee *Insertage(struct employee *head,struct employee *p);struct employee *Findnum(struct employee *head,int findID);struct employee *Findname(struct employee *head,char findnam

12、e);struct employee *Input(struct employee *head);void Query(struct employee *head);struct employee *Edit(struct employee *head);struct employee *Insert(struct employee *head,struct employee *p);void Save(struct employee *head);struct employee *Read(struct employee *head);struct employee *Delete(stru

13、ct employee *head,int findID); void Mainmenu() printf(+# 职工档案管理系统 #+n); printf(+ttt1-档案录入 t2-信息修改 ttt+n); printf(+ttt3-内容查看 t4-保存文件 ttt+n); printf(+ttt5-打开文件 t6-友情帮助 ttt+n); printf(+ttt*0-安全退出* ttt+n); printf(+ttt如您第一次使用本程序请按“6”阅读帮助tt+n); printf(+#+n); printf(tt请选择(07):);void Help() printf(nttt欢迎进入帮

14、助系统!nn); printf(t1.请按照主菜单提示选择所需执行功能的数字代号!n); printf(t2.所有文件请按照提示规范输入,请勿超出文字限制个数!n); printf(t3.刚开始执行程序时若需要文本文件里的数据请先进行打开文件!n); printf(t4.录入信息和修改信息以后,请切记需要保存!n); printf(t5.如您执行文件追加,则无需打开文件!n); printf(t6.遇到系统错误,请勿自行解决,如不需进行编辑,请及时退出系统!n); printf(t7.录入信息时请避免工号重复,否则录入失败!n); printf(t祝您使用愉快!); printf(n); vo

15、id Display(struct employee *head) struct employee *p; printf(n工号t姓名t年龄t性别t电话tt地址t出生年月 学历 工资n); p=(struct employee *)malloc(LEN); p=head; if(head!=NULL) while(p!=NULL) printf(%-dt%-st%-dt,p-num,p-Name,p-age); printf(%-ct%-st%-st,p-sex,p-phone,p-address); printf(%-d %d %d,p-birthday.year,p-birthday.mo

16、nth,p-birthday.day); printf( %-s,p-degree); printf( %-sn,p-salary); p=p-next; else printf(没有数据n);struct employee *Findnum(struct employee *head,int findnum) struct employee *p; p=(struct employee *)malloc(LEN); p=head; if(head!=NULL) while(p!=NULL) if(p-num=findnum) break; p=p-next; else printf(没有数据

17、n); return p; struct employee *Findname(struct employee *head,char findname) struct employee *p; p=(struct employee *)malloc(LEN); p=head; if(head!=NULL) while(p!=NULL) if(strcmp(p-Name,findname)=0) break; p=p-next; else printf(没有数据n); return p; struct employee *Input(struct employee *head) int n,i;

18、 struct employee *p; p=(struct employee *)malloc(LEN); printf(n请输入本次录入的职工人数 ); scanf(%d,&n); for(i=0;inum); printf(tt 姓名:t); scanf(%s,p-Name); printf(tt 年龄:t); scanf(%d,&p-age); printf(tt 性别(男M、女W):); scanf(%s,&p-sex); printf(tt 电话:t); scanf(%s,p-phone); printf(tt 地址:t); scanf(%s,p-address); printf(

19、tt 出生年月(年 月 日):); scanf(%d%d%d,&p-birthday.year,&p-birthday.month,&p-birthday.day); printf(tt 学历:t); scanf(%s,p-degree); printf(tt 工资:t); scanf(%s,p-salary); head=Insert(head,p); p=(struct employee *)malloc(LEN); printf(n输入后信息为:n); Display(head); return(head); void Query(struct employee *head) char

20、select; int findnum; char findname12; struct employee *p; printf(请选择查询方式:n); printf(1-按工号查询n2-按姓名查询n); printf(请选择(1-2):); select=getche(); getch(); system(cls); switch (select) case1: printf(n 按工号查询n 请输入职工的工号 ); scanf(%d,&findnum); if(p=Findnum(head,findnum)!=NULL) printf(n 查找结果如下 n); printf(n工号t姓名t

21、年龄t性别t 电话tt地址t出生年月 学历 工资n); printf(%dt%st%dt,p-num,p-Name,p-age); printf(%ct%st%st,p-sex,p-phone,p-address); printf(%d %d %d,p-birthday.year,p-birthday.month,p-birthday.day); printf( %s,p-degree); printf( %sn,p-salary); else printf(您输入的工号不存在!n); break; case2: printf(n按姓名查询n请输入职工的姓名:); scanf(%s,&find

22、name); if(p=Findname(head,findname)!=NULL) printf(n 查找结果如下 n); printf(n工号t姓名t年龄t性别t 电话tt地址t出生年月 学历 工资n); printf(%dt%st%dt,p-num,p-Name,p-age); printf(%ct%st%st,p-sex,p-phone,p-address); printf(%d %d %d,p-birthday.year,p-birthday.month,p-birthday.day); printf( %s,p-degree); printf( %sn,p-salary); else printf(您输入的姓名不存在n); break; default: printf(选择错误!n); struct employee *Edit(struct employee *head) int findnum; char select; struct employee *p; printf(n请输入职工的工号:); scanf(%d,&findnum); if(p=Findnum(head,findnum)!=NULL) printf(请选择修改方式:n); printf(1-修改信息n2-删除信息n); printf(请选择(1-2):); select=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2