员工信息管理系统数据结构复习课程.docx

上传人:b****5 文档编号:6890316 上传时间:2023-01-12 格式:DOCX 页数:20 大小:336.28KB
下载 相关 举报
员工信息管理系统数据结构复习课程.docx_第1页
第1页 / 共20页
员工信息管理系统数据结构复习课程.docx_第2页
第2页 / 共20页
员工信息管理系统数据结构复习课程.docx_第3页
第3页 / 共20页
员工信息管理系统数据结构复习课程.docx_第4页
第4页 / 共20页
员工信息管理系统数据结构复习课程.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

员工信息管理系统数据结构复习课程.docx

《员工信息管理系统数据结构复习课程.docx》由会员分享,可在线阅读,更多相关《员工信息管理系统数据结构复习课程.docx(20页珍藏版)》请在冰豆网上搜索。

员工信息管理系统数据结构复习课程.docx

员工信息管理系统数据结构复习课程

 

员工信息管理系统(数据结构)

 

员工信息管理系统课程设计报告

 

系别:

计算机与信息工程系

班级:

B080501

姓名:

李海鹏

学号:

B08050128

指导教师:

张红霞

课设时间:

2010-6-21到2010-6-25

 

摘要

员工信息管理系统属于信息管理系统。

员工信息管理是每个公司不可缺少的。

系统用C程序开发,主要在于建立好一个合适的数据结构,并要求程序简洁实用。

本系统利用C语言简洁、灵活,数据结构丰富等特点,编写适合公司使用的系统。

整个系统使用起来也比较方便,入手简单,操作方便。

论文主要介绍了程序设计过程、设计方案以及测试过程,重点讲解了设计过程中的思想,技术解决方案等等。

关键字:

员工信息管理,C程序,数据结构

 

 

前言

本课程设计旨在理论学习和基础实验的基础上,开发规模较大的程序,掌握应用计算机编程解决实际问题的基本方法,熟悉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主要功能模块

依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的录入、增加、删除、查找、更改和数据的排序等功能模块。

 

图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-2

图3-2链式存储结构

 

第4章程序详细设计及实现

4.1输入函数

函数原型:

Stuff*App(Stuff*head);

函数功能:

通过输入各项数据给数据元素,来建立一个数据表。

算法要点:

(1)用循环控制输入记录;

(2)为每一结构体数据项输入数据;

(3)返回输入记录数。

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);

函数功能:

按照指定关键字,对相应员工信息进行查找。

算法要点:

(1)输入字段和信息相应字段的比较;

(2)函数中调用删除和更改函数。

4.5更改函数

函数原型:

Stuff*Change(Stuff*head,charn[10]);

函数功能:

输入员工编号,查找到员工信息,对其信息进行更新。

算法要点:

(1)信息查找;

(2)信息重新录入及保存。

 

4.6删除函数

函数原型:

Stuff*Del(Stuff*head,charn[10]);

函数功能:

查找到要删除员工的相应信息,并将其从表中永久的删除。

算法要点:

(1)按关键字查找信息;

(2)链表中删除节点信息,并释放节点空间。

 

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->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);

p=p->next;

}

}

else

{

printf("信息为空!

\n");

}

}

//释放函数

voidFre(Stuff*head)

{

Stuff*p;

while(head!

=NULL)

{

p=head;

head=head->next;

free(p);

}

}

voidmain()

{

charIndex[10];

Stuff*head=NULL;//链表头指针定义

printf("---------------欢迎使用《员工信息管理系统》-------------\n");

Sleep(1000);

while

(1)

{

switch(Menu())

{

case1:

printf("请输入员工信息,直接输入'#'结束\n");

head=App(head);

break;

case2:

Sort(head);

break;

case3:

head=Search(head);

break;

case4:

Show(head);

break;

case5:

printf("请输入员工编号:

");

scanf("%s",Index);

Change(head,Index);

break;

case6:

printf("请输入员工编号:

");

scanf("%s",n);

head=Del(head,Index);

break;

case0:

printf("-------------------欢迎下次光临!

-----------------\n");

Sleep(2000);

exit(0);

break;

default:

printf("输入错误,请重新输入!

\n");

}

pri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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