時隔一年,找到了去年的課程設計,給學弟學妹白嫖了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct worker //節點類型聲明
{
char ID[20];//工號
char name[20];//姓名
char born[20];//生日
char wage[10];//工資
}work[1000];
int n ;
//文件讀寫模塊
void read()//讀入數據
{
FILE *fp;
int i = 0;
if( (fp = fopen("d:\\date.txt","r")) == NULL )
{
printf("請在d盤根目錄下新建一個文本文件,文件名爲date\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",work[i].ID,work[i].name,work[i].born,work[i].wage);
i ++;
}
fclose(fp);
}
void write()//寫入數據
{
FILE *fp;
int i = 0;
if( (fp = fopen("d:\\date.txt","w")) == NULL )
{
printf("無法打開文件!\n");
return ;
}
fprintf(fp,"%d\n",n);
while(i < n)
{
fprintf(fp,"%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].born,work[i].wage);
i ++;
}
fclose(fp);
}
//輸入模塊
void input()// 從鍵盤輸入
{
int i;
int flag;//標記工號是否已存在
char c;//指令Y?N
read();//輸入數據前先將文件中原有的數據讀入
do
{
flag = 0;
printf("\t\t請輸入職工的工號: \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("\t\t是否繼續輸入?(Y/N): ");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
continue;
}
printf("\t\t請輸入職工的姓名: \n\t\t");
scanf("%s",work[n].name);
printf("\t\t請輸入職工的出生年月: \n\t\t");
scanf("%s",work[n].born);
printf("\t\t請輸入職工的工資: \n\t\t");
scanf("%s",work[n].wage);
printf("\t\t是否繼續輸入?(Y/N): ");
scanf("%*c%c",&c);
n ++;
}while( c != 'N' && c != 'n');
write();
printf("\n\n數據已保存!\n\n");
}
//顯示模塊
void output_inf(int id)
{
printf("\t\t 工號: %s\n",work[id].ID);
printf("\t\t 姓名: %s\n",work[id].name);
printf("\t\t出生年月: %s\n",work[id].born);
printf("\t\t 工資: %s\n",work[id].wage);
printf("\n\n\n");
}
void show()//顯示所有職工信息
{
int i;
read();
if(n == 0) printf("無記錄!\n\n");
else
for(i = 0 ; i < n ; i ++)
{
output_inf(i);
}
}
//查詢模塊
void que()//查詢信息
{
char num;
int flag,i;
char q_id[20] ;//查詢工號
char q_name[20] ;//查詢姓名
char c;//指令Y?N
read();//打開程序後,要查詢以前的數據,讀入數據
while(1)
{
system("cls");
printf("\t\t******************查詢********************\n");
printf("\t\t* *\n");
printf("\t\t* 1.按工號查詢 *\n");
printf("\t\t* *\n");
printf("\t\t* 2.按姓名查詢 *\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t* 輸入其他任意鍵退出本模塊 *\n");
printf("\t\t******************************************\n");
printf("\t\t請輸入指令(1-2):");
scanf("%*c%c",&num);
if(num < '1' || num > '2')
{
printf("錯誤指令!\n\n");
system("pause");
continue;
}
system("cls");
flag = 0;//用來標記職工信息是否存在
if(num == '1')//按工號查詢
{
printf("\t\t請輸入您要查詢職工的工號:");
scanf("%s",q_id);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].ID,q_id) == 0)
{
output_inf(i);
flag = 1;//標記
break;
}
}
}
else if(num == '2')//按姓名查詢
{
printf("\t\t請輸入您要查詢職工的姓名:");
scanf("%s",q_name);
for(i = 0 ; i < n ;i ++)
{
if( strcmp(work[i].name,q_name) == 0)
{
output_inf(i);
flag = 1;//標記
}
}
}
if(!flag)//判斷是否有該職工信息
{
printf("\n\n無該職工信息!\n\n");
}
printf("\n\n是否繼續查詢(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
}
//修改信息模塊
void mod()//修改職工信息
{
char change_ID[20];//需修改的職工的工號
int number;//職工信息在數據中的位置
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是否繼續修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
continue;
}
printf("\n\n\t\t******************修改********************\n");
printf("\t\t* *\n");
printf("\t\t* 1.修改姓名 *\n");
printf("\t\t* *\n");
printf("\t\t* 2.修改工資 *\n");
printf("\t\t* *\n");
printf("\t\t* 輸入其他任意鍵退出本模塊 *\n");
printf("\t\t******************************************\n");
printf("\t\t請輸入指令(1-2):");
scanf("%*c%c",&num);
if(num < '1' || num > '2')
{
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].wage,message); break;
}
system("cls");
printf("\n\n是否繼續修改(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
write();
}
//刪除信息模塊
void del()//刪除職工信息
{
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是否繼續刪除(Y/N):");
scanf("%*c%c",&c);
if(c == 'N' || c == 'n') break;
}
write();
}
//菜單模塊
void menu()//菜單
{
printf("\t\t************職工信息管理系統菜單**********\n");
printf("\t\t* *\n");
printf("\t\t* 1.錄入職工信息 *\n");
printf("\t\t* *\n");
printf("\t\t* 2.顯示職工信息 *\n");
printf("\t\t* *\n");
printf("\t\t* 3.查詢職工信息 *\n");
printf("\t\t* *\n");
printf("\t\t* 4.修改職工信息 *\n");
printf("\t\t* *\n");
printf("\t\t* 5.刪除職工信息 *\n");
printf("\t\t* *\n");
printf("\t\t* 0.退出 *\n");
printf("\t\t* *\n");
printf("\t\t******************************************\n");
printf("\t\t請輸入指令(1-5): ");
}
int main()
{
int num;
n = 0;
system("color 0xd");
while(1)
{
menu();
scanf("%d",&num);
system("cls");//清屏
switch(num)
{
case 1: input(); break;
case 2: show(); break;
case 3: que(); break;
case 4: mod(); break;
case 5: del(); break;
case 0: printf("謝謝使用!\n\n"); return 0;
default :printf("\n--->無效的指令!\n\n\n");
}
system("pause"); //暫停,等待用戶信號;防止控制檯程序一閃而過
system("cls"); //清屏
}
}