员工信息管理系统(数据结构)_第1页
员工信息管理系统(数据结构)_第2页
员工信息管理系统(数据结构)_第3页
员工信息管理系统(数据结构)_第4页
员工信息管理系统(数据结构)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可编辑版/员工信息管理系统课程设计报告系别:计算机与信息工程系班级:B080501姓名:李海鹏学号:B08050128指导教师:张红霞课设时间:2010-6-21到2010-6-25摘要员工信息管理系统属于信息管理系统。员工信息管理是每个公司不可缺少的。系统用C程序开发,主要在于建立好一个合适的数据结构,并要求程序简洁实用。本系统利用C语言简洁、灵活,数据结构丰富等特点,编写适合公司使用的系统。整个系统使用起来也比较方便,入手简单,操作方便。论文主要介绍了程序设计过程、设计方案以及测试过程,重点讲解了设计过程中的思想,技术解决方案等等。关键字:员工信息管理,C程序,数据结构目录前言3第1章课设题目4第2章开发运行环境及相关知识4第3章程序总体设计53.1主要功能模块53.2数据结构6第4章程序详细设计及实现74.1输入函数74.2排序函数74.3显示函数74.4查找函数74.5更改函数84.6删除函数84.7主函数84.8其他函数9第5章系统功能测试95.1系统主界面95.2输入数据95.3显示数据105.4信息排序105.5更改信息115.6删除信息11第6章课设总结12第7章程序清单13参考文献22前言本课程设计旨在理论学习和基础实验的基础上,开发规模较大的程序,掌握应用计算机编程解决实际问题的基本方法,熟悉C程序开发的全过程,掌握数据结构的使用方法,熟练应用各种数据结构。本次任务是根据给定的数据和程序,应用单向链表处理一系列公司员工的信息。通过整个程序开发的过程,提高综合应用C语言的能力、编程和调试能力,为进一步学习相关专业课程创建较扎实的理论基础和实践基础。报告将分6个章节来详细讲述本次课设题目的开发过程。第1章主要描述课设的题目及要求;第2章来介绍程序开发运行环境;第3章介绍程序主体设计,网络程序概要;第4章是对程序进行详细分析,对各个函数进行详细描述,并阐述程序实现技术等信息;第5章为测试过程,主要用测试过程中的图片来表述最终信息;第6章也是最后一章,为本次实践活动的心得体会。第1章课设题目1.1课设题目每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。1.2基本要求〔1每条记录内,包括员工的个人信息,有:编号、姓名、性别、出生年月、学历、职务、电话、住址等;〔2按不同关键字〔如编号,姓名等,对所有员工的信息进行排序;〔3按照指定条件查找某员工所有信息;〔4按编号对某个员工的信息进行修改;〔5加入新员工的信息,并实现排序;〔6按编号删除已离职的员工的信息。1.3其他需求程序除需完成基本功能外,程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。第2章开发运行环境及相关知识2.1运行环境软件环境:Windows2000,WindowsXP和WindowsNT4.0。2.2开发工具微软公司的MicrosoftVisualC++6.0。2.3开发工具简介VisualC++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET<VisualC++7.0>,但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境〔integrateddevelopmentenvironment,IDE。VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。第3章程序总体设计3.1主要功能模块依据程序的数据结构和功能,遵照"自顶向下"原则,描述该程序的层次结构,在总体上包括数据的录入、增加、删除、查找、更改和数据的排序等功能模块。主函数main<>主函数main<>输入显示查找排序更改删除退出按编号按姓名按编号按姓名图3-1程序主体3.2数据结构依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。本课程设计根据功能需求,使用线性结构来组织数据,因为数据占据空间比较大,要对表中某项数据进行操作,所以使用链表比较方便。结构体定义:typedefstructStuff{charnumber[10];//编号charname[10];//姓名charsex[8];//性别charbirthday[10];//生日chardegree[20];//学历charbusiness[20];//职务charphone[15];//电话charplace[50];//住址charcon[50];//判断关键字structStuff*next;//指针域}Stuff;信息存储:信息存储结构如图3-2Head指针域Head指针域数据域指针域数据域指针域NULL图3-2链式存储结构第4章程序详细设计及实现4.1输入函数函数原型:Stuff*App<Stuff*head>;函数功能:通过输入各项数据给数据元素,来建立一个数据表。算法要点:用循环控制输入记录;为每一结构体数据项输入数据;返回输入记录数。4.2排序函数函数原型:voidSort<Stuff*head>;voidScpy<char*p,char*q>;intSel<charch,Stuff*p,Stuff*q>;函数功能:按照指定关键字对员工信息进行排序。算法要点:<1>比较法对信息进行排序;<2>使用交换函数,对每项信息进行交换。4.3显示函数函数原型:voidShow<Stuff*head>;函数功能:输出表中所有节点的信息。算法要点:使用循环输出所有信息。程序清单:4.4查找函数函数原型:Stuff*Search<Stuff*head>;函数功能:按照指定关键字,对相应员工信息进行查找。算法要点:输入字段和信息相应字段的比较;函数中调用删除和更改函数。4.5更改函数函数原型:Stuff*Change<Stuff*head,charn[10]>;函数功能:输入员工编号,查找到员工信息,对其信息进行更新。算法要点:信息查找;信息重新录入及保存。4.6删除函数函数原型:Stuff*Del<Stuff*head,charn[10]>;函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除。算法要点:按关键字查找信息;链表中删除节点信息,并释放节点空间。4.7主函数主函数主要是调用以上的子函数,用开关语句进行选择性的调用。大致程序如下:switch<Menu<>> { case1:调用函数语句;break;case2:调用函数语句;break;……case0:退出程序语句;default:printf<"输入错误,请重新输入!\n">;}4.8其他函数其他函数主要起到辅助功能,如菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。菜单函数原型:charMenu<>;释放函数原型:voidFre<Stuff*head>;第5章系统功能测试5.1系统主界面图5-1系统主界面5.2输入数据〔1输入操作字符1;〔2输入员工信息;〔3输入"#"字符结束输入。图5-2输入操作5.3显示数据图5-3显示信息5.4信息排序图5-4信息排序5.5更改信息图5-5更正信息5.6删除信息图5-6删除信息第6章课设总结如何才能真正的去掌握编程的方法,如何才能真正的去理解书上的理论信息,理论知识用于实践才是最终的目的。通过本次数据结构课程设计,我对数据结构的理论知识有了更为直接的认识,从实际中获得了很多宝贵的经验,这些对我以后做程序开发将是一笔很宝贵的财富。我有以下两点感触:〔1没有解决不了的问题。这个程序在课设前一周就开始着手编写,中间遇到了不少的问题,由于以前写过类似的程序,所以对其中的一些错误很是敏感,也通过不少的途径来解决了问题。比如,通过和网上的一些程序代码的对比,解决了自己程序中输出乱码的问题。〔2注重团队协作。虽然此次课设是完全个人完成的,但是我还是要强调团队的重要性,因为我们以后走项的程序开发的道路上,没有单枪匹马的,都是一个团队协作完成的,所以今后的程序开发过程中,尽可能的和他人合作。万事开头难,学好编程,我还有很长的路要走。第7章程序清单#include"stdio.h"#include"stdlib.h"#include"windows.h"//清屏函数头文件#include"string.h"typedefstructStuff{charnumber[10];//编号charname[10];//姓名charsex[8];//性别charbirthday[10];//生日chardegree[20];//学历charbusiness[20];//职务charphone[15];//电话charplace[50];//住址charcon[50];//判断关键字structStuff*next;}Stuff;charMenu<>;//菜单函数Stuff*App<Stuff*head>;//添加函数voidSort<Stuff*head>;//排序函数Stuff*Search<Stuff*head>;//查找函数Stuff*Change<Stuff*head,charn[10]>;//更改函数voidScpy<char*p,char*q>;//排序中用于交换员工信息Stuff*Del<Stuff*head,charn[10]>;//删除函数intSel<charch,Stuff*p,Stuff*q>;//判断排序及关键字专用函数voidShow<Stuff*head>;//输出函数voidFre<Stuff*head>;//释放函数intn=1;//定义全局变量,实现人数统计//菜单函数charMenu<void>{ intch;printf<"菜单\n">;printf<"1.添加员工信息\n">;printf<"2.员工信息排序\n">;printf<"3.查找员工信息\n">;printf<"4.输出员工信息\n">;printf<"5.更改员工信息\n">;printf<"6.删除员工信息\n">;printf<"0.退出\n">;printf<"\n">;printf<"请选择你的操作:">;scanf<"%d",&ch>;returnch;}//添加成员函数Stuff*App<Stuff*head>{ Stuff*p=NULL,*q=head;while<n> { p=<Stuff*>malloc<sizeof<Stuff>>;//申请结构体空间if<p==NULL> { printf<"空间不足,自动退出系统!\n">;exit<0>; }p->next=NULL;//指针域为空printf<"请输入第%d名员工:\n",n>;printf<"编号|姓名|性别|出生年月|学历|职务|电话|住址:\n">;getchar<>;scanf<"%s",p->number>;if<strcmp<p->number,"#">> { ++n; scanf<"%s%s%s%s%s%s%s",p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place>;p->con[0]='\0';//防止后面判断出现随机值if<head==NULL> head=p;else { while<q->next!=NULL>q=q->next;q->next=p; }q=p;//尾插法 } if<!strcmp<p->number,"#">> { free<p>;//完成添加,释放多余空间break; } }returnhead;}//排序函数voidSort<Stuff*head>{ charch;Stuff*p,*q,*r;while<1> { printf<"请选择排序条件:1.编号|2.姓名|0.退出\n">; getchar<>;scanf<"%c",&ch>;if<ch=='0'>break;if<ch<'1'||ch>'2'> { printf<"输入错误,请重新输入!\n">;continue; }p=head;while<p->next!=NULL>//选择排序 { q=p->next;r=p;while<q!=NULL> { if<Sel<ch,r,q>>//调用判断函数 r=q;q=q->next; }if<r!=p>//交换信息 { Scpy<r->number,p->number>;Scpy<r->name,p->name>;Scpy<r->sex,p->sex>; Scpy<r->birthday,p->birthday>;Scpy<r->degree,p->degree>;Scpy<r->business,p->business>;Scpy<r->phone,p->phone>;Scpy<r->place,p->place>; }p=p->next; }Show<head>;//输出 }}//交换函数voidScpy<char*p,char*q>{ charc[50];strcpy<c,p>;strcpy<p,q>;strcpy<q,c>;}//判断函数intSel<charch,Stuff*p,Stuff*q>{ switch<ch>//实现各个关键字查找 { case'1':returnstrcmp<q->number,p->number><0||strcmp<q->con,p->number>==0;case'2':returnstrcmp<q->name,p->name><0||strcmp<q->con,p->name>==0;default:exit<0>; }}//查找函数Stuff*Search<Stuff*head>{ Stuff*p=NULL,*q;intflag;//查找判断charch,sh;//两个控制变量q=&a;while<1> { printf<"请输入要查找的条件:1.编号2.姓名0.退出\n">;scanf<"%c",&ch>;if<ch=='0'>break;if<ch<'1'||ch>'2'> { printf<"输入错误,请重新输入!\n">; continue; } getchar<>; printf<"请输入:">; gets<q->con>; p=head;//指向表头 flag=0; while<p!=NULL> { if<strcmp<q->con,p->number>==0||strcmp<q->con,p->name>==0> { printf<"员工信息如下:\n">; printf<"编号|姓名|性别|出生年月|学历|职务|电话|住址\n%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place>; printf<"是否需要:1.更改2.删除3.继续\n">; scanf<"%c",&sh>; if<sh=='1'> Change<head,p->number>;//调用更改函数 elseif<sh=='2'> head=Del<head,p->number>;//调用删除函数 flag=1; break; } p=p->next; } if<flag==0> printf<"没有找到该员工信息!\n">; } returnhead;}//更改函数Stuff*Change<Stuff*head,charn[10]>{ Stuff*p=head; intflag=0; if<head==NULL> printf<"信息表为空,请先建立信息表!\n">; else { while<p!=NULL> { if<!strcmp<p->number,n>> { printf<"找到员工,请输入新的信息:\n编号|姓名|性别|出生年月|学历|职务|电话|住址\n">; scanf<"%s%s%s%s%s%s%s%s",p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place>; printf<"员工信息如下:\n">; flag=1; } p=p->next; } if<flag==0> printf<"未找到该员工信息!\n">; } Show<head>;returnhead;}//删除函数Stuff*Del<Stuff*head,charn[10]>{ Stuff*p,*pr; intflag; flag=0; p=head,pr=head; if<head==NULL> printf<"未找到员工信息!\n">; else { while<strcmp<p->number,n>&&p->next!=NULL> { pr=p; p=p->next; } if<!strcmp<p->number,n>> { if<p==head> head=p->next; else pr->next=p->next; free<p>; printf<"删除成功!\n">; n--; } else printf<"未找到员工信息!\n">; } Show<head>; returnhead;}//输出函数voidShow<Stuff*head>{ Stuff*p=head; inti=1; if<head!=NULL> { printf<"员工信息如下:\n">; while<p!=NULL> { printf<"%d.%s%s%s%s%s%s%s%s\n",i++,p->num

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论