/*------------------------------------------------------------------------
* filename - workmanagerment.c
*
* written by
* 沈豪傑(01213229)&&王鵬(01213208)
*-----------------------------------------------------------------------*/
/*[]---------------------------------------------------[]*/
/* */
/* Turbo C Run workmanagerment.c- Version 1.1 */
/* */
/* */
/* Copyright (c) 2003 6 28 by shj and wp */
/* All Rights Reserved. */
/* */
/*[]---------------------------------------------------[]*/
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>
#define maxworker 100
FILE *fp; /*定義全局變量fp,指向數據庫文件 worker.txt*/
strUCt date{ /*日期的結構,用於存儲工人的生日,工作日期等*/
int year;
int month;
int day;
};
struct address { /*地址的結構, 用於存儲工人的地址*/
char province[10];
char city[10];
char street[20];
};
struct WORKER { /*工人的資料總結構*/
char name[20];
enum {male,female}sex;
struct date birthday;
enum {elesch,middle,high,university,other}rofs;
struct date workday;
int workeri;
char position[20];
struct address addr;
int workerj;
char tel[13];
};
/*程序的初始化函數,用於從數據庫中讀出現存的資料到內存中*/
data_load(int *i,struct WORKER *p){
char c;
long int k;
fp=fopen("worker.txt","r");
if(!fp){fopen("worker.txt","w+");*i=0;}
else{
for((*i)=0;(*i)<maxworker;(*i)++){
if(feof(fp)) return;
c=fgetc(fp);
if(c==EOF) return;
fflush(stdin);
k=*i;
fseek(fp,k*sizeof(struct WORKER),SEEK_SET);
fread(&p[*i],sizeof(struct WORKER),1,fp);
}
}
fclose(fp);
}
/*添加一個工人的資料*/
void add(int *i,struct WORKER *profile){
char add_name[20],add_position[20],add_addr_province[20],add_addr_city[20],add_addr_street[30],add_tel[13];
int add_birthday_year,add_birthday_month,add_birthday_day,add_workday_year,add_workday_month,add_workday_day;
int add_sex,add_rofs;
enum {false,true}status;
status=false;
printf("
Now add NO. %d worker's profile
",*i+1);
/*以下是處理輸入的循環,可能有些繁雜,希望高手給指點一下
其中status是個flag,用於指定是否有輸錯的地方,假如有的話,
馬上跳的最初的提示。
*/
while(status==false){
printf("Enter the name of the worker:");
scanf("%s",add_name);
if(strlen(add_name)==0 strlen(add_name)>20){
status=false;puts("input error,name cannot over 8 character or less than 0 character!");
continue;
}
else
status=true;
printf("Enter the gender of worker:(1=>female,0=>male)");
scanf("%d",&add_sex);
if(add_sex!=0 && add_sex!=1){
status=false;puts("only 0 or 1 can be accepted!");
continue;
}
else
status=true;
printf("Enter the birthday of worker:
");
printf(" Year:");
scanf("%4d",&add_birthday_year);
if(add_birthday_year>9999 add_birthday_year<0){
status=false;puts("input error,the year of birthday cannot more than 9999 or less than 0!");
continue;
}
else
status=true;
printf(" Month:");
scanf("%2d",&add_birthday_month);
if(add_birthday_month>12 add_birthday_month<1){
status=false;puts("input error,the month of birthday cannot be more than 12 or less than 1");
continue;
}
else
status=true;
printf(" Day:");
scanf("%2d",&add_birthday_day);
if(add_birthday_day>31 add_birthday_day<1){
status=false;puts("input error,the year of birthday cannot be more than 31 or less than 1!");
continue;
}
else
status=true;
printf("Enter the workday of worker:
");
printf(" Year:");
scanf("%4d",&add_workday_year);
if(add_workday_year>9999 add_workday_year<0){
status=false;puts("input error,the year of workday cannot more than 9999 or less than 0!");
continue;
}
else
status=true;
printf(" Month:");
scanf("%2d",&add_workday_month);
if(add_workday_month>12 add_workday_month<1){
status=false;puts("input error,the month of workday cannot be more than 12 or less than 1");
continue;
}
else
status=true;
printf(" Day:");
scanf("%2d",&add_workday_day);
if(add_workday_day>31 add_workday_day<1){
status=false;puts("input error,the year of workday cannot be more than 31 or less than 1!");
continue;
}
else
status=true;
[1] [2] [3] [4] [5] [6]