最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)職工管理系統(tǒng)

 更新時間:2019年11月27日 11:12:51   投稿:lijiao  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)職工管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

小編找到了一個特別好的職工管理系統(tǒng),分享給大家一份C語言職工管理系統(tǒng)的具體實現(xiàn)代碼,供大家參考,也謝謝這位網(wǎng)友的分享,具體內容如下

person.cpp

#include "person.h"

//首頁
int Print_Head(int * num)
{
 printf("\t***********************************************\n");
 printf("\t|     職工管理系統(tǒng)    |\n");
 printf("\t*---------------------------------------------*\n");
 printf("\t|   【1】新增  【2】刪改   |\n");
 printf("\t*   【3】查詢  【4】退出   *\n");
 printf("\t***********************************************\n");
 printf("\t◎請輸入想進行操作的序號【 】\b\b");
 *num=getchar();
 return SUCCESS;
}

//刪改畫面
int Print_DelRev(int* num)
{
 printf("\t******************************************\n");
 printf("\t*          *\n");
 printf("\t* 【1】刪除 【2】修改 【3】返回 *\n");
 printf("\t*          *\n");
 printf("\t******************************************\n");
 printf("\t◎請輸入想進行操作的序號【 】\b\b");
 *num=getchar();
 return SUCCESS;
}

//查詢畫面
int Print_Que(int* num)
{
 printf("\t******* ************************************\n");
 printf("\t*          *\n");
 printf("\t*  【1】全部查詢 【2】工號查詢  *\n");
 printf("\t*          *\n");
 printf("\t*  【3】模糊查詢 【4】返回菜單  *\n");
 printf("\t*          *\n");
 printf("\t******************************************\n");
 printf("\t◎請輸入想進行操作的序號【 】\b\b");
 *num=getchar();
 return SUCCESS;
}

//增加畫面
int Print_Add(int* num)
{
 int n=0;
 printf("\t******************************************\n");
 printf("\t*          *\n");
 printf("\t* 【1】新增 【2】添加 【3】返回 *\n");
 printf("\t*          *\n");
 printf("\t******************************************\n");
 printf("\t◎請輸入想進行操作的序號【 】\b\b");
 *num=getchar();
 return SUCCESS;
}

//標題頭
int Print_Tittle()
{
 printf("-------------------------------------------\n");
 printf(" 工號 | 姓名 |性別|年齡| 電話  \n");
 printf("-------------------------------------------\n");
 return SUCCESS;
}

//選擇將要打開的文件
int File_name()
{
 printf("\n\t◎請輸入您想要打開的文件:");
 //memset(filename,0,sizeof(filename));
 if(scanf("%s", filename)!=1){
 printf("\a 選擇文件錯誤!");
 return FAILED;
 }
 return SUCCESS;
}


//生成鏈表,參數(shù)n是add記錄數(shù)量
struct Employee *Creat() {
 printf("\n\t◎請輸入要添加的數(shù)據(jù)個數(shù):");
 int n;
 if(scanf("%d", &n)!=1) {
 printf("\a error!");
 }
 struct Employee *head;
 struct Employee *p1, *p2;

 system("cls");
 for(int i=1;i<n+1;i++) {
 p1 = (struct Employee*)malloc(SIZE);
 Print_Tittle();
 scanf("%s%s%s%d%s",p1->num,p1->name,p1->sex,
 p1->age,p1->tel);
 p1->next = NULL;
 if(i==1) {
 head = p2 = p1;
 }
 else {
 p2->next = p1;
 p2 = p1;
 }
 }
 return(head);
}

//建立新文件
int WriteData_wb(struct Employee *head) {
 FILE *fp;
 struct Employee *p;
 if((fp = fopen(filename, "wb"))==NULL)
 printf("\a 打開文件錯誤!"); 
 p = head;
 while(p!=NULL) {
 if(fwrite(p,SIZE,1,fp)!=1) {
 printf("\b 寫入數(shù)據(jù)出錯\n");
 fclose(fp);
 return FAILED;
 }
 p=p->next;
 }
 fclose(fp);
 return SUCCESS;
}

//在已有文件添加
int WriteData_ab(struct Employee *head) {
 FILE *fp;
 struct Employee *p;
 if((fp = fopen(filename, "ab"))==NULL)
 printf("\a 打開文件錯誤!");
 p = head;
 while(p!=NULL) {
 if(fwrite(p,SIZE,1,fp)!=1) {
 printf("\b 寫入數(shù)據(jù)出錯\n");
 fclose(fp);
 return FAILED;
 }
 p=p->next;
 }
 fclose(fp);
 return SUCCESS;
}


//增加
int Emp_Add()
{
 system("cls");
 getchar();
 int add;
 while(1){
 system("cls");
 Print_Add(&add);
 while(add!='1' && add!='2' && add!='3') {
 putchar('\a');
 printf("◎請重新輸入有效序號(1~3):【 】\b\b");
 add=getchar();
 }
 switch(add){
 case '1':
 WriteData_wb(Creat());
 printf("\n◎新建文件成功數(shù)據(jù)已保存√\n");
 system("pause");
 system("cls");
 Emp_Add();
 break;
 case '2':
 WriteData_ab(Creat());
 printf("\n◎數(shù)據(jù)已成功添加√\n");
 system("pause");
 system("cls");
 Emp_Add();
 break;
 case '3':
 system("cls");
 getchar();
 Emp_Return();
 break;
 }
 }
 return SUCCESS;
}

//讀取文件的數(shù)據(jù)到鏈表中返回鏈表head指針
struct Employee *Read() {
 struct Employee *head = NULL;
 struct Employee *p1, *p2;//s = p1;p = p2;

 FILE *fp;
 if((fp=fopen(filename,"rb+"))==NULL)
 {
 printf("打開文件出錯\n");
 exit(0);
 }
 while(!feof(fp)) {
 if((p1=(struct Employee*)malloc(SIZE))==NULL){
 printf("內存申請出錯\n");
 fclose(fp);
 exit(0);
 }
 if(fread(p1,SIZE,1,fp)!=1){
 free(p1);
 break;
 }
 if(head==NULL)
 head=p2=p1;
 else{
 p2->next=p1;
 p2=p1;
 }
 }
 fclose(fp);
 return (head);
}

//刪除
int Emp_Del()
{
 struct Employee* head;
 struct Employee* pt1,*pt2;
 char str_num[10];
 memset(str_num,0,sizeof(str_num));
 printf("\n◎請輸入你要刪除的學號信息:");
 scanf("%s",str_num);
 pt1=Read();
 pt2=pt1->next;
 head=pt1;
 while(pt2!=NULL){
 if(!strcmp(pt1->num,str_num)){
 WriteData_wb(pt2);
 }else if(!strcmp(pt2->num,str_num)){
 pt1->next=pt2->next;
 WriteData_wb(head);
 }
 pt2=pt2->next;
 pt1=pt1->next;
 }
 if(pt2!=NULL){
 printf("\t◎沒有你要刪除的數(shù)據(jù)");
 }
 return SUCCESS;
}

//修改
int Emp_Rev()
{
 struct Employee* pt1,*pt2,*head;
 char str_num[10];
 printf("\t◎請輸入要修改的學號信息:");
 scanf("%s",str_num);
 pt1=Read();
 pt2=pt1->next;
 head=pt1;
 while(pt2!=NULL){
 if(strcmp(pt1->num,str_num)==0) {
 Print_Tittle();
 scanf("%s%s%s%d%s",pt1->num,pt1->name,pt1->sex,
 pt1->age,pt1->tel);
 WriteData_wb(head);
 }
 else if(strcmp(pt2->num,str_num)==0) {
 Print_Tittle();
 scanf("%s%s%s%d%s",pt1->num,pt1->name,pt1->sex,
 pt1->age,pt1->tel);
 WriteData_wb(head);
 }
 pt2 = pt2->next;
 pt1 = pt1->next;
 }
 if(pt2!=NULL)
 printf("數(shù)據(jù)庫中沒有存儲您要刪除的數(shù)據(jù)!\n");
 return 0;
}

//刪改
int Emp_DelRev()
{
 
 getchar();
 int delrev=0;
 while(1){
 system("cls");
 Print_DelRev(&delrev);
 while(delrev!='1' && delrev!='2' && delrev!='3'){
 putchar('\a');
 //getchar();
 printf("○請重新輸入有效序號(1~3):【 】\b\b");
 delrev=getchar();
 }
 switch(delrev){
 case '1':
 Emp_Del();
 printf("\n◎已成功刪除指定數(shù)據(jù)!");
 system("pause");
 getchar();
 break;
 case '2':
 Emp_Rev();
 printf("\n◎已成功修改指定數(shù)據(jù)!");
 system("pause");
 getchar();
 break;
 case '3':
 system("cls");
 getchar();
 Emp_Return();
 break;
 }
 }
 return SUCCESS;
}

//總體查詢
int Emp_QueAll()
{
 struct Employee *pt;
 pt = Read();
 Print_Tittle();
 do {
 printf("%2s%5s%4s%2d%3s\n",
 pt->num,pt->name,pt->sex,pt->age,pt->tel);
 pt = pt->next;
 }while(pt!=NULL);
 printf("\n\n");
 return SUCCESS;
}

//工號查詢
int Emp_QueNum() 
{
 struct Employee *pt;
 char str_num[10];
 printf("\t◎請輸入您要查詢的學號:");
 scanf("%s", str_num);
 pt = Read();
 Print_Tittle();
 do {
 if(!strcmp(pt->num,str_num)) {
 printf("%2s%5s%4s%2d%3s\n",
 pt->num,pt->name,pt->sex,pt->age,pt->tel);
 printf("\n\n");
 return 0;
 }
 pt = pt->next;
 }while(pt!=NULL);
 printf("\t數(shù)據(jù)庫中沒有存儲您要查詢的數(shù)據(jù)!\n");
 printf("\n\n");
 return SUCCESS;
}

//模糊查詢
int Emp_QueVague()
{
 struct Employee *pt;
 char str_vague[20];
 int m=0;
 printf("\t◎請輸入您要查詢的關鍵詞:");
 scanf("%s", str_vague);
 pt = Read();
 Print_Tittle();
 do {
 if(strstr(pt->num,str_vague)!=0||strstr(pt->name,str_vague)!=0
 ||strstr(pt->sex,str_vague)!=0||strstr(pt->age,str_vague)!=0
 ||strstr(pt->tel,str_vague)!=0) {
 printf("%2s%5s%4s%2d%3s\n",
 pt->num,pt->name,pt->sex,pt->age,pt->tel);
 m = 1;
 }
 pt = pt->next;
 }while(pt!=NULL);
 if(!m)
 printf("數(shù)據(jù)庫中沒有存儲您要查詢的數(shù)據(jù)!\n");
 printf("\n\n");
 return SUCCESS;
}

//查詢
int Emp_Que()
{
 system("cls");
 int que;
 while(1){
 system("cls");
 Print_Que(&que);
 while(que!='1' && que!='2' && que!='3'){
 putchar('\a');
 printf("\t○請重新輸入有效序號(1~3):【 】\b\b");
 que=getchar();
 }
 switch(que){
 case '1':
 Emp_QueAll();
 system("pause");
 getchar();
 break;
 case '2':
 Emp_QueNum();
 system("pause");
 getchar();
 break;
 case '3':
 Emp_QueVague();
 system("pause");
 getchar();
 break;
 case '4':
 Emp_Return();
 system("pause");
 getchar();
 break;
 }
 }
 return SUCCESS;
}

//返回
int Emp_Return()
{
 Emp_Menu();
 return SUCCESS;
}

//退出
void Emp_Quit()
{
 printf("\n\t◎謝謝使用!");
 system("pause");
 exit(0);
}

//menu函數(shù)
int Emp_Menu()
{
 //int* Menu=NULL;
 int menu=0;
 //Print_Head(&Menu);
 //menu=*Menu;
 //delete Menu;
 //printf("%d\n",menu);
 Print_Head(&menu);
 
 while(menu!='1' && menu!='2' && menu!='3'&& menu!='4') {
 printf("error! please input the right number!\n");
 putchar('\a');
 //getchar();
 printf("◎請重新輸入有效序號(1~4):【 】\b\b");
 menu=getchar();
 }
 switch(menu){
 case '1': 
 File_name();
 Emp_Add();
 break;
 case '2': 
 File_name();
 Emp_DelRev();
 break;
 case '3': 
 File_name();
 Emp_Que();
 break;
 case '4': 
 Emp_Quit();
 break;
 }
 return SUCCESS;
}
/*void Sig(int n)
{
 printf("\n\t◎程序將要退出,操作已保存!");
 system("pause");
 exit(0);
}*/
int main()
{
 //printf("\t◎使用Ctrl+C終止現(xiàn)在程序的運行!\n");
 //signal(SIGINT,Sig);
 Emp_Menu();
 return SUCCESS;
}

person.h

#ifndef __PERSON_H__
#define __PERSON_H_
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <signal.h>
#define SUCCESS  0
#define FAILED (!SUCCESS)
#define SIZE sizeof(struct Employee)
//全局變量
int flag=0;//返回標志
char filename[30];//要打開的文件名
//員工信息結構體
struct Employee{
 char name[20];
 char tel[15];
 char sex[5]; 
 char num[10];
 char age[3];
 struct Employee* next;
};

//建立一個鏈表
struct Employee* creat(int n);

//主函數(shù)
int Emp_Menu();
//首頁打印
int Print_Head();
//刪改打印
int Print_DelRev();
//增加打印
int Print_Add();
//表頭打印
int Print_Tittle();
//新建文件寫入
int WriteData_wb(struct Employee *head);
//在已有的文件寫入
int WriteData_ab(struct Employee *head);
//添加
int Emp_Add();
//刪除
int Emp_Del();
//修改
int Emp_Rev();
//查詢
int Emp_Que();
//返回
int Emp_Return();
//退出
void Emp_Quit();

#endif //__PERSON_H__

更多學習資料請關注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 關于C++的強制類型轉換淺析

    關于C++的強制類型轉換淺析

    C++的強制類型轉換是我們在日常開發(fā)中經(jīng)常會遇到的,下面這篇文章主要給大家介紹了關于C++強制類型轉換的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-09-09
  • C語言通過案例講解并發(fā)編程模型

    C語言通過案例講解并發(fā)編程模型

    所謂并發(fā)編程是指在一臺處理器上“同時”處理多個任務。并發(fā)是在同一實體上的多個事件。多個事件在同一時間間隔發(fā)生,下面我們根據(jù)樣例來理解
    2022-04-04
  • C++中template方法undefined reference to的問題解決

    C++中template方法undefined reference to的問題解決

    Undefined reference to 錯誤:這類錯誤是在連接過程中出現(xiàn)的,本文就來介紹一下C++中template方法undefined reference to的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 重啟后nvidia-smi命令不可執(zhí)行出現(xiàn)“Make?sure?that?the?latest?NVIDIA?driver?is?installed?and?running.”的問題解決

    重啟后nvidia-smi命令不可執(zhí)行出現(xiàn)“Make?sure?that?the?latest?NVIDIA?

    這篇文章主要介紹了重啟后nvidia-smi命令不可執(zhí)行,出現(xiàn)“Make?sure?that?the?latest?NVIDIA?driver?is?installed?and?running.”問題,本文給大家分享最新完美解決方法,需要的朋友可以參考下
    2022-12-12
  • C語言從編譯到運行過程詳解

    C語言從編譯到運行過程詳解

    這篇文章主要介紹了C語言從編譯到運行的一個過程的相關資料,需要的朋友可以參考下面文章具體的內容
    2021-09-09
  • socket編程的詳細講解

    socket編程的詳細講解

    本文詳細講解了socket編程,它是網(wǎng)絡中經(jīng)常使用的一門技術,該文章通過大量的代碼來解釋,大家可以參考參考
    2021-08-08
  • C語言轉義字符詳解

    C語言轉義字符詳解

    這篇文章主要介紹了C語言轉義字符詳解,本篇文章通過簡要的案例,講解了C語言轉義字符該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言編程中對目錄進行基本的打開關閉和讀取操作詳解

    C語言編程中對目錄進行基本的打開關閉和讀取操作詳解

    這篇文章主要介紹了C語言編程中對目錄進行基本的打開關閉和讀取操作,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言掃雷詳細代碼分步實現(xiàn)流程

    C語言掃雷詳細代碼分步實現(xiàn)流程

    掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會,幾次調試之后,發(fā)現(xiàn)這個比三子棋要復雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實際游戲差別較大,不能使用光標,下面來詳解每一步分析
    2022-02-02
  • 在Vitis?IDE中如何使用第三方庫?libtiff?保存?tiff?文件

    在Vitis?IDE中如何使用第三方庫?libtiff?保存?tiff?文件

    這篇文章主要介紹了在Vitis?IDE中如何使用第三方庫?libtiff?保存?tiff?文件,本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論

舒城县| 西乡县| 衢州市| 牙克石市| 武清区| 五大连池市| 富蕴县| 谷城县| 阿克苏市| 富锦市| 东阳市| 桐庐县| 洪泽县| 墨江| 响水县| 康平县| 石家庄市| 石景山区| 冕宁县| 聊城市| 会昌县| 孙吴县| 英超| 岑溪市| 建德市| 黑水县| 阿拉善盟| 当雄县| 青田县| 若羌县| 汤原县| 英山县| 连云港市| 田东县| 东阿县| 九寨沟县| 张家界市| 合肥市| 达州市| 当雄县| 正宁县|