日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

职工信息管理系统(c语言实现)

發布時間:2023/12/10 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 职工信息管理系统(c语言实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

功能實現:

  • (1)系統以菜單方式工作
  • (2)職工信息錄入功能(職工信息用文件保存)--輸入
  • (3)職工信息瀏覽功能--輸出
  • (4)職工信息查詢功能--算法
    • 查詢方式:按姓名查詢/按職工號查詢
  • (5)職工信息刪除、修改功能

代碼:

#include<stdio.h> #include<stdlib.h> #include<string.h> struct workers {char jobNo[15]; //職工號char name[15]; //姓名char sex[15]; //性別char birthday[15]; //出生年月char degree[15]; //學歷char position[15]; //職務 char salary[15]; //工資 char addr[15]; //住址 char tel[15]; //電話 };//類型定義語句 typedef struct node {struct workers data;struct node *next;}Node;//添加信息函數 "尾插法建表" void Add(Node *worker) {Node *p, *q;char n[10]; q = worker; while (q->next != NULL){q = q->next; }while (1){printf("提示:輸入0返回主菜單!\n");printf("請輸入職工號:");scanf("%s", n);if (strcmp(n, "0") == 0){break;}p = (Node *)malloc(sizeof(Node));strcpy(p->data.jobNo, n);printf("請輸入姓名:");scanf("%s", p->data.name);printf("請輸入性別:");scanf("%s", p->data.sex);printf("請輸入出生年月:");scanf("%s", p->data.birthday);printf("請輸入學歷:");scanf("%s", p->data.degree);printf("請輸入職務:");scanf("%s", p->data.position);printf("請輸入工資:");scanf("%s", p->data.salary);printf("請輸入住址:");scanf("%s", p->data.addr);printf("請輸入電話:");scanf("%s", p->data.tel);printf("提示:已經完成一條記錄的添加!");p->next = NULL;q->next = p; q = p; }}//修改職工信息函數 int change(Node *worker) {Node *p;char find[20]; p = worker->next; if (p == NULL){printf("\n提示:沒有資料可以修改!\n");return 0;}printf("請輸入要修改的職工號");scanf("%s", find);while (p != NULL) {if (strcmp(p->data.jobNo, find) == 0){break;}p = p->next;}if (p!=NULL){int x;while (1){printf("完成修改請輸入0,否則輸入非0數字進行修改!");scanf("%d", &x);if (x == 0){break;}printf(" 請輸入新職工號: ");scanf("%s", p->data.jobNo);printf(" 請輸入新職工姓名: ");scanf("%s", p->data.name);printf(" 請輸入新職工性別: ");scanf("%s", p->data.sex);printf(" 請輸入新職工出生年月: ");scanf("%s", p->data.birthday);printf(" 請輸入新職工學歷: ");scanf("%s", p->data.degree);printf(" 請輸入新職工職務: ");scanf("%s", p->data.position);printf(" 請輸入新職工工資: ");scanf("%s", p->data.salary);printf(" 請輸入新職工住址: ");scanf("%s", p->data.addr);printf(" 請輸入新職工電話: ");scanf("%s", p->data.tel);printf(" \n提示:該職工資料已經修改!\n ");}}else printf("\n提示:沒有你要修改的資料!\n "); }//輸出職工信息函數 int Disp(Node *worker) {Node *p;p = worker->next;if (p == NULL){printf(" \n提示:沒有信息可以顯示!\n ");return 0;}printf("\t\t\t\t顯示結果\n");printf(" \n職工號 姓名 性別 出生年月 學歷 職務 工資 住址 電話 \n ");while (p!=NULL) {printf("\n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);p = p->next;}}//查詢職工信息函數: 按職工號查詢 按職工姓名查詢 int Cha_xun(Node *worker) {Node *p;int sel;char find[20]; p = worker->next; if (p==NULL) {printf(" \n提示:沒有資料可以查詢!\n ");return 0;}printf("\n提示:\n 輸入 0---- 退出\t 輸入 1----按職工號查詢\t 輸入 2-----按職工姓名查詢\n");printf("請選擇:");scanf("%d", &sel);if (sel == 1){printf("\n請輸入你要查詢分類的職工號:");scanf("%s", find);while (p!=NULL) {if (strcmp(p->data.jobNo, find) == 0){printf(" 職工號 姓名 性別 出生年月 學歷 職務 工資 住址 電話 \n ");printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);}p = p->next; }}else if (sel == 2){printf(" \n輸入你要查詢分類的職工姓名:");scanf("%s", find);while (p!=NULL){if (strcmp(p->data.name, find) == 0) {printf(" 職工號 姓名 性別 出生年月 學歷 職務 工資 住址 電話 \n ");printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.jobNo, p->data.name,p->data.sex, p->data.birthday, p->data.degree, p->data.position,p->data.salary, p->data.addr, p->data.tel);}p = p->next;}}else if (sel == 0)return 0;}//刪除職工信息函數 int Delete(Node *worker) {Node *p, *r;char find[10];p = worker->next;if (p == NULL){printf("提示:沒有職工信息可以刪除!\n ");return 0;}printf(" \n提示:請輸入你要刪除的職工號!\n ");scanf("%s", find);while (p != NULL){if (strcmp(p->data.jobNo, find) == 0){break;}p = p->next;}if (p!=NULL){r = worker;while (r->next != p){r = r->next;}r->next = r->next->next; } }//將職工信息保存到文件中 void save(Node *worker) {int n;Node *p = NULL;FILE *fp; printf("是否保存到文件?( 1-----保存!,0-----不保存! )");scanf("%d", &n);if (n == 1){if (worker->next == NULL){printf(" 沒有記錄!");}else{p = worker->next;}if ((fp = fopen(" 職工信息管理系統.txt ", " wb ")) == NULL) {printf(" 文件不能打開!\n"); }while (p != NULL) {fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,p->data.birthday, p->data.degree, p->data.position, p->data.salary,p->data.addr, p->data.tel); p = p->next; }fclose(fp); }}//讀取職工信息 void Du_qu(Node *worker) {Node *p;FILE *fp; if ((fp = fopen("職工信息管理系統.txt", "rb")) == NULL) {printf("文件不能打開!\n ");}p = worker->next;while (p!=NULL){fscanf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,p->data.birthday, p->data.degree, p->data.position, p->data.salary,p->data.addr, p->data.tel); p=p->next;}fclose(fp);}//主函數實現 int main() {Node *worker;int flag;worker = (Node*)malloc(sizeof(Node));worker->next = NULL; while(1){printf("\t職 工 信 息 管 理 系 統\n");printf("==================菜 單==================\n ");printf("1.輸入職工信息\n ");printf("2.修改職工信息\n ");printf("3.瀏覽職工信息\n ");printf("4.查詢職工信息\n ");printf("5.刪除職工信息\n ");printf("6.讀取職工信息\n ");printf("0.退出\n ");printf("輸入你選擇的序號:");scanf("%d", &flag);switch (flag){case 0: printf(" \n提示:退出系統!\n "); break;case 1: Add(worker); save(worker); break; //添加職工信息,保存到文件中 case 2: change(worker); break; //修改職工信息 case 3: Disp(worker); break; //顯示職工信息 case 4: Cha_xun(worker); break; //查詢職工信息 case 5: Delete(worker); break; //刪除職工信息 case 6: Du_qu(worker); break; //讀取職工信息 default: printf("提示:輸入錯誤!\n ");}}}

代碼模塊解釋:

  • 添加信息模塊: void Add( Node *worker )

采用尾插法,先建立鏈表和頭結點,新增加一個節點,輸入職工的所有信息,將新增的節點連接在鏈表的尾端。

修改信息模塊:void change( Node *worker )

找到要修改的職工信息,刪除這一個節點,然后新建一個節點,輸入要修改的信息,并儲存到新的節點中,將新增的節點放在原來刪除節點的位置。

  • 顯示輸出模塊:void Disp( Node *worker )

先新建一個指針指向頭結點,判斷指針域是否為空,若為空,輸出“沒有信息可以顯示”;若不為空,則輸出他的指針域所指向的節點儲存的信息,并將指針向后移一個節點,直到P指向空,這樣就輸出了所有的職工信息。

  • 查找信息模塊:void Cha_xun( Node *worker )

分為兩種查找方法,按職工號查找和按姓名查找。
按職工號查找: 輸入職工號,先新建一個指針指向頭結點,判斷指針域是否為空,若為空,輸出“沒有資料可以查詢”;若不為空,則判斷他的指針域所指向的節點儲存的職工號是否與輸入的職工號相同,若相同,則輸出該職工所有的信息,并將指針向后移一個節點,再次進行判斷,直到P指向空,這樣就查找輸出了所有匹配的職工信息。
按姓名查找:輸入姓名,先新建一個指針指向頭結點,判斷指針域是否為空,若為空,輸出“沒有資料可以查詢”;若不為空,則判斷他的指針域所指向的節點儲存的職工姓名是否與輸入的職工姓名相同,若相同,則輸出該職工所有的信息,并將指針向后移一個節點,再次進行判斷,直到P指向空,這樣就查找輸出了所有匹配的職工信息。

  • 刪除信息模塊:void Delete( Node *worker )

查找到要刪除的職工信息節點,刪除這一個節點,并將它的前驅節點的指針域指向后繼節點。

  • 保存職工信息模塊: void save(Node *worker)

新建一個指針指向頭結點,判斷指針域是否為空,若為空,輸出“沒有記錄!”,若不為空, fprintf()格式寫函數 ,將職工信息以%s的格式寫入指針指向的文件中。

  • 讀取信息模塊:void Du_qu( Node *worker )

打開文件,fscanf()格式讀函數,以%s 的格式從文件中讀取數據存入節點中。

總結

以上是生活随笔為你收集整理的职工信息管理系统(c语言实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线资源av | 欧美乱妇狂野欧美视频 | 亚洲精品乱码久久久久久按摩观 | jizz国产在线观看 | 永久av在线免费观看 | 黄色大片一级 | 草逼导航 | 国产suv精品一区二区33 | 亚洲成人第一网站 | 深夜在线 | 有码中文字幕 | 丝袜美女被c | 中文字幕在线国产 | 欧美在线色| 久久短视频 | 国产伦精品一区二区三区视频痴汉 | 日韩在线国产精品 | 精品孕妇一区二区三区 | 久久精品视 | 亚洲成人激情小说 | 免费在线观看黄色片 | 久久久久久久久蜜桃 | 极品色影视 | 亚洲天堂日本 | 日xxxx| 韩国午夜激情 | 中文一二三区 | 久久国产三级 | www.欧美一区二区三区 | 天天干天天操天天爱 | 老色批影视 | 精品人妻一区二区三区在线视频 | 久久夜夜夜 | 999精品在线视频 | 亚洲精品久久久久久一区二区 | 一本色道久久综合熟妇 | 成人小视频免费看 | 黄色片xxx| 欧美精品在线一区二区三区 | 色哟哟无码精品一区二区三区 | 欧美成人免费在线 | 99色图 | 欧美成人一区二区三区片免费 | 国产a∨精品一区二区三区仙踪林 | 日韩精品在线一区二区 | 男人和女人日批视频 | 涩涩屋视频在线观看 | 影音先锋成人资源网站 | 黄色一级片免费播放 | 欧美爽爽爽 | 亚洲欧美日韩在线播放 | 一级做a在线观看 | 欧美激情在线 | 亚洲欧美日韩在线一区二区 | 黄色a在线 | 大学生三级中国dvd 日韩欧美一区二区区 | porn麻豆| 色午夜婷婷 | 永久免费黄色 | 好吊色一区二区三区 | 91福利一区 | 午夜性剧场 | 黄色免费网站视频 | 欧美成人午夜精品久久久 | 爱爱免费视频网站 | 国产成人99 | 久国产精品 | 国产一区二区三区久久 | 国产成人精品一区二区在线观看 | 美女扒开腿让男人 | 欧美夫妻性生活视频 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | av片免费 | 999久久久久 | 91九色中文 | 亚洲精品wwww | 欧美视频 | 久久精品天天中文字幕人妻 | 国产精品四虎 | 中文字幕日韩欧美一区二区三区 | 高清视频免费在线观看 | 国产六区 | 日本呦呦 | 亚洲乱码中文字幕久久孕妇黑人 | 91高清免费视频 | 黄网站色视频 | 夜夜爽影院 | 日韩在线视频免费看 | 黄色中文字幕在线观看 | 88av网站 | cekc老妇女cea0 | 成人三级图片 | www黄色 | 自拍偷拍视频网 | 亚洲自拍偷拍一区二区三区 | 国产一级一片免费播放 | 久久无码人妻一区二区三区 | 精品国产视频一区二区 | 国产成人精品综合 |