• 大小: 255KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: c语言  

资源简介

简单的职工管理系统,内含源代码和文档 简单的职工管理系统主要实现以下功能: (1) 新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。 (2) 删除一名职工:从职工管理文件中删除一名职工对象。 (3) 查询:从职工管理文件中查询符合某些条件的职工。 (4) 修改:检索某个职工对象,对其某些属性进行修改。 (5) 排序:按某种需要对职工对象文件进行排序。 要求:职工信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。 实现提示: (1) 由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。 (2) 对职工对象中的"姓名"按字典顺序进行排序。 (3) 对排序后的职工对象进行增、删、查询、修改、排序等操作。

资源截图

代码片段和文件信息

/*
单的职工管理系统(数据结构课程设计)
aa a 32543 453254 aaa aaaa aaaaa 4365357
bb b 52654 654365 bbb aaaa bbbbb 5365463
cc a 54325 546354 aaa bbbb ccccc 4354365
dd b 43543 435465 bcb dddd ccccc 1351512
ee a 23611 151312 bbb cccc bbbbb 1531515
ff b 53111 151515 fff ffff fffff 1561561
gg b 53111 435465 aaa bbbb fffff 4454564 

  简单的职工管理系统主要实现以下功能:
  (1)    新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
  (2)    删除一名职工:从职工管理文件中删除一名职工对象。
  (3)    查询:从职工管理文件中查询符合某些条件的职工。
  (4)    修改:检索某个职工对象,对其某些属性进行修改。
  (5)    排序:按某种需要对职工对象文件进行排序。
  要求:职工信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
  实现提示:
  (1)    由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
  (2)    对职工对象中的“姓名“按字典顺序进行排序。
  (3)    对排序后的职工对象进行增、删、查询、修改、排序等操作。
*/
#include 
#include 
#include 
#include 
#define ALLMAX 100 //总共统计的职工的人数


typedef struct Node
{
long int born_timework_timetele_num;
char sexname[ALLMAX]degree[ALLMAX]job[ALLMAX]address[ALLMAX];
struct Node *next;
}SLNode;


typedef struct{
long int born_timework_timetele_num;
char name[ALLMAX]sexdegree[ALLMAX]job[ALLMAX]address[ALLMAX];
}DataType;


void ListInitiate(SLNode **head)//---------------------------------链表初始化
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间
(*head)->next=NULL;
}



SLNode *ListInsert(SLNode *headDataType x)//-------------------职工信息的插入姓名并按照升序排列
{
SLNode *p*q*s;
p=head->next;
if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间
q->born_time=x.born_time; q->work_time=x.work_time;
q->tele_num=x.tele_num; strcpy(q->namex.name);
q->sex=x.sex; strcpy(q->degreex.degree);
strcpy(q->jobx.job); strcpy(q->addressx.address);
if(head->next==NULL){//如果只有链表的头结点,没有其他的结点,直接插入在头结点后面
head->next=q;
head->next->next=NULL;
}
else{//链表非空
for(;p;p=p->next){
if(p->next!=NULL){
if(strcmp(p->namex.name)<0&&strcmp(p->next->namex.name)>0){//位于两个结点之间
s=p->next;
p->next=q;
q->next=s;
break;
}
//else if(strcmp(p->namex.name)==0)break;   //如果姓名相同则不插入信息
}
else if(strcmp(p->namex.name)<0&&p->next==NULL){//链表非空,并且在排序中是最后一个
p->next=q;
q->next=NULL;
break;
}
if(strcmp(p->namex.name)>0){//位于链表头结点之后的位置
s=head->next;
head->next=q;
q->next=s;
break;
}
}
}
return head;
}



void ListDelete(SLNode *head)//-----------------------------职工信息的删除
{
SLNode *p*s;
char x[20];
s=head;
p=head->next;
if(head->next==NULL){//链表为空,输出:名单中无职工信息,无须删除!
printf(“名单中无职工信息,无须删除!\n“);
return;
}
printf(“请输入要删除职工的姓名:\n“); //输入要删除的人的姓名
scanf(“%s“x);
for(p;p;p=p->next){//在链表中从头到尾查找输入的人的姓名
if(strcmp(p->namex)==0){ //如果存在,则删除,否则输出:名单中无职工信息,无须删除!
s->next=p->next;
free(p);
printf(“删除成功!请继续操作!\n“);
break;
}
s=p;
}
if(p==NULL){//链表本身为空
printf(“名单中无职工信息,无须删除!\n“);
}
}



void ListModify(SLNode *head)//------------------------职工信息的修改
{
DataType x;
SLNode *p;
p=head->next;
if(p

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     642560  2010-01-09 10:44  简单的职工管理系统\简单的职工管理系统报告.doc

     文件      18168  2010-01-08 21:24  简单的职工管理系统\职工管理.cpp

     目录          0  2010-03-20 19:15  简单的职工管理系统

----------- ---------  ---------- -----  ----

               660728                    3


评论

共有 条评论