C语言设计课程设计职工信息管理系统说明书

上传人:1666****666 文档编号:38837801 上传时间:2021-11-09 格式:DOC 页数:25 大小:222KB
收藏 版权申诉 举报 下载
C语言设计课程设计职工信息管理系统说明书_第1页
第1页 / 共25页
C语言设计课程设计职工信息管理系统说明书_第2页
第2页 / 共25页
C语言设计课程设计职工信息管理系统说明书_第3页
第3页 / 共25页
资源描述:

《C语言设计课程设计职工信息管理系统说明书》由会员分享,可在线阅读,更多相关《C语言设计课程设计职工信息管理系统说明书(25页珍藏版)》请在装配图网上搜索。

1、课程设计说明书一 引言21世纪,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活中的各个领域。使原本的旧的管理方法越来越不适应现代社会的发展。许多还停留在以前的手工操作。这大大的阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,企事业职工信息管理类的智能化更加重要,人工的职工信息管理已经不能满足我们的需求,查询困难等缺点是人工的试验设备管理所不能克服的。在此情况下,就需要一个程序化的自动的设备信息管理系统来满足人们的需求。在C语言的平台下实现,用户可以方便的进行各项操作。C语言是一种程序设计语言1,早在20世纪90年代,C语言表现出了强劲的生命力

2、,C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址2,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点3。因此可以广泛地移植到了各类型计算机上,从而形成了多种版本的C语言,几乎应用了各个领域,如科学,医药,航天等多个方面。C语言设计具有重要的意义,可以提高经济的快速发展,促进各行各业的发展。从而

3、创造出更高的价值。本次设计采用结构体数组和结构体指针,完成了对数据的添加、显示、查找、删除、修改等功能。二 需求分析职工信息用文件存储,提供文件的输入输出操作;要能够完成职工信息的录入和修改,需要提供职工信息添加和修改操作;实现对职工信息查询需要提供查找操作,职工信息的查询可根据职工号 、学历、工资等多种方式查询修改;另外还要根据键盘式选择菜单以实现功能选择。职工信息管理系统包括:职工号、姓名、性别、年龄、学历、工资、住址、电话。包括插入、删除、添加等功能,为职工的有效管理提供一个方便快捷的平台。2.1 录入用户根据提示功能选择添加即可实现对职工的职工号号、名字、性别、年龄、学历、工资、住址、

4、电话,进行一次性输入多条设备的信息记录。2.2 查找可以按提示输入要查找的职工号或学历,然后系统将按职工号或学历逐一进行核对,当满足要求时,输出该职工的全部信息;没有时显示无记录。2.3 删除该模块提供的按职工号进行查找,当查找到后,通过if-else嵌套结构来实现,将满足要求的设备数组成员用下一个数组的相应的成员进行替代,以此来实现删除。2.4 修改修改职工的信息:提示用户输入要进行修改的职工号,然后系统就进行查找,如果在数组中存有该职工的信息,则提示用户输入要修改的职工的新信息同时显示以前的信息,以防止修改错误。并且可以再次进行修改。2.5 显示显示功能是根据数组中的职工号是否为空来进行的

5、,通过if语句来实现。当数组中某个成员的职工号不为空时,就输出;否则就跳过。依次来显示全部职工的信息三 总体设计进行总体设计的目的是用比较抽象概括的方式确定系统如何完成预定的功能,进而确定组成系统的每个模块的结构和功能,从而实现C语言的编码的实现。3.1 总体设计思想本系统主要应用结构化的设计思想实现职工信息管理系统的添加、修改、删除等典型管理功能。在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序结构。系统的设计方法是结构化设计方法,采用C语言进行开发。本次设计的职工信息系统,采用创建一个结构体数组,用来记录设备的详细信息,然后再通过对数组的各种操作来完成对职工信息的

6、添加、删除、修改、查找等功能。有效实现添加、修改、删除等功能,在程序设计过程中运用了结构体数组的知识,以完成对职工信息的录入、显示等功能。职工信息录入模块职工信息查找模块职工信息删除模块职工信息修改模块职工信息管理系统设计职工信息显示模块图3-1 系统总体功能结构图3.2 系统功能结构图职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等。其结构图如3-2所示。职工详细信息学历电话住址工资年龄性别姓名职工号图3-2 职工详细信息图四 详细设计本次设计采用逐个模块设计的方法,把一个复杂程序设计问题划分为七个模块,即:职工信息添加录入,职工信息修改,职工信息显示,职工信息查找,职工信息删

7、除,职工信息插入和一个主函数模块。4.1 主函数模块在主函数中了while循环和switch 选择两个函数,通过switchcase结构实现菜单目录的择功能。其主体流程图如下图4-1所示。开始显示一系列功能选择输入number判断 是否是0到8根据n值调用各功能模块函数结束NO图4-1 系统的选择流程图图4-2 系统选择界面图系统的选择实现了各个功能模块之间的有效切换,使系统的使用更加方便快捷,给职工信息的管理带来极大方便,其工作的界面如4-2所示。4.2 实验设备信息录入添加模块利用宏定义,定义所声明的结构体数组的大小,while输入职工信息依次赋给结构体中的成员,在一个实验设备信息录入添加

8、完毕后提示是否继续。选择继续可以继续添加录入;选择退出就可以直接返回主界面,进行其它的功能选择。其设计代码如下所示。void Add(Link l) Node *p,*r,*s; char zhigonghao10; int flag=0;r=l; s=l-next; while(r-next!=NULL) r=r-next; while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,zhigonghao); if(strcmp(zhigonghao,0)=0) break; while(s) if(strcmp(s-data.zhigonghao,zhigon

9、ghao)=0) printf(=提示:职工号为%s的职工已经存在,若要修改请你选择4 修改!n,zhigonghao); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.zhigonghao,zhigonghao); printf(请你输入姓名:); scanf(%s,p-data.name); getchar(); printf(请你输入性别:); scanf(%s,p-data.sex); g

10、etchar(); printf(请你输入年龄:); scanf(%s,&p-data.nianling); getchar(); printf(请你输入学历:); scanf(%s,&p-data.xueli); getchar(); printf(请你输入工资:); scanf(%s,&p-data.gongzi); getchar(); printf(请你输入住址:); scanf(%s,&p-data.zhuzhi); getchar(); printf(请你输入电话号码:); scanf(%s,&p-data.tel); getchar(); p-next=NULL; r-next=

11、p; r=p; shoudsave=1; 其工作的界面如4-3所示。图4-3 信息录入界面图4.3 实验设备信息查找模块本模块按职工号进行查找,用for语句遍历数组,字符串比较函数对输入的信息与结构体存储的成员信息进行比对,若相等则输出;否则显示无记录;其主要程序代码如下所示。void Qur(Link l) int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按职工号查找n=3按学历查找n); scanf(%d,&sel); if(sel=1) printf(请你输

12、入要查找的职工号:); scanf(%s,findmess); p=Locate(l,findmess,zhigonghao); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=3) printf(请你输入要查找的学历:); scanf(%s,findmess); p=Locate(l,findmess,xueli); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); wh

13、ile(1) p=Locate(p,findmess,xueli);if(p=NULL)break; printe(p); printstart(); else Nofind(); else Wrong(); 其工作的界面如4-4所示。图4-4 信息查找界面图4.4 实验设备信息删除模块在删除之前,要输入要删除的信息的职工号,然后在进行查找,查找到以后,利用for循环,依次将该数组元素的后位向前移动覆盖,形成删除功能。其删除程序的部分语句如下:void Del(Link l) int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=

14、提示:没有资料可以删除!n); return; printf(n=1按职工号删除n=2按姓名删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,zhigonghao); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该职工已经成功删除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(请你输入要删除的姓名

15、:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该职工已经成功删除!n); shoudsave=1; else Nofind(); else Wrong(); 其工作的界面如4-5所示。图4-5 信息删除界面图4.5 实验设备信息修改模块利用for语句对结构体进行查找,if语句进行判断,找到要修改的信息,否则提示不存在;其主要程序代码如下所示。void Modify(Link l) Node *

16、p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的职工号:); scanf(%s,findmess); p=Locate(l,findmess,zhigonghao); if(p) printf(请你输入新职工号(原来是%s):,p-data.zhigonghao); scanf(%s,p-data.zhigonghao); printf(请你输入新姓名(原来是%s):,p-data.name); scanf(%s,p-data.name); getchar(); printf(请你输

17、入性别(原来是%s):,p-data.sex); scanf(%s,p-data.sex); printf(请你输入新的年龄(原来是%s):,p-data.nianling); scanf(%s,&p-data.nianling); getchar(); printf(请你输入新的学历(原来是%s):,p-data.xueli); scanf(%s,&p-data.xueli); getchar(); printf(请你输入新的工资(原来是%s):,p-data.gongzi); scanf(%s,&p-data.gongzi); getchar(); printf(请你输入新的住址(原来是%

18、s):,p-data.zhuzhi); scanf(%s,&p-data.zhuzhi); getchar(); printf(请你输入新的电话号码(原来是%s):,p-data.tel); scanf(%s,&p-data.tel); printf(n=提示:资料修改成功!n); shoudsave=1; else Nofind(); 对职工信息的修改可以实现信息的正确性,实时性。而且其操作简单、快捷;其工作的界面如4-6所示。图4-6 信息修改界面图4.6 实验设备信息显示模块本模块按职工号是否为零进行显示。使用字符串比较函数比较各成员的职工号,当编号为零时,跳过;不为零时就显示出全部信息

19、。信息的显示可以显示全部的信息,可以有进行设备信息的显示核对,其主要程序代码如下所示。void Disp(Link l) int count=0;Node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); 它的操作界面如4-7所示。图4-7 信息显示界面图五 总结本次设计运用了所学的模块设计方法、结构体、循环语句、选择语句

20、等实现了职工的信息管理系统的添加、删除、修改、查找等功能,实现了对职工信息的录入、对输入信息的查询、对输入信息的修改、对输入信息的输出、对输入信息的删除等。在为期一周的C语言课程设计中,充分应用了所学的知识,但是由于知识掌握的不够深入,且知识学的不全等原因导致在课程设计过程中遇到很多困难。尤其是在进行录入的信息汇总方面,耗费了很多的时间与精力。同时,在各功能的设计过程中有好多问题考虑还不够全面且功能不够理想全面,没有实现对实验设备信息的排序具体化、保存、插入的有效性和随意性功能。通过这次课程设计,使我对C语言有了更进一步的认识和了解,使自己把知识进行了充分的应用,把知识更好的学以致用。明白了要

21、想学好C语言重在实践,要通过不断的上机操作才能更好地学习它,我也发现自己的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习有所改进;再有对C语言的一些标准库函数不太了解,对函数调用的正确使用不够熟悉,对C语言中经常出现的错误不了解,明白了学好任何技术方面的知识都重在实践。这次课程设计不仅亲自修改和编辑程序,通过本次课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!也学习到了很多的哲理,懂得如何制定计划,怎么样去进行这个计划,掌握了如何去克服自己在进行实践中的不良情绪。总之,此次课程设计让我

22、获益良多,整体来说是比较成功的。参考文献1 谭浩强,张基温C语言程序设计教程(第3版)M北京:高等教育出版社,20062 吕凤煮C语言基础教程基础理论与案例M北京:清华大学出版社,20053 黄明,梁旭,万洪莉C语言课程设计M北京:电子工业出版社,2006附录#include #include #include int shoudsave=0; struct zhigong char zhigonghao10; /职工号 char name20; /姓名char sex10; /性别char nianling22; /年龄char xueli22; /学历char gongzi22; /工资c

23、har zhuzhi22; /住址char tel22; /电话; typedef struct node struct zhigong data; struct node *next; Node,*Link; void menu() printf(*); printf(t1录入职工资料ttttt2删除职工资料n); printf(t3查找职工资料ttttt4修改职工资料n); printf(t5显示职工资料ttttt6保存职工资料n); printf(t0退出系统n); printf(*n); void printstart() printf(-n); void Wrong() printf

24、(n=提示:输入错误!n); void Nofind() printf(n=提示:没有找到该职工!n); void printc() / 本函数用于输出中文 printf(职工号t 姓名t 性别t 年龄t 学历t 工资t 电话号码t); void printe(Node *p)/本函数用于输出英文 printf(%-9s%5st%5st%5st%5st%5stt%st n,p-data.zhigonghao,p-data.name,p-data.sex,p-data.nianling,p-data.xueli,p-data.gongzi,p-data.zhuzhi,p-data.tel); N

25、ode* Locate(Link l,char findmess,char nameorzhigonghao) /该函数用于定位连表中符合要求的接点,并返回该指针 Node *r; if(strcmp(nameorzhigonghao,zhigonghao)=0) /按职工号查询 r=l-next; while(r!=NULL) if(strcmp(r-data.zhigonghao,findmess)=0) return r; r=r-next; else if(strcmp(nameorzhigonghao,name)=0) /按姓名查询 r=l-next; while(r!=NULL)

26、if(strcmp(r-data.name,findmess)=0) return r; r=r-next; else if(strcmp(nameorzhigonghao,xueli)=0) /按学历查询 r=l-next; while(r!=NULL) if(strcmp(r-data.xueli,findmess)=0) return r; r=r-next; return 0; void Luru(Link l) /录入职工 Node *p,*r,*s; char zhigonghao10; int flag=0;r=l; s=l-next; while(r-next!=NULL) r

27、=r-next; /将指针置于最末尾 while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,zhigonghao); if(strcmp(zhigonghao,0)=0) break; while(s) if(strcmp(s-data.zhigonghao,zhigonghao)=0) printf(=提示:职工号为%s的职工已经存在,若要修改请你选择4 修改!n,zhigonghao); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Nod

28、e *)malloc(sizeof(Node); strcpy(p-data.zhigonghao,zhigonghao); printf(请你输入姓名:); scanf(%s,p-data.name); getchar(); printf(请你输入性别:); scanf(%s,p-data.sex); getchar(); printf(请你输入年龄:); scanf(%s,&p-data.nianling); getchar(); printf(请你输入学历:); scanf(%s,&p-data.xueli); getchar(); printf(请你输入工资:); scanf(%s,&

29、p-data.gongzi); getchar(); printf(请你输入住址:); scanf(%s,&p-data.zhuzhi); getchar(); printf(请你输入电话号码:); scanf(%s,&p-data.tel); getchar(); /信息输入已经完成 p-next=NULL; r-next=p; r=p; shoudsave=1; void Chazhao(Link l) /查找职工 int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n

30、=1按职工号查找n=2按学历查找n); scanf(%d,&sel); if(sel=1)/职工号 printf(请你输入要查找的职工号:); scanf(%s,findmess); p=Locate(l,findmess,zhigonghao); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /学历 printf(请你输入要查找的学历:); scanf(%s,findmess); p=Locate(l,findmess,xueli)

31、; if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); while(1) p=Locate(p,findmess,xueli);if(p=NULL) break; printe(p); printstart(); else Nofind(); else Wrong(); void Shanchu(Link l) /删除 int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:没有资料可以删除!n); return; printf(n=1按职工号删除n=2按姓名

32、删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,zhigonghao); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该职工已经成功删除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(请你输入要删除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,na

33、me); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该职工已经成功删除!n); shoudsave=1; else Nofind(); else Wrong(); void Xiugai(Link l) /修改 Node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的职工号:); scanf(%s,findmess); p=Locate(l,findmess,zhigongh

34、ao); if(p) printf(请你输入新职工号(原来是%s):,p-data.zhigonghao); scanf(%s,p-data.zhigonghao); printf(请你输入新姓名(原来是%s):,p-data.name); scanf(%s,p-data.name); getchar(); printf(请你输入性别(原来是%s):,p-data.sex); scanf(%s,p-data.sex); printf(请你输入新的年龄(原来是%s):,p-data.nianling); scanf(%s,&p-data.nianling); getchar(); printf(

35、请你输入新的学历(原来是%s):,p-data.xueli); scanf(%s,&p-data.xueli); getchar(); printf(请你输入新的工资(原来是%s):,p-data.gongzi); scanf(%s,&p-data.gongzi); getchar(); printf(请你输入新的住址(原来是%s):,p-data.zhuzhi); scanf(%s,&p-data.zhuzhi); getchar(); printf(请你输入新的电话号码(原来是%s):,p-data.tel); scanf(%s,&p-data.tel); printf(n=提示:资料修改

36、成功!n); shoudsave=1; else Nofind(); void Xianshi(Link l) /显示 int count=0;Node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Save(Link l) FILE* fp;Node *p; int flag=1,count=0; fp=f

37、open(c:zhigong,wb); if(fp=NULL) printf(n=提示:重新打开文件时发生错误!n); exit(1); p=l-next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p-next; count+; else flag=0; break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/连表 FILE *fp; /文件指针 int sel; char ch; char ji

38、an; int count=0; Node *p,*r; printf(tttt职工信息管理系统nttttn); l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l; fp=fopen(C:zhigong,rb); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=Y) fp=fopen(C:zhigong,wb); else exit(0); printf(n=提示:文件已经打开,正在导入记录.n); while(!feof(fp) p=(Node

39、*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /将文件的内容放入接点中 p-next=NULL; r-next=p; r=p; count+; fclose(fp); /关闭文件 printf(n=提示:记录导入完毕,共导入%d条记录.n,count); while(1) menu(); printf(请你选择操作:); scanf(%d,&sel); if(sel=0) if(shoudsave=1) getchar(); printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) Save(l); printf(n=提示:你已经退出系统,再见!n); break; switch(sel) case 1:Luru(l);break; /录入职工 case 2:Shanchu(l);break;/删除职工 case 3:Chazhao(l);break;/查找职工 case 4:Xiugai(l);break;/修改职工 case 5:Xianshi(l);break;/显示职工 case 6:Save(l);break;/保存职工 default: Wrong();getchar();break;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!