简单的职工管理系统设计.doc_第1页
简单的职工管理系统设计.doc_第2页
简单的职工管理系统设计.doc_第3页
简单的职工管理系统设计.doc_第4页
简单的职工管理系统设计.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

简单的职工管理系统设计一、问题描述对单位的职工进行管理,包括录入、删除、查询、修改、排序、显示软件信息等功能。1.要求职工信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象录入职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中按条件查询符合某些条件的职工。(4)修改:检索某个职工对象,按条件对其某些属性进行修改。(5)排序:按名字首字母对职工信息对职工对象文件进行排序。(6)显示:显示软件信息等功能。二、设计1. 信息输入:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。2. 信息处理:由于职工会存在流动周转,职工的信息会有所变化,因此该算法实现了员工的录入、删除、查询、修改、排序等功能3. 信息输出:根据不同的操作,输出相应数据。退出系统4. 结构设计 录入职工职工信息输出职工排序职工修改职工查询删除职工职工信息输入清屏软件信息5.函数类型函数名功能 struct worker定义链表结点 void chushi()每次开始操作后,自动把文件里的数据写入链表 void input()职工信息的录入 void delet()职工信息的删除(按姓名删除) void search()职工信息查询(按姓名、职位、或者电话查询) void search_name()按姓名查询职工信息 void search_post()按职位查询职工信息 void search_tele()按电话查询职工信息 void change()职工信息的修改(按各种条件修改) void change_name()修改职工的姓名信息 void change_sex()修改职工的性别信息 . void change_tele()修改职工的电话信息 void inorder()按职工名字首字母进行排序(升序) void display(struct worker* qd)特定职工信息显示 void cx()将链表中的数据写入文件 void rjxx()显示软件信息6. 函数间的调用(主函数内)核心代码void main()int n;QD = ( struct worker* )malloc( sizeof( struct worker ) );QD-next = NULL;chushi();do scanf(%d,&n);while( n 8 | n name,qname);scanf(%s,qname);strcpy(p-sex,qname); scanf( %s,qname);strcpy(p-birday,qname);scanf( %s,qname);strcpy(p-workday,qname);scanf( %s,qname);strcpy(p-edu,qname);scanf( %s,qname);strcpy(p-post,qname);scanf( %s,qname);strcpy(p-add,qname);scanf( %s,qname);strcpy(p-tele,qname);p-next = QD-next;QD-next = p;scanf(%d,&wu );printf(nn);system(CLS);while( wu = 1 );。3. 删除职工信息(1)核心代码void delet()struct worker *qd,*qb;char qname20;int wu,n;dowu=1;scanf(%s,qname);printf(n);qb = QD;for(qd=QD-next;qd!=NULL;qb = qd,qd=qd-next)if(strcmp(qd-name,qname)=0)break;if(qd=NULL)scanf(%d,&wu);system(CLS);if(wu)return;elsedisplay(qd);scanf(%d,&n);if(n=1)qb-next=qd-next;free(qd);if(n=2)return;scanf(%d,&wu);if(wu)return;while(wu=0);4. 查询职工信息(1) 核心代码查询部件(以按名字查询为例)void search_name()struct worker* qd;char qname20;int wu,flag=0;doscanf(%s,qname);for( qd = QD-next;qd != 0;qd = qd-next )if( strcmp( qname,qd-name) =0)if(flag=0)flag=1;if(flag=1)display(qd);if(flag=0).scanf(%d,&wu);system(CLS);if(wu)return;while(wu=0);查找主代码void search()int n,wu=0;doscanf(%d,&n);if(n=1&nname,qname);scanf(%d,&n);system(CLS);return;修改主代码void change()struct worker* qd;char qname20;int n;doscanf(%s,qname);for( qd = QD-next;qd != 0;qd = qd-next )if( strcmp( qname,qd-name ) =0)break;if(qd=NULL)scanf(%d,&n);elsedisplay(qd);scanf(%d,&n);while(n=9)scanf(%d,&n);switch(n)case 1:change_name(qd);return;case 2:change_sex(qd);return;case 3:change_birday(qd);return;case 4:change_workday(qd);return;case 5:change_edu(qd);return;case 6:change_post(qd);return;case 7:change_add(qd);return;case 8:change_tele(qd);return;case 9:return;while(n!=9);找不到所查询的信息后,找到所查询的信息后输入1(选择修改姓名)5. 给职工信息排序(1) 核心代码void inorder()struct worker *p,*q,*pp,*last;int n;last=QD;scanf(%d,&n);if(!n)return;while(last-next!=NULL)last=last-next;while(last!=QD-next)pp=QD;p=pp-next;while(p!=last)q=p-next;if(strcmp(p-name,q-name)0)pp-next=q;p-next=q-next;q-next=p;if(last=q)last=p;pp=(strcmp(p-name,q-name)next;last=pp;scanf(%d,&n);system(CLS);6. 删除职工信息(1) 核心代码void delet()struct worker *qd,*qb;char qname20;int wu,n;dowu=1;scanf(%s,qname);qb = QD;for(qd=QD-next;qd!=NULL;qb = qd,qd=qd-next)if(strcmp(qd-name,qname)=0)break;if(qd=NULL)scanf(%d,&wu);if(wu)return; else display(qd);scanf(%d,&n);printf(n);if(n=1)qb-next=qd-next;free(qd);if(n=2)return; scanf(%d,&wu);if(wu) return; while(wu=0);7. 显示软件信息8. 初始化(1)核心代码void chushi()struct worker *p;char qdname20;int wu;FILE *fp;if(fp=fopen(职工数据.txt,r)=NULL) printf(Error!n); exit(0); while(fscanf(fp,%s,qdname)!=EOF) /fscanf(fp,%s,qdname);p = ( struct worker* )malloc( sizeof( struct worker ) );p-next=NULL;if( p = NULL )return;strcpy( p-name,qdname );fscanf( fp,%s,p-sex );fscanf( fp,%s,p-birday );fscanf( fp,%s,p-workday );fscanf( fp,%s,p-edu);fscanf( fp,%s,p-post);fscanf( fp,%s,p-add);fscanf( fp,%s,p-tele);p-next = QD-next;QD-next = p;fscanf(fp,%d,&wu );fclose(fp);9. 数据写入文件(1)核心代码void cx() FILE *fp;struct worker *q;fp=fopen(职工数据.txt,w);for( q = QD-next;q !=NULL;q = q-next )fprintf(fp,%s %s %s %s %s %s %s %s n,q-name,q-sex,q-birday,q-workday,q-edu,q-post,q-add,q-tele);fclose(fp);8.问题分析及解决1) 首先是一些简单的问题。一开始把电话以数字的形式存入,后来为了方便起见,统一换成了字符串类型。2) 最大的问题是文件数据的读入以及读出。由于是上个学期的知识并且不扎实,一开始根本无从下手。后来翻了一下书,然后把录入功能这一块的数据读入文件的代码写出来了,但是后来根本不知道要去初始化(也就是把文件里的数据读入链表里),结果出现了乱码。3) 初始化那一块我是参考网上的一段代码硬着头皮写的,后来还是出了些小问题。起先是以文件结束作为条件,后来我去请教了学长,最后以fscanf(fp,%s,qdname)!=EOF做为条件解决了问题。4) 对于删除、修改以及排序等操作,链表里的数据很容易修改,但是文件里的数据我一开始不知道怎么去修改。后来我就去问了老师。老师说,把链表里的数据都修改之后,最后把链表里的数据重新读入文件就可以了,真是一语惊醒梦中人。后来顺利解决了。4 使用说明和作业小结1) 使用说明: 进入职工管理系统,首先看到的就是“吃货公司职工管理系统v1.3”的字样,然后提示:“请输入相应的数字完成相应功能”,输入完数字后,如1,出现“亲,请输入您的姓名,格式如haha”,接下来会出现“亲,请输入您的性别w或m,w:woman,m:man”等等。如2,会出现“欢迎使用删除功能”。“ 亲,请输入您所需删除的职工信息”字样,提示输入删除的姓名,成功会自动打印一份新的职工信息表,错误有提示:亲,没有找到您要删除的职工信息!错误之后,可以重新输入查询,也可以返回主界面;如3,会出现“欢迎使用查询功能”,然后输入不同的数字完成不同条件的查询。如4,会出现“欢迎使用修改功能”提示输入修改职工姓名,如果存在,会显示对应的信息。并且有修改选项,可以对职工的特定信息进行修改;如是不存在,则会出现:亲,没有找到您要删除的职工信息!如5,按首字母顺序对名字进行排序每一步操作,系统都会提示您接下来如何操作,包括输入什么样的格式。2) 作业小结 虽然一个人做会有不少的麻烦的,但是也是因为如此我进步了不少,程序的每一个步奏都亲自做,更加有利于查漏补缺,这道题的点很多,链表里的基本的操作,插入、删除、查找、修改与排序都涵盖了,在遇到问题时我会主动看老师的书本,若是没有,我也可以上网百度,看看我出了什么问题,比如说出现了“烫”,我就去百度了。此外,我也会去请教别人。 这次编程让我对编程重燃了信心。有些操作,通过借鉴,修改,你也可以胜任。不仅如此,通过这次编程,很多知识点得到了回顾,特别是文件那部分的操作。总之,通过这次作业我学会了很多,让我更加清楚一个大问题的解决流程,如何利用算法一步步解决,这对我以后的学习有很大的帮助!附:(程序代码)#include #include #include #include /*定义结构体struct workerchar name20;char sex10;char birday20;char workday20;char edu40;char post20;char add20;char tele20;struct worker* next;struct worker* QD;/*重新写入文件void cx() FILE *fp;struct worker *q;fp=fopen(职工数据.txt,w);for( q = QD-next;q !=NULL;q = q-next )fprintf(fp,%s %s %s %s %s %s %s %s n,q-name,q-sex,q-birday,q-workday,q-edu,q-post,q-add,q-tele);fclose(fp);/*初始化void chushi()struct worker *p;char qdname20;int wu;FILE *fp;if(fp=fopen(职工数据.txt,r)=NULL) printf(Error!n); exit(0); while(fscanf(fp,%s,qdname)!=EOF) /fscanf(fp,%s,qdname);p = ( struct worker* )malloc( sizeof( struct worker ) );p-next=NULL;if( p = NULL )return;strcpy( p-name,qdname );fscanf( fp,%s,p-sex );fscanf( fp,%s,p-birday );fscanf( fp,%s,p-workday );fscanf( fp,%s,p-edu);fscanf( fp,%s,p-post);fscanf( fp,%s,p-add);fscanf( fp,%s,p-tele);p-next = QD-next;QD-next = p;fscanf(fp,%d,&wu );fclose(fp);/*录入功能void input()struct worker *p;char qname20;int wu;system(CLS);printf(nnn);printf(tttn);printf(ttt欢迎使用职工录入功能n);printf(tttnn);dosystem(CLS);printf(nnn);printf(tn);printf(t亲,请输入姓名,格式如xiuxiu 咻咻认真地说道 n);printf(tnn);scanf( %s,qname );printf(nn);p = ( struct worker* )malloc( sizeof( struct worker ) );if( p = NULL)system(CLS);printf(nnn);printf(n);printf(内存不足,无法录入。咻咻遗憾地说道。 n);printf(nn);return;strcpy(p-name,qname);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入性别w或m,w:Woman,m:Man 咻咻热情地提示 n);printf(tnn);scanf(%s,qname);strcpy(p-sex,qname); printf(nn);system(CLS);printf(nnn); printf(tn);printf(t亲,请输入您的生日,格式如1995/02/23 咻咻热情地提示 n);printf(tnn);scanf( %s,qname);strcpy(p-birday,qname); printf(nn);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入您的入职时间,格式如2014/05/20 咻咻热情地提示 n);printf(tnn);scanf( %s,qname);strcpy(p-workday,qname); printf(nn);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入您的学历,格式如MBA_zjgsu 咻咻热情地提示 n); printf(tnn);scanf( %s,qname);strcpy(p-edu,qname); printf(nn);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入您的职位,格式如CEO或者Executive 咻咻热情地提示 n);printf(tnn);scanf( %s,qname);strcpy(p-post,qname); printf(nn);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入家庭住址,格式如zhejiang/wenzhou 咻咻热情地提示 n);printf(tnn);scanf( %s,qname);strcpy(p-add,qname); printf(nn);system(CLS);printf(nnn);printf(tn);printf(t亲,请输入您的电话,格式如12345 咻咻最后啰嗦一次 n);printf(tnn);scanf( %s,qname);strcpy(p-tele,qname); printf(nn);p-next = QD-next;QD-next = p;system(CLS);printf(nnn);printf(tn);printf(t亲,如需继续添加请输入 1;如需返回主菜单请输入其他n);printf(tnn);scanf(%d,&wu );printf(nn);system(CLS);while( wu = 1 );/*显示对应的职工信息void display(struct worker* qd)printf(ttn);printf(tt 1.姓名:%s n,qd-name);printf(tt 2.性别:%s n,qd-sex);printf(tt 3.出生年月:%s n,qd-birday);printf(tt 4.工作年月:%s n,qd-workday);printf(tt 5.学历:%s n,qd-edu);printf(tt 6.职务:%s n,qd-post);printf(tt 7.住址:%s n,qd-add);printf(tt 8.电话:%s n,qd-tele);printf(ttn);printf(n);/*查询小部件void search_name()struct worker* qd;char qname20;int wu,flag=0;system(CLS);doprintf(nnn);printf(tn);printf(t亲,请输入您的姓名查询您所需的信息,咻咻提示道。n);printf(tnn);scanf(%s,qname);for( qd = QD-next;qd != 0;qd = qd-next )if( strcmp( qname,qd-name) =0)if(flag=0)printf(nnn);printf(tn);printf(t亲,您要查找的信息如下。 咻咻热情地说道。n);printf(tnn);flag=1;if(flag=1)display(qd);if(flag=0)printf(tn);printf(t亲,没有找到您所需的信息。 咻咻抱歉地说道。n);printf(tnn);printf(nnn);printf(tn);printf(t如需重新输入请按 0,如需返回上一界面请输入其他 n);printf(tnn); scanf(%d,&wu);system(CLS);if(wu)return;while(wu=0);/*void search_post()struct worker* qd;char qpost20;int wu,flag=0;system(CLS);doprintf(nnn);printf(tn);printf(t亲,请输入您的职位查询您所需的信息,咻咻提示道。n);printf(tnn);scanf(%s,qpost);for( qd = QD-next;qd != 0;qd = qd-next )if( strcmp( qpost,qd-post) =0)if(flag=0)printf(nnn);printf(tn);printf(t亲,您要查找的信息如下。 咻咻热情地说道。n);printf(tnn);flag=1;if(flag=1)display(qd);if(flag=0)printf(tn);printf(t亲,没有找到您所需的信息。 咻咻抱歉地说道。n);printf(tnn);printf(nnn);printf(tn);printf(t如需重新输入请按 0,如需返回上一界面请输入其他 n);printf(tnn); scanf(%d,&wu);system(CLS);if(wu)return;while(wu=0);/*void search_tele()struct worker* qd;char qtele20;int wu,flag=0;system(CLS);doprintf(nnn);printf(tn);printf(t亲,请输入您的电话查询您所需的信息,咻咻提示道。n);printf(tnn);scanf(%s,qtele);for( qd = QD-next;qd != 0;qd = qd-next )if( strcmp( qtele,qd-tele) =0)if(flag=0)system(CLS);printf(nnn);printf(tn);printf(t亲,您要查找的信息如下。 咻咻热情地说道。n);printf(tnn);flag=1;if(flag=1)display(qd);if(flag=0)printf(tn);printf(t亲,没有找到您所需的信息。 咻咻抱歉地说道。n);printf(tnn);printf(nnn);printf(tn);printf(t如需重新输入请按 0,如需返回上一界面请输入其他 n);printf(tnn); scanf(%d,&wu);system(CLS);if(wu)return;while(wu=0);/*查询功能void search()int n,wu=0; system(CLS);printf(tttn);printf(ttt欢迎使用查询功能n);printf(tttnn);doprintf(nnn);printf(ttn); printf(tt 咻咻说 1.按姓名查询 n);printf(tt 咻咻说 2.按职位查询 n);printf(tt 咻咻说 3.按电话查询 n);printf(tt 咻咻说 4.返回主界面 n); printf(tt 咻咻提示 亲,请输入 n); printf(ttnn);scanf(%d,&n);if(n=1&nname,qname);printf(tn);printf(t信息修改成功!请按任意数字返回主界面 咻咻高兴地通知你。n);printf(tnn);scanf(%d,&n);system(CLS)

温馨提示

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

评论

0/150

提交评论