需求分析
1.1?設計系統(tǒng)的目的分析
本系統(tǒng)要求用 C 語言建立一個職工信息管理系統(tǒng),本職工信息管理系統(tǒng)可以實現(xiàn)對眾多員工信息的管理。包含對職工信息進行添加、查詢、刪除、修改。
1.2系統(tǒng)的界面要求?
按任意鍵便可以進入主菜單,在主菜單上顯示出該系統(tǒng)的功能,通過輸入數(shù)字 0 到 6?來進行選擇便可以實現(xiàn)用戶所需要的功能,每個模塊進入模塊內部實現(xiàn)系統(tǒng)的具體功能,實現(xiàn)用戶所需要的功能。
1.3主體功能分析?
該系統(tǒng)用下面六個功能模塊編寫,每個模塊執(zhí)行不同的功能,體現(xiàn)了模塊化
設計的思想。下面六個模塊都是利用 C 語言文件文件操作,向文件中添加數(shù)據、修改數(shù)據、查詢數(shù)據、刪除數(shù)據和保存數(shù)據。
1.3.1創(chuàng)建、讀取和寫入文件?
???判斷是否有存儲信息用的文本文件,若無則提示需建立一個文件。
用 fopen()建立一個文本文件,然后向其中寫入數(shù)據(例如,向文件中輸
入“職工號”,“姓名”,“性別”,“年齡”“學歷”,“工資”“住址”,“電話”),并對文件進行命名為a.txt。
1.3.2?添加職工信息?
通過鍵盤輸入職工人員的職工號、姓名、性別、年齡、職務電話號碼、地址信息便可被添加到通訊錄文件內,添加完畢后,系統(tǒng)會自動詢問你是否繼續(xù)添加,如你想繼續(xù)添加,再通過鍵盤輸入通訊錄人員的姓名、電話號碼、地址信息即可實現(xiàn)繼續(xù)添加。
通過調用add()函數(shù)來添加職工信息,可以連續(xù)添加多個職工信息。
1.3.3?顯示職工信息?
通過前面第一個模塊添加職工信息后,之后便可以執(zhí)行第二個模塊,通過第二個模塊可以對已有的職工信息進行顯示。
通過調用 browser()函數(shù)來進行顯示所有的職工信息,browser()函數(shù)可以實現(xiàn)顯示全部職工信息。
1.3.4?查詢職工信息?
調用search()函數(shù)來實現(xiàn)查詢功能。查詢可由四個方式進行:一是根據職工號進行查詢,二是根據姓名進行查詢。
1.3.5?刪除職工信息
調用_delete()函數(shù)實現(xiàn)刪除功能,刪除可由兩個方式進行:一是根據職工號進行刪除,二是根據姓名進行刪除。
1.3.6修改職工信息?
調用 modify()函數(shù)來實現(xiàn)修改功能,提供了修改方法為根據職工號進行修改。
1.4?設計要求分析?
①根據題目要求,運用所學知識,完成設計和實現(xiàn)工作,并按照書寫規(guī)范,
撰寫課程設計報告。
②進一步理解和運用結構化程序設計的思想和方法;
③掌握開發(fā)一個小型實用系統(tǒng)的基本方法; ?
④學會利用流程圖表示算法。
⑤學會調試一個較長程序的基本方法,進一步掌握利用 C 語言進行程序設計的能力;
1.5軟件的數(shù)據結構分析?
1.5.1?軟件的函數(shù)?
本軟件采用了不同的函數(shù)來進行定義不同模塊的功能,通過調用不同的函數(shù),可以實現(xiàn)不同的功能。軟件中采用了五個主體函數(shù)來實現(xiàn)添加職工,修改職工,查找職工,顯示職工,刪除職工的功能。
1.5.2?文件的調用和保存?
本系統(tǒng)通過文本方式對用戶所添加的信息進行保存。通過保存下來的文本文件,用戶可以在電腦磁盤中找到用戶存入文件,進而可以找到用戶所錄入的職工信息。
?概要設計
2.1 系統(tǒng)界面設計
做到整潔清楚,能夠層層選擇進行具體的操作,對用戶的請求能夠進行合適的反饋。既有輸入界面,又有輸出界面,每個界面都有詳細的指引。
2.2 系統(tǒng)的數(shù)據(結構)設計?
系統(tǒng)通過調用不同的函數(shù)來實現(xiàn)不同的功能,通過循環(huán)調用函數(shù)來實現(xiàn)反復輸入,實現(xiàn)用戶不同的需求。
用戶通過代碼中的scanf()函數(shù)從鍵盤上輸入不同的數(shù)字選項,然后通過 swtich case()分支條件語句來實現(xiàn)對不同函數(shù)的調用,滿足各種需求。
2.2.1 系統(tǒng)的文件功能
系統(tǒng)采用了文本文檔進行存取,在 C 盤建立了一個a.txt?的文本文檔用于存放用戶輸入的職工信息,打開 C 盤后就能直接看到用戶錄入的信息,做到簡潔和方便。
2.3 系統(tǒng)的模塊圖?
系統(tǒng)的模塊圖很直觀的反映出軟件能夠實現(xiàn)的功能,由下面的模塊圖可以很
直觀的看出該職工信息管理系統(tǒng)的添加職工信息、顯示職工信息、刪除職工信息、修改職工信息功能。
- 增加職工信息部分,有九個模塊,一步步完善職工信息。
- 在顯示聯(lián)系人部分,直接顯示所有職工信息。
- 查詢職工信息部分,有四個模塊,可通過按工號查詢,按姓名查詢,按學歷查詢,按職務查詢,然后顯示職工信息。
- 在修改職工信息部分,輸入要修改的職工的工號,然后根據需要,修改職工的姓名,學歷,職務,工資,住址,電話。
- 在刪除職工信息模塊,輸入要刪除的職工的工號,即可完成刪除。
- 最后是退出模塊,需要保存信息后退出。異常退出可能會導致數(shù)據丟失。
圖1系統(tǒng)模塊圖
2.4 系統(tǒng)的流程圖?
由于系統(tǒng)流程圖較為復雜,采用了分塊畫出程序流程圖。
2.4.1 添加職工信息程序流程圖
由添加職工的程序流程圖可以看出,在添加職工板塊上,有三種信息:
輸入工號,姓名,性別,年齡,學歷,職務,工資,住址,電話;輸入完成后會提示是否繼續(xù)輸入,如果輸入Y則繼續(xù)輸入,輸入N后返回主菜單。
圖2添加職工信息流程圖
2.4.2 顯示職工信息程序流程圖
在主菜單上輸入 2 后便可以顯示職工信息。
圖3顯示職工信息流程圖
2.4.3 查詢職工流程圖
在刪除聯(lián)系人流程圖上,分為全部刪除和單個刪除功能,單個刪除設計了按
照姓名刪除和按電話號碼刪除兩種選擇,在刪除時,系統(tǒng)都會詢問您是否刪除,
以免誤刪。
圖4查詢職工流程圖
2.4.3 修改職工信息流程圖
修改聯(lián)系人界面,輸入輸入需修改的職工的工號即可。
修改項目:修改姓名,修改學歷,修改職務,修改工資,修改地址,修改完畢后系統(tǒng)會提示您是否繼續(xù) ,輸入Y修改,如不修改,則輸入N又返回主界面等待輸入。
圖5修改職工信息流程圖
詳細設計
3.1 函數(shù)聲明和結構定義
#define N 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read();//讀取信息函數(shù)
void write();//寫入信息函數(shù)
void menu();//菜單函數(shù)
void add();//添加職工信息函數(shù)
void show(int id);//顯示職工信息函數(shù)
void browser();//顯示所有職工信息函數(shù)
void search();//查詢職工信息函數(shù)
void modify();//修改職工信息函數(shù)
void _delete();//刪除職工信息函數(shù)
struct Worker {//這里的結構體有待改進
char ID[20];
char name[20];
char sex[10];
char age[10];
char edu[20];
char position[20];
char wage[20];
char address[50];
char tel[20];
}work[N];
int n; // 記錄數(shù)量
3.2?讀取信息函數(shù)
void read()//讀入數(shù)據
{
FILE *fp;
int i = 0;
if( (fp = fopen("c:\\a.txt","r")) == NULL )
{
printf("請新建一個文本文件,文件名為a\n\n\n");
system("pause");
system("cls");
return ;
}
fscanf(fp,"%d\n",&n);
while(i < n)
{
fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].age,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp);
}
3.3寫入信息函數(shù)
void write()//寫入數(shù)據
{
FILE *fp;
int i = 0;
if( (fp = fopen("c:\\a.txt","w")) == NULL )
{
printf("無法打開文件!\n");
return ;
}
fprintf(fp,"%d\n",n);
while(i < n)
{
fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].age,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp);
}
3.4菜單函數(shù)
void menu()//菜單
{
printf("* * 職工信息管理系統(tǒng)菜單 * *\n");
printf("* *\n");
printf("* 1.添加職工信息 *\n");
printf("* *\n");
printf("* 2.顯示職工信息 *\n");
printf("* *\n");
printf("* 3.查詢職工信息 *\n");
printf("* *\n");
printf("* 4.修改職工信息 *\n");
printf("* *\n");
printf("* 5.刪除職工信息 *\n");
printf("* *\n");
printf("* 0.退出 *\n");
printf("* *\n");
printf("* * * * * * * * * * * * * **\n");
printf("請輸入選項(0-5): ");
}
3.5添加職工信息函數(shù)
void add()// 從鍵盤輸入
{
int i;
int flag;//標記工號是否已存在
char c;
read();//輸入數(shù)據前先將文件中原有的數(shù)據讀入
do
{
flag = 0;
printf("請輸入職工的工號: \n\t\t");
scanf("%s",work[n].ID);
for(i = 0 ; i < n ; i ++)
{
if(strcmp(work[i].ID,work[n].ID) == 0)
{
flag = 1;
break;
}
}
if(flag)
{
printf("該工號已存在!\n\n");
printf("是否繼續(xù)輸入?(Y/N): ");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
continue;
}
printf("請輸入職工的姓名: \n");
scanf("%s",work[n].name);
printf("請輸入職工的性別: \n");
scanf("%s",work[n].sex);
printf("請輸入職工的年齡: \n");
scanf("%s",work[n].age);
printf("請輸入職工的學歷: \n");
scanf("%s",work[n].edu);
printf("請輸入職工的職務: \n");
scanf("%s",work[n].position);
printf("請輸入職工的工資: \n");
scanf("%s",work[n].wage);
printf("請輸入職工的住址: \n");
scanf("%s",work[n].address);
printf("請輸入職工的電話: \n");
scanf("%s",work[n].tel);
printf("是否繼續(xù)輸入?(Y/N): ");
scanf("%*c%c",&c);
n ++;
}while( c != 'N' && c != 'n');
write();
printf("\n\n數(shù)據已保存!\n\n");
}
3.6顯示職工信息函數(shù)
void show(int id)
{
printf("職工號: %s\n",work[id].ID);
printf("姓名: %s\n",work[id].name);
printf("性別: %s\n",work[id].sex);
printf("年齡: %s\n",work[id].age);
printf("學歷: %s\n",work[id].edu);
printf("職務: %s\n",work[id].position);
printf("工資: %s\n",work[id].wage);
printf("住址: %s\n",work[id].address);
printf("電話: %s\n",work[id].tel);
printf("\n\n\n");
}
3.7顯示所有職工信息函數(shù)
void browser()//顯示所有職工信息
{
int i;
read();
if(n == 0) printf("無記錄!\n\n");
else
for(i = 0 ; i < n ; i ++)
{
show(i);
}
}
3.8查詢職工信息函數(shù)
void search()//查詢信息
{
char num;
int flag,i;
char s_id[20] ;//查詢工號
char s_name[20] ;//查詢姓名
char s_edu[20] ; //查詢學歷
char s_position[20] ;//查詢職位
char c;//指令Y?N
read();//打開程序后,要查詢以前的數(shù)據,要先讀入
while(1)
{
system("cls");
printf("* * * * * * * 查詢* * * * * * *\n");
printf("* *\n");
printf("* 1.按工號查詢 *\n");
printf("* *\n");
printf("* 2.按姓名查詢 *\n");
printf("* *\n");
printf("* 3.按學歷查詢 *\n");
printf("* *\n");
printf("* 4.按職務查詢 *\n");
printf("* *\n");
printf("* 輸入其他任意鍵退出本模塊 *\n");
printf("* * * * * * * * * * * * * * * *\n");
printf("請輸入指令(1-4):");
scanf("%*c%c",&num);
if(num < '1' || num > '4')
{
printf("錯誤指令!\n\n");
system("pause");
continue;
}
system("cls");
flag = 0;//用來標記職工信息是否存在
if(num == '1')//按工號查詢
{
printf("請輸入您要查詢職工的工號:");
scanf("%s",s_id);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].ID,s_id) == 0)
{
show(i);
flag = 1;//標記
break;
}
}
}
else if(num == '2')//按姓名查詢
{
printf("請輸入您要查詢職工的姓名:");
scanf("%s",s_name);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].name,s_name) == 0)
{
show(i);
flag = 1;//標記
}
}
}
else if(num == '3')//按學歷查詢
{
printf("請輸入您要查詢職工的學歷:");
scanf("%s",s_edu);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].edu,s_edu) == 0)
{
show(i);
flag = 1;//標記
}
}
}
else if(num == '4')//按職務查詢
{
printf("請輸入您要查詢職工的職務:");
scanf("%s",s_position);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].position,s_position) == 0)
{
show(i);
flag = 1;//標記
}
}
}
if(!flag)//判斷是否有該職工信息
{
printf("\n\n無該職工信息!\n\n");
}
printf("\n\n是否繼續(xù)查詢(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
}
3.9修改職工信息函數(shù)
void modify()//修改職工信息
{
char change_ID[20];//需修改的職工的工號
int number;//職工信息在數(shù)據中的位置
char num;//指令
char message[100];//修改的信息
char c;//指令Y?N
int flag;
int i;
read();
while(1)
{
flag = 0;
system("cls");
printf("請輸入需修改的職工的工號:");
scanf("%s",change_ID);
for(i = 0 ; i < n ; i ++)
{
if( strcmp(work[i].ID,change_ID) == 0 )
{
number = i;
flag = 1;
break;
}
}
if(!flag)
{
printf("\n\n無此員工信息!!\n\n");
printf("\n\n是否繼續(xù)修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
continue;
}
printf("\n\n* * * * * * * * 修改* * * * * * *\n");
printf("* *\n");
printf("* 1.修改姓名 *\n");
printf("* *\n");
printf("* 2.修改學歷 *\n");
printf("* *\n");
printf("* 3.修改職務 *\n");
printf("* *\n");
printf("* 4.修改工資 *\n");
printf("* *\n");
printf("* 5.修改住址 *\n");
printf("* *\n");
printf("* 6.修改電話 *\n");
printf("* *\n");
printf("* 輸入其他任意鍵退出本模塊 *\n");
printf("* * * * * * * * * * * * * * * * *\n");
printf("請輸入指令(1-6):");
scanf("%*c%c",&num);
if(num < '1' || num > '6')
{
printf("錯誤指令!\n\n");
system("pause");
continue;
}
system("cls");
printf("請輸入修改后的信息:");
scanf("%s",message);
switch(num)
{
case '1' : strcpy(work[number].name,message); break;
case '2' : strcpy(work[number].edu,message); break;
case '3' : strcpy(work[number].position,message); break;
case '4' : strcpy(work[number].wage,message); break;
case '5' : strcpy(work[number].address,message); break;
case '6' : strcpy(work[number].tel,message); break;
}
system("cls");
printf("\n\n是否繼續(xù)修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
write();
}
3.10刪除職工信息函數(shù)
void _delete()//刪除職工信息
{
char delete_ID[20];//刪除職工工號
int i,j;
int flag;//標記是否有該職工信息
char c;
read();
while(1)
{
system("cls");
flag = 0;
printf("請輸入需刪除職工信息的工號:");
scanf("%s",delete_ID);
for(i = 0 ; i < n ; i ++)
{
if( strcmp(work[i].ID,delete_ID) == 0)
{
n --;
flag = 1;
for(j = i ; j < n ; j ++)
{
work[j] =work[j + 1];
}
break;
}
}
if(!flag) printf("\n\n無此員工信息!\n\n");
else printf("\n\n刪除成功!\n");
printf("\n\n是否繼續(xù)刪除(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
write();
}
3.11主函數(shù)
int main()
{
int num;
n = 0;
while(1)
{
menu();
scanf("%d",&num);
system("cls");
switch(num)
{
case 1: add(); break;
case 2: browser(); break;
case 3: search(); break;
case 4: modify(); break;
case 5: _delete(); break;
case 0: printf("謝謝使用!\n\n"); return 0;
default :printf("\n--->無效的指令!\n\n\n");
}
system("pause");
system("cls");
}
}
——————————————————————————————————————————
全部代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-482795.html
#define _CRT_SECURE_NO_WARNINGS 1 // 避免實驗環(huán)境為VS時不必要的報錯
#define N 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read();//讀取信息函數(shù)
void write();//寫入信息函數(shù)
void menu();//菜單函數(shù)
void add();//添加職工信息函數(shù)
void show(int id);//顯示職工信息函數(shù)
void browser();//顯示所有職工信息函數(shù)
void search();//查詢職工信息函數(shù)
void modify();//修改職工信息函數(shù)
void _delete();//刪除職工信息函數(shù)
struct Worker {
char ID[20];
char name[20];
char sex[10];
char age[10];
char edu[20];
char position[20];
char wage[20];
char address[50];
char tel[20];
}work[N];
int n; // 記錄數(shù)量
void read()//讀入數(shù)據
{
FILE* fp;
int i = 0;
if ((fp = fopen("c:\\a.txt", "r")) == NULL)
{
printf("請新建一個文本文件,文件名為a\n\n\n");
system("pause");
system("cls");
return;
}
fscanf(fp, "%d\n", &n);
while (i < n)
{
fscanf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name, work[i].sex, work[i].age, work[i].edu, work[i].position, work[i].wage, work[i].address, work[i].tel);
i++;
}
fclose(fp);
}
void write()//寫入數(shù)據
{
FILE* fp;
int i = 0;
if ((fp = fopen("c:\\a.txt", "w")) == NULL)
{
printf("無法打開文件!\n");
return;
}
fprintf(fp, "%d\n", n);
while (i < n)
{
fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name, work[i].sex, work[i].age, work[i].edu, work[i].position, work[i].wage, work[i].address, work[i].tel);
i++;
}
fclose(fp);
}
void menu()//菜單
{
printf("* * 職工信息管理系統(tǒng)菜單 * *\n");
printf("* *\n");
printf("* 1.添加職工信息 *\n");
printf("* *\n");
printf("* 2.顯示職工信息 *\n");
printf("* *\n");
printf("* 3.查詢職工信息 *\n");
printf("* *\n");
printf("* 4.修改職工信息 *\n");
printf("* *\n");
printf("* 5.刪除職工信息 *\n");
printf("* *\n");
printf("* 0.退出 *\n");
printf("* *\n");
printf("* * * * * * * * * * * * * **\n");
printf("請輸入選項(0-5): ");
}
void add()// 從鍵盤輸入
{
int i;
int flag;//標記工號是否已存在
char c;
read();//輸入數(shù)據前先將文件中原有的數(shù)據讀入
do
{
flag = 0;
printf("請輸入職工的工號: \n\t\t");
scanf("%s", work[n].ID);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].ID, work[n].ID) == 0)
{
flag = 1;
break;
}
}
if (flag)
{
printf("該工號已存在!\n\n");
printf("是否繼續(xù)輸入?(Y/N): ");
scanf("%*c%c", &c);
if (c == 'N' || c == 'n') break;
continue;
}
printf("請輸入職工的姓名: \n");
scanf("%s", work[n].name);
printf("請輸入職工的性別: \n");
scanf("%s", work[n].sex);
printf("請輸入職工的年齡: \n");
scanf("%s", work[n].age);
printf("請輸入職工的學歷: \n");
scanf("%s", work[n].edu);
printf("請輸入職工的職務: \n");
scanf("%s", work[n].position);
printf("請輸入職工的工資: \n");
scanf("%s", work[n].wage);
printf("請輸入職工的住址: \n");
scanf("%s", work[n].address);
printf("請輸入職工的電話: \n");
scanf("%s", work[n].tel);
printf("是否繼續(xù)輸入?(Y/N): ");
scanf("%*c%c", &c);
n++;
} while (c != 'N' && c != 'n');
write();
printf("\n\n數(shù)據已保存!\n\n");
}
void show(int id)
{
printf("職工號: %s\n", work[id].ID);
printf("姓名: %s\n", work[id].name);
printf("性別: %s\n", work[id].sex);
printf("年齡: %s\n", work[id].age);
printf("學歷: %s\n", work[id].edu);
printf("職務: %s\n", work[id].position);
printf("工資: %s\n", work[id].wage);
printf("住址: %s\n", work[id].address);
printf("電話: %s\n", work[id].tel);
printf("\n\n\n");
}
void browser()//顯示所有職工信息
{
int i;
read();
if (n == 0) printf("無記錄!\n\n");
else
for (i = 0; i < n; i++)
{
show(i);
}
}
void search()//查詢信息
{
char num;
int flag, i;
char s_id[20];//查詢工號
char s_name[20];//查詢姓名
char s_edu[20]; //查詢學歷
char s_position[20];//查詢職位
char c;//指令Y?N
read();//打開程序后,要查詢以前的數(shù)據,要先讀入
while (1)
{
system("cls");
printf("* * * * * * * 查詢* * * * * * *\n");
printf("* *\n");
printf("* 1.按工號查詢 *\n");
printf("* *\n");
printf("* 2.按姓名查詢 *\n");
printf("* *\n");
printf("* 3.按學歷查詢 *\n");
printf("* *\n");
printf("* 4.按職務查詢 *\n");
printf("* *\n");
printf("* 輸入其他任意鍵退出本模塊 *\n");
printf("* * * * * * * * * * * * * * * *\n");
printf("請輸入指令(1-4):");
scanf("%*c%c", &num);
if (num < '1' || num > '4')
{
printf("錯誤指令!\n\n");
system("pause");
continue;
}
system("cls");
flag = 0;//用來標記職工信息是否存在
if (num == '1')//按工號查詢
{
printf("請輸入您要查詢職工的工號:");
scanf("%s", s_id);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].ID, s_id) == 0)
{
show(i);
flag = 1;//標記
break;
}
}
}
else if (num == '2')//按姓名查詢
{
printf("請輸入您要查詢職工的姓名:");
scanf("%s", s_name);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].name, s_name) == 0)
{
show(i);
flag = 1;//標記
}
}
}
else if (num == '3')//按學歷查詢
{
printf("請輸入您要查詢職工的學歷:");
scanf("%s", s_edu);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].edu, s_edu) == 0)
{
show(i);
flag = 1;//標記
}
}
}
else if (num == '4')//按職務查詢
{
printf("請輸入您要查詢職工的職務:");
scanf("%s", s_position);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].position, s_position) == 0)
{
show(i);
flag = 1;//標記
}
}
}
if (!flag)//判斷是否有該職工信息
{
printf("\n\n無該職工信息!\n\n");
}
printf("\n\n是否繼續(xù)查詢(Y/N):");
scanf("%*c%c", &c);
if (c == 'N' || c == 'n') break;
}
}
void modify()//修改職工信息
{
char change_ID[20];//需修改的職工的工號
int number;//職工信息在數(shù)據中的位置
char num;//指令
char message[100];//修改的信息
char c;//指令Y?N
int flag;
int i;
read();
while (1)
{
flag = 0;
system("cls");
printf("請輸入需修改的職工的工號:");
scanf("%s", change_ID);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].ID, change_ID) == 0)
{
number = i;
flag = 1;
break;
}
}
if (!flag)
{
printf("\n\n無此員工信息?。n\n");
printf("\n\n是否繼續(xù)修改(Y/N):");
scanf("%*c%c", &c);
if (c == 'N' || c == 'n') break;
continue;
}
printf("\n\n* * * * * * * * 修改* * * * * * *\n");
printf("* *\n");
printf("* 1.修改姓名 *\n");
printf("* *\n");
printf("* 2.修改學歷 *\n");
printf("* *\n");
printf("* 3.修改職務 *\n");
printf("* *\n");
printf("* 4.修改工資 *\n");
printf("* *\n");
printf("* 5.修改住址 *\n");
printf("* *\n");
printf("* 6.修改電話 *\n");
printf("* *\n");
printf("* 輸入其他任意鍵退出本模塊 *\n");
printf("* * * * * * * * * * * * * * * * *\n");
printf("請輸入指令(1-6):");
scanf("%*c%c", &num);
if (num < '1' || num > '6')
{
printf("錯誤指令!\n\n");
system("pause");
continue;
}
system("cls");
printf("請輸入修改后的信息:");
scanf("%s", message);
switch (num)
{
case '1': strcpy(work[number].name, message); break;
case '2': strcpy(work[number].edu, message); break;
case '3': strcpy(work[number].position, message); break;
case '4': strcpy(work[number].wage, message); break;
case '5': strcpy(work[number].address, message); break;
case '6': strcpy(work[number].tel, message); break;
}
system("cls");
printf("\n\n是否繼續(xù)修改(Y/N):");
scanf("%*c%c", &c);
if (c == 'N' || c == 'n') break;
}
write();
}
void _delete()//刪除職工信息
{
char delete_ID[20];//刪除職工工號
int i, j;
int flag;//標記是否有該職工信息
char c;
read();
while (1)
{
system("cls");
flag = 0;
printf("請輸入需刪除職工信息的工號:");
scanf("%s", delete_ID);
for (i = 0; i < n; i++)
{
if (strcmp(work[i].ID, delete_ID) == 0)
{
n--;
flag = 1;
for (j = i; j < n; j++)
{
work[j] = work[j + 1];
}
break;
}
}
if (!flag) printf("\n\n無此員工信息!\n\n");
else printf("\n\n刪除成功!\n");
printf("\n\n是否繼續(xù)刪除(Y/N):");
scanf("%*c%c", &c);
if (c == 'N' || c == 'n') break;
}
write();
}
int main()
{
int num;
n = 0;
while (1)
{
menu();
scanf("%d", &num);
system("cls");
switch (num)
{
case 1: add(); break;
case 2: browser(); break;
case 3: search(); break;
case 4: modify(); break;
case 5: _delete(); break;
case 0: printf("謝謝使用!\n\n"); return 0;
default:printf("\n--->無效的指令!\n\n\n");
}
system("pause");
system("cls");
}
}
如果對你有幫助請支持一下哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-482795.html
到了這里,關于程序設計職工管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!