C语言员工信息管理系统源代码
生活随笔
收集整理的這篇文章主要介紹了
C语言员工信息管理系统源代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近咨詢這方面源碼的朋友比較多,所以扒一扒以前的網盤,發現了好多之前攢的源碼,分享給大家。
掃描上方二維碼,回復?999?直接獲取作者之前收藏的學習資源,謝謝網友們的分享。
更多管理系統更新中,請注意關注!
今天分享:?C語言員工信息管理系統源代碼
/******************************************************************************* * 文件名:UI.Cpp * * * * 文件功能: 該文件主要是定義(實現)和用戶操作有關的一些函數,之所以把和用戶 * * 操作有關的函數單獨放到ui.c中,是為了使程序結構更加清晰,源代碼更 * * 容易管理,這也是遵循結構化程序設計的要求(模塊化、層次化) * * * * 作者: * * * *******************************************************************************/#include <stdio.h> #include <stdlib.h> #include <string.h> #include "ui.h"//選擇身份 void UserOperateChoose(ListType L) {int option = 0;do{//提示用戶操作選擇PrintOptionChoose( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//添加一個員工/* case 1: UserOperateOne(L);break;*///刪除員工/* case 2:DelStu(L);break;//修改員工case 3:ModifyStu(L);break; *///查詢某個員工case 1:UserOperatemanager(L);break;//排序/* case 3:UserOperateThree(L);break;*///打印所有員工信息case 2:UserOperateVisitor(L);break;default: break;}}while(option );//程序退出時,顯示BYEBYEPrintHello( ); }//該函數根據管理員的選擇,完成指定的操作 void UserOperateVisitor(ListType L) {int option = 0;//顯示歡迎信息do{//提示用戶操作選擇PrintOptionVisitor( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//添加一個員工/* case 1: UserOperateOne(L);break;*///刪除員工/* case 2:DelStu(L);break;//修改員工case 3:ModifyStu(L);break; *///查詢某個員工case 1:UserOperateTwo(L);break;//排序/* case 3:UserOperateThree(L);break;*///打印所有員工信息case 2:PrntAll(L);break;default: break;}}while(option );//程序退出時,顯示BYEBYE}//該函數根據管理員的選擇,完成指定的操作 void UserOperatemanager(ListType L) {int option = 0;//用密碼進入系統password();do{//提示用戶操作選擇PrintOption( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//添加一個員工case 1: UserOperateOne(L);break;//刪除員工/* case 2:DelStu(L);break;//修改員工case 3:ModifyStu(L);break; *///查詢某個員工case 2:UserOperateTwo(L);break;//排序case 3:UserOperateThree(L);break;//打印所有員工信息case 4:PrntAll(L);break;default: break;}}while(option );//程序退出時,顯示BYEBYE}//該函數為基本操作的二級菜單,完成指定的操作 void UserOperateOne(ListType L) {int option = 0;do{//提示用戶操作選擇PrintOptionOne( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//添加一個員工case 1: AddStu(L);break;//刪除員工case 2:DelStu(L);break;//修改員工case 3:ModifyStu(L);break;//返回上級菜單case 0:return;break;/* //查詢某個員工case 5:chkStuname(L);break;//打印所有員工信息case 6:PrntAll(L);break;//按ID號排序case 7:sortbyID(L);break;case 8://按姓名排序sortbyname(L);break;case 9://按部門分類顯示信息sortbyoffice(L);break;*/default: break;}}while(option );//程序退出時,顯示BYEBYE//PrintHello( ); }//該函數為基本操作的第二個二級菜單,完成指定的操作 void UserOperateTwo(ListType L) {int option = 0;do{//提示用戶操作選擇PrintOptionTwo( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//查詢某個員工case 1:chkStu(L);break;//查詢某個員工case 2:chkStuname(L);break;//返回上級菜單case 0:return;break;/* //查詢某個員工case 5:chkStuname(L);break;//打印所有員工信息case 6:PrntAll(L);break;//按ID號排序case 7:sortbyID(L);break;case 8://按姓名排序sortbyname(L);break;case 9://按部門分類顯示信息sortbyoffice(L);break;*/default: break;}}while(option );//程序退出時,顯示BYEBYE//PrintHello( ); }//該函數為基本操作的第三個二級菜單,完成指定的操作 void UserOperateThree(ListType L) {int option = 0;do{//提示用戶操作選擇PrintOptionThree( );scanf("%d", &option );//根據用戶選擇調用相關函數完成指定的操作switch(option ){//按ID號排序case 1:sortbyID(L);break;case 2://按姓名排序sortbyname(L);break;case 3://按部門分類顯示信息sortbyoffice(L);break;//按性別排序顯示信息case 4:sortbysex(L);break;//按年齡排序顯示信息case 5:sortbyage(L);break;//按電話排序顯示信息 case 6:sortbyphone( L);break;//按地址排序顯示信息case 7:sortbyaddress( L);break;//按工資排序顯示信息 case 8:sortbypay( L);break;//按電子郵件排序顯示信息case 9:sortbyemil( L);break;//返回上級菜單case 0:return;break;/* //查詢某個員工case 5:chkStuname(L);break;//打印所有員工信息case 6:PrntAll(L);break;//按ID號排序case 7:sortbyID(L);break;case 8://按姓名排序sortbyname(L);break;case 9://按部門分類顯示信息sortbyoffice(L);break;*/default: break;}}while(option );//程序退出時,顯示BYEBYE//PrintHello( ); }/* 用戶操作界面啟動時,在顯示器上顯示一些歡迎信息 */ void PrintWelcome( ) {puts(" ");puts("********************************************************************" );puts(" 歡迎使用員工管理系統!" );puts("********************************************************************" );puts(" 若有有問題請在留言區交流");puts("********************************************************************" );}/* 在顯示器上顯示用戶可以進行的操作,以及操作的方法 */ void PrintOption( ) {puts(" ");puts("請選擇操作:" );puts("0:返回 " );puts("1:進入基本操作菜單");puts("2:進入員工查詢系統");puts("3:進入信息排序系統");puts("4:打印員工信息");}//選擇身份 void PrintOptionChoose( ){puts(" ");puts("請選擇身份:" );puts("0:退出系統 " );puts("1:以管理員身份進入 " );puts("2:以游客身份進入 " );}//顯示第一個二級的提示信息 void PrintOptionOne( ) {puts(" ");puts("請選擇操作:" );puts("0:返回 " );puts("1:添加員工 2:刪除員工 3:修改員工信息" );} //顯示第二個二級的提示信息 void PrintOptionTwo( ) {puts(" ");puts("請選擇操作:" );puts("0:返回 " );puts("1:按員工ID號查詢 2:按員工姓名查詢" );}//顯示第三個二級的提示信息 void PrintOptionThree( ) {puts(" ");puts("請選擇操作:" );puts("0:返回 " );puts("1:按ID號排序顯示信息 2:按姓名排序顯示信息 3:按部門分類顯示信息");puts("4:按性別排序顯示信息 5:按年齡排序顯示信息 6:按電話排序顯示信息");puts("7:按地址排序顯示信息 8:按工資排序顯示信息 9:按電子郵件排序顯示信息");}//顯示游客查詢系統 void PrintOptionVisitor( ) {puts(" ");puts("請選擇操作:" );puts("0:返回 " );puts("1:進入員工查詢系統");puts("2:打印員工信息"); }/* 程序退出時,在顯示器上顯示一些感謝語言,以給使用者一個好印象 */ void PrintHello( ) {puts("********************************************************************" );puts(" 謝謝使用員工管理系統,再見!" );puts("********************************************************************" );puts(" ");}//比較兩個員工信息的學號是否相等 //若相等則返回TRUE,否則返回FALSE //當調用線性表操作函數int LocateElem(ListType L, ElemType e, STATUS (*compare)(ElemType e1, ElemType e2) //的時候,將該函數名作為第三個參數傳遞給compare STATUS IsEqual(ElemType e1, ElemType e2 ) {if( strcmp(e1.ID, e2.ID)==0 )return TRUE;return FALSE; } STATUS IsEqual2(ElemType e1, ElemType e2 ) {if( strcmp(e1.name, e2.name)==0 )return TRUE;return FALSE; }//往線性表中添加一個員工 void AddStu(ListType L) {ElemType stu;printf("請輸入員工的ID號(不超過15位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.ID );printf("請輸入員工的姓名(不超過15位):" );gets(stu.name );printf("請輸入員工的性別(輸入M/W):" );stu.sex=getchar();printf("請輸入員工的年齡:" );scanf("%d",&stu.age);printf("請輸入員工的電話(不超過20位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.phone);printf("請輸入員工的地址(不超過100位):" );gets(stu.address);printf("請輸入員工的電子郵件(不超過50位):" );gets(stu.email);printf("請輸入員工的工資(不超過10位):" );gets(stu.pay);printf("請輸入員工的工齡:" );scanf("%d",&stu.workingyears);getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯printf("請輸入員工的所在部門(不超過100位):" );gets(stu.office);//判斷線性表中是否已經存在該ID號的員工,如果已經存在,則放棄插入操作if( LocateElem(L, stu, IsEqual) ){puts("操作失敗,該員工已經存在" );return ;}//將該學生放入線性表中//為簡單起見,我們把新添加的結點放到線性表的前面if( ListInsert(L, 1, stu ) )puts("操作成功" );elseputs("操作失敗" ); }//從線性表中刪除一個員工,根據員工的ID號決定刪除哪個員工 void DelStu(ListType L) {ElemType stu;int pos;printf("請輸入員工的ID號(不超過15位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.ID );pos = LocateElem(L, stu, IsEqual ); //如果存在該ID號的V,則返回其在線性表中的位序,如果不存在返回0if(pos ) {if(ListDelete(L, pos, stu) ){puts("操作成功");return;}}puts("操作失敗" ); }//修改員工成績,根據ID號決定修改哪個員工的成績 void ModifyStu(ListType L) {int pos;ElemType stu;printf("請輸入員工的ID號(不超過15位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.ID );printf("請輸入員工的姓名(不超過15位):" );gets(stu.name );printf("請輸入員工的性別(輸入M/W):" );scanf("%c",&stu.sex);printf("請輸入員工的年齡:" );scanf("%d",&stu.age);printf("請輸入員工的電話(不超過20位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.phone);printf("請輸入員工的地址(不超過100位):" );gets(stu.address);printf("請輸入員工的電子郵件(不超過50位):" );gets(stu.email);printf("請輸入員工的工資(不超過10位):" );gets(stu.pay);printf("請輸入員工的工齡:" );scanf("%d",&stu.workingyears);getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯printf("請輸入員工的所在部門:" );gets(stu.office);pos = LocateElem(L, stu, IsEqual );if(pos > 0 ){ListModify(L, pos, stu );puts("操作成功" );}else{puts("操作失敗" );}}//根據學號查詢某個員工的成績 void chkStu(ListType L) {int pos;ElemType stu;printf("請輸入員工的ID號(不超過15位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.ID );if(pos = LocateElem(L, stu, IsEqual) ){GetElem(L, pos, stu );PrntOneStu(stu );}else{puts("操作失敗" );}}//根據姓氏查詢某個員工的成績 void chkStuname(ListType L) {int pos;ElemType stu;printf("請輸入員工的姓氏(不超過15位):" );getchar(); //吃掉前面的回車鍵,否則后面的字符串輸入時會出錯gets(stu.name);if(pos = LocateElem(L, stu, IsEqual2) ){GetElem(L, pos, stu );PrntOneStu(stu );}else{puts("操作失敗" );}}//成績統計,統計全體員工的平均成績 /*void StateScore(ListType L) { float total[2] = {0.0, 0.0}; int num = 0; ElemType e;while(GetElem(L, num+1, e ) ) //GetElem(...)返回值為FALSE時說明沒有位序為num+1的數據{num++;total[0] += e.score[0];total[1] += e.score[1];}if(num > 0 ){printf("平均成績分別為:%.2f, %.2f\n", total[0]/num, total[1]/num );}else{puts("沒有數據信息" );}}*///打印一個員工的信息 //調用ListTraverse()函數的時候,將該函數的名字作為第二個參數傳遞給visit STATUS PrntOneStu(ElemType stu ) {printf("ID號:%s 姓名:%s 性別:%c 年齡:%d 電話:%s 地址:%s 電子郵件:%s 工資:%s 工齡:%d 所在部門:%s\n", stu.ID, stu.name, stu.sex,stu.age,stu.phone,stu.address,stu.email,stu.pay, stu.workingyears ,stu.office);return OK; }//打印所有學生信息 void PrntAll(ListType L) {ListTraverse(L, PrntOneStu );}//用于做新的鏈表 //按ID排序 void sortbyID(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.ID,p2->data.ID)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}printf("降序排序成功\n");PrntAll(head);}//按姓名排序 void sortbyname(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.name,p2->data.name)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}printf("降序排序成功\n");PrntAll(head);}//按性別分類顯示信息 void sortbysex(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (p1->data.sex>p2->data.sex){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按年齡分類顯示信息 void sortbyage(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (p1->data.age>p2->data.age){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按電話分類顯示信息 void sortbyphone(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.phone,p2->data.phone)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按地址分類顯示信息 void sortbyaddress(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.address,p2->data.address)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按工資分類顯示信息 void sortbypay(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.pay,p2->data.pay)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);} //按郵件地址分類顯示信息 void sortbyemil(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.email,p2->data.email)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按部門分類顯示信息 void sortbyoffice(struct lnode *head) {struct lnode *p1,*p2,*l;l=(struct lnode *)malloc(sizeof(struct lnode)); l->next=NULL;for (p1=head;p1->next!=NULL;p1=p1->next){for (p2=p1->next;p2!=NULL;p2=p2->next){if (strcmp(p1->data.office,p2->data.office)==-1){l->data=p1->data;p1->data=p2->data;p2->data=l->data;}}}PrntAll(head);}//按密碼進入系統 void password() {char password[7]="123456"; int choice; char s[7]; int flag=0; int n=3; do { printf("請你輸入密碼:\n"); scanf("%s",s); if(strcmp(s,password)==0)//若密碼正確 { printf("恭喜你成功登陸了\n\n\n"); flag=1; break; } else { printf("輸入有錯誤請重新輸入:\n"); n--; } }while(n>0); if(!flag) { printf("哈哈,O(∩_∩)O哈!,想暴力破解是行不通的\n"); puts("若有有問題留言區交流");exit(0); } }做報告課程設計也是在網上找到了很多好的資源,感謝原作者的分享,現在也記不清名字啦,不過也學習網友們的無私奉獻精神,把資料分享給大家,幫助更多的朋友吧
相關文章推薦:
1、?C語言學生成績管理系統源代碼?★★★★★
2、?C語言學籍管理系統源代碼?★★
3、C語言學生成績管理系統設計 《C語言程序設計》實訓報告?★★★
4、C語言學生信息管理系統源代碼?★★★
感謝閱讀!
總結
以上是生活随笔為你收集整理的C语言员工信息管理系统源代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery技巧(转)
- 下一篇: 员工信息管理系统--C语言