資源簡介
簡單的職工管理系統,內含源代碼和文檔
簡單的職工管理系統主要實現以下功能:
(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
評論
共有 條評論