最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C语言课程设计报告职工信息管理系统设计

来源:动视网 责编:小OO 时间:2025-09-25 04:48:55
文档

C语言课程设计报告职工信息管理系统设计

职工信息管理系统设计一、设计任务课题:职工信息管理系统设计职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能(职工信息用文件保存)——输入职工信息浏览功能——输出查询和排序功能——算法按工资查询按学历查询等职工信息删除,修改功能。补充要求:1)整个系统均用c语言实现;2)可以利用数组,指针,链表来实现数据结构设计;3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;4
推荐度:
导读职工信息管理系统设计一、设计任务课题:职工信息管理系统设计职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能(职工信息用文件保存)——输入职工信息浏览功能——输出查询和排序功能——算法按工资查询按学历查询等职工信息删除,修改功能。补充要求:1)整个系统均用c语言实现;2)可以利用数组,指针,链表来实现数据结构设计;3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;4
职工信息管理系统设计

一、设计任务
课题:职工信息管理系统设计

职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职

工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:

系统以菜单方式工作

职工信息录入功能(职工信息用文件保存)——输入

职工信息浏览功能                      ——输出

查询和排序功能                        ——算法

           按工资查询

           按学历查询等

职工信息删除,修改功能。

补充要求:

1)整个系统均用c语言实现;

2)可以利用数组,指针,链表来实现数据结构设计;

3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;

4)系统的各个功能模块都用函数的形式来实现;

5)可以将信息保存在文件中读取出来。

二、系统设计方案
1.程序采用模块化设计,主函数为程序的入口,各模块,可分块调试,各模块由主函数控制调用。主函数的控制功能通过循环执行一个开关语句来实现。该开关语句的条件值为调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数。  

  2.应用高级语言程序设计中的基本控制结构,如选择和循环等,并且包含对文件的读、写等基本操作,在软件开发过程中应用了软件工程的基本理论。因此,系统的设计方法是结构化设计方法,开发手段是C语言。

  3.源程序运用多个函数,开头先进行函数声明,然后分别定义、调用各函数。

程序流程图

三、程序主要代码分析
/*下面定义职工信息结构*/

typedef struct worker

{

    int id;

    char name[20]; 

    char sex[3];

    int age;

    char edu[50];

    int wages;

    char adr[255];

    char phone[13]; 

}WORKER, *PWORKER;

//typedef struct WORKER *PWORKER;

typedef struct link

分析:我认为链表的使用正是本程序的最精彩的地方所在,较数组而言它的使用带来了很多优点:(1)空间的灵活分配,虽然地址不是连续的,但只要找到链表的头所有数据都可以迅速找到(2)可以灵活的插入或删除元素而不会像数组那样带来较多数据的移动

{

    WORKER w;

    struct link *next;

}LINK, *PLINK;

//typedef struct LINK *PLINK;

/*创建职工信息链表*/

PLINK create()

{

    PLINK p=(PLINK)malloc(sizeof(LINK));

    if(NULL!=p)

    {

p->next=NULL;

        return p;

    }

    printf("内存不足!\\n");

    return NULL;

}

/*显示程序界面文字*/ 

void message()

{   system("color 09f");/*设置当前窗口的背景色和前景色*/

分析:界面设计我运用了适当的标点使得界面变得清晰大方,背景色的添加也可给用户新的视觉效果

/* 0 = 黑色   8 = 灰色 

1 = 蓝色   9 = 淡蓝色 

       2 = 绿色   A = 淡绿色 

       3 = 浅绿色 B = 淡浅绿色 

       4 = 红色   C = 淡红色 

       5 = 紫色   D = 淡紫色 

       6 = 黄色   E = 淡黄色 

       7 = 白色   F = 亮白色*/ 

    system("cls"); 

    printf("\\************************************************\\n\\n");

    printf("\\>>>>>>>>>>>>>>欢迎进入职工管理系统<<<<<<<<<<<<<<\\n\\n");

    printf("\\************************************************\\n\\n");

    printf("\\ **************  Choose Function  *************\\n\\n");

    printf("\\ ************    帮助     请输入:0************\\n\\n");

    printf("\\ ************录入职工信息 请输入:1************\\n\\n");

    printf("\\ ************浏览职工信息 请输入:2************\\n\\n");

    printf("\\ ************查询职工信息 请输入:3************\\n\\n");

    printf("\\ ************删除职工信息 请输入:4************\\n\\n");   

    printf("\\ ************修改职工信息 请输入:5************\\n\\n"); 

    printf("\\ ************    清屏     请输入:6************\\n\\n");    

    printf("\\ ************    退出     请输入:-1***********\\n\\n");

    printf("\\************************************************\\n\\n");

    printf("\\************************************************\\n\\n");

}

/*录入职工信息*/ 

int add(PLINK p)

{

分析:周密地考虑到了内存不足以及职工号已存在导致的录入失败,给予用户适当的提示使得设计更加人性化

    PLINK h = NULL;

    PLINK q=(PLINK)malloc(sizeof(LINK));

    if(NULL==q)

    {

        printf("录入失败提示:内存不足!\\n");

        return -1;

    }

    printf("请输入职工号(数字):");

scanf("%d",&q->w.id);

h=p->next;

    while(h)

    {

if(h->w.id==q->w.id)

        {

            free(q);

            printf("录入失败提示:此职工号已经存在!\\n");

            return -1;

        }

h=h->next;

分析:适当的录入提示,更加方便了用户的录入操作

    }

    printf("请输入职工姓名(文字):");

scanf("%s",&q->w.name);

    printf("请输入职工性别(文字):");

scanf("%s",&q->w.sex);

    printf("请输入职工年龄(数字):");

scanf("%d",&q->w.age);

    printf("请输入职工学历(文字):");

scanf("%s",&q->w.edu);

    printf("请输入职工工资(数字):");

scanf("%d",&q->w.wages);

    printf("请输入职工住址(文字):");

scanf("%s",&q->w.adr);

    printf("请输入职工电话(文字):");

scanf("%s",&q->w.phone);

q->next=p->next;

p->next=q;

    printf(".^_^.录入成功!.^_^.\\n");

    return -1;

}

/*按姓名查询*/ 

PLINK findname(PLINK p,char *name)

{

message();

printf("按姓名 查询\\n");

printf("职工号\姓名\性别\年龄\学历\工资\住址\电话\\n");

分析:链表、结构指针的使用大大方便了信息的查找定位。值得注意的是判断两字符串内容是否相同时需用到strcmp函数!

while(NULL!=p->next)

{

if(0==strcmp(p->next->w.name,name))

{

printf("%d\%s\%s\%d\%s\%d\%s\%s\\n

p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,

p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);

return p;

}

p=p->next;

}

printf(".^_^.查询结束!.^_^.\\n");

return NULL;

}

/*按职工号删除职工信息*/

int del(PLINK p,int id)

{

message();

printf("按职工号删除职工信息\\n");

while(NULL!=p->next)

{

if(p->next->w.id==id)

{

PLINK q=p->next;

p->next=p->next->next;

free(q);

printf(".^_^.删除成功!.^_^.\\n");

return 1;

}

p=p->next;

}

printf("没有你输入的职工号!\\n");

return -1;

}

分析:及时的在程序结束时释放内存,避免占用多余的空间充分显示出了链表使用的优越性,占用最小的空间满足用户更多的需求

/*程序结束释放内存*/

void release(PLINK p)

{

PLINK q;

while(NULL!=p->next)

{

q=p;

p=p->next;

free(q);

}

free(p);

}

/*查询调用*/

分析:此处是我对源程序的改进处之一,用此函数调用另外3种查询方式使得界面变得更清晰简单些,虽然只是小小switch函数的使用但会使用户的使用更具目的指向性

void search()

int id;

char name[20];

char str[20];

PLINK pworker;

int l;

printf("\\\\*姓名查找按:1*\\n");

printf("\\\\*学历查找按:2*\\n");

printf("\\\\*职工号查按:3*\\n");

scanf("%d",&l);

if(l>0&&l<4)

{switch(l)

{

case 1:printf("请输入要查询的职工姓名:");

       scanf("%s",name);

       findname(pworker,name);

       break; 

case 2:printf("请输入要查询的职工学历: ");

       scanf("%s", str);

       find_sr(pworker, str);

       break;

case 3:printf("请输入要查询的职工号:");

       scanf("%d",&id);

       findid(pworker,id);

       break;

}

printf("\\n\\n选择完毕!!!");

}

else printf("\\\\输入有误!!!");

}

/*修改职工信息*/

int modify(PLINK p)

{   int id;

    PLINK q; 

    PLINK h = NULL;

分析:此修改函数是我对原函数的一个补充,弥补了原程序修改功能的缺失,但相比较别人的函数似乎浪费了许多资源,单个信息的修改根本不需要如此大费周章,急需一改进——就是对需改进处的准确定位。当然相比较我原本打算的先删除再录入还是有了一定的进步之出

    printf("请输入职工号(数字):");

    scanf("%d",&id);

h=p->next;

    while(h)

    {

if(h->w.id==id)

        {

            break;

        }

h=h->next;

    }

    if (h == NULL)

    {

        printf("找不到此职工,请重试\\n");

        return -1;

    }

    printf("请输入职工姓名(文字):");

scanf("%s",&h->w.name);

    printf("请输入职工性别(文字):");

scanf("%s",&h->w.sex);

    printf("请输入职工年龄(数字):");

scanf("%d",&h->w.age);

    printf("请输入职工学历(文字):");

scanf("%s",&h->w.edu);

    printf("请输入职工工资(数字):");

scanf("%d",&h->w.wages);

    printf("请输入职工住址(文字):");

scanf("%s",&h->w.adr);

    printf("请输入职工电话(文字):");

scanf("%s",&h->w.phone);

q->next=p->next;

p->next=q;

    printf(".^_^.修改成功!.^_^.\\n");

    return -1;

}

int main()

{

    

int cmd=0;

分析:主函数实现了控制调用其他函数的功能,一个while循环给用户以多次更改的机会,从而更好的满足用户的不同要求。swith条件语句,编写简单明了,恰到好处的考虑到了用户的需求

int id;

char name[20];

char str[20];

PLINK pworker;

if(!(pworker=create()))

{

exit(0);

}

while(cmd!=-1)

{

switch(cmd)

{

case 0: message(); break;

case 1: add(pworker); break;

case 2: show(pworker); break;

case 3: search(); break; 

case 4: printf("请输入要删除的职工号:");

        scanf("%d",&id);

        del(pworker,id);

        break;

case 5: modify(pworker); break;

case 6: message(); break;

}

printf("请输入操作命令数字:\\n");

scanf("%d",&cmd);

}

printf(".^_^.谢谢使用!.^_^.\\n");

release(pworker);

return 0;

}

四、程序调试中出现的问题及其解决方法
(1)由于开始不能完全看懂链表在各个函数中是怎样调用的,以致编写查询调用search()函数时,一再出现什么什么未定义的状况

     解决方法:加入“char name[20]; char str[20]; PLINK pworker;”对未定义的结构、数组什么的定义一下就完成了

(2)计划加入背景色时,对“system("color 09f");”应该添加的位置很难琢磨

     解决方法:经查阅资料了解该函数可能添加的位置,最终放在了界面设计message()函数中,终于可以正常运行了

(3)各种变量的运用需要注意,稍对程序进行改动就会出现各种变量未定义

     解决方法:再次通看源程序,分清外部变量、局部变量

五、改进意见与收获体会
改进意见:

(1)运行程序时,输入信息后,再关闭,输入的数据会丢失,所以急需一个实时保存的函数,写入一文件中,可以下次使用时打开读取

(2)修改函数中需要一定位功能避免需要对一个记录整体修改,耗时又增大了继续录入错误的可能性

(3)界面设计可以更加灵活一些,加入动画或是什么的。或者可以考虑利用书中提供的下拉菜单的方式使使用更方便便捷

(4)对不同用户进行不同的登录方式或许会更加实用,可以分普通职工用户、高层管理人员、系统管理人员,对不同用户提供更据针对性的服务,比如职工主要就是浏览查询个人资料,高层管理可查询了解所有职工的信息,系统管理人员用到修改、删除等功能

(5)加入登录时的密码保护,便于保护各个用户的私人资料不外漏,这样会使程序更加人性化

收获体会:

    回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论到实践,一星期里,我学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的实际动手能力和思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,链表,文件,循环,…半个学期的学习以及这一周的课程设计,我的C语言学习出现了很多的问题,可以看到基础的薄弱,通过请教同学,讨论,问题都一一得到了解决。对于模块设计一开始真不知道从何下手,后来看了许多别人的设计才有所了解,这过程中最难的就是修改这两个模块。开始编写修改时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,多个程序的参考结合,终于大功告成。

当然我也充分发现每个软件编程的不易,对用户多角度的考虑,对函数的兼容性,高效性,易读性等一系列问题的考虑使我学会了更加周密的思考问题。也使我对C语言这门学科更深刻的认识,她不仅是一门学科,更重要的是如何运用到实际生活中。今后,我应该会考虑参加一定的科创活动,更多的运用C语言。

文档

C语言课程设计报告职工信息管理系统设计

职工信息管理系统设计一、设计任务课题:职工信息管理系统设计职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能(职工信息用文件保存)——输入职工信息浏览功能——输出查询和排序功能——算法按工资查询按学历查询等职工信息删除,修改功能。补充要求:1)整个系统均用c语言实现;2)可以利用数组,指针,链表来实现数据结构设计;3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;4
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top