예제 #1
0
void record_update(FILE * fp)
{
	emp_rec upd_emp;
	int emp_no,c=0;
	long pos;
	

	printf("Enter the employee no for update:");
	scanf("%d",&emp_no);
	pos=record_search(fp,emp_no);
	if(pos !=-1)
	{
	fseek(fp,pos,SEEK_SET);
	fread(&upd_emp,sizeof(emp_rec),1,fp);
	printf("\t\t\tDetails of Employee No: %d\n",upd_emp.emp_no);
	printf("\tEmployee Name:%s\n",upd_emp.emp_name);
	printf("\tEmployee Salary:%lf",upd_emp.emp_sal);
	printf("\tEmployee Address:%s\n",upd_emp.emp_add);
	printf("\tEmployee Mobile:%s\n",upd_emp.emp_mobile);
    
    	printf("Do you want to update Name?\n1. For Yes \n2. For No\n:");
	scanf("%d",&c);
	getchar();
	if(c==1)
		scanf("%[^\n]s",upd_emp.emp_name);
    	printf("Do you want to update Salary?\n1. For Yes \n2. For No\n:");
	scanf("%d",&c);
	getchar();
	if(c==1)
		scanf("%lf",&upd_emp.emp_sal);
    	printf("Do you want to update Address?\n1. For Yes \n2. For No\n:");
	scanf("%d",&c);
	getchar();
	if(c==1)
		scanf("%[^\n]s",upd_emp.emp_add);
    	printf("Do you want to update Mobile?\n1. For Yes \n2. For No\n:");
	scanf("%d",&c);
	getchar();
	if(c==1)
		scanf("%[^\n]s",upd_emp.emp_mobile);

	fseek(fp,-sizeof(emp_rec),SEEK_CUR);
	fwrite(&upd_emp,sizeof(emp_rec),1,fp);


	}

}
예제 #2
0
void record_delete(FILE * fp, FILE * delemp)
{
	emp_rec del_emp;
	int emp_no;
	long pos;
	printf("Enter the employee number for deletion:");
	scanf("%d",&emp_no);
	pos=record_search(fp,emp_no);
	if(pos!=-1)
	{
	fseek(fp,pos,SEEK_SET);
	del_emp.emp_no=-1;
	fwrite(&del_emp,sizeof(emp_rec),1,fp);
	fseek(delemp,0,SEEK_END);
	fwrite(&emp_no,sizeof(int),1,delemp);
	fwrite(&pos,sizeof(long),1,delemp);
	}

}
예제 #3
0
파일: bbsfall.c 프로젝트: phoenixgao/fdubbs
int bbsfdel_main(void)
{
	if (!loginok)
		return BBS_ELGNREQ;
	char *user = getparm("u");
	if (*user != '\0') {
		char file[HOMELEN];
		sethomefile(file, currentuser.userid, "friends");
		record_t r;
		if (record_open(file, O_RDWR, &r) < 0)
			return BBS_EINTNL;
		override_t key;
		strlcpy(key.id, user, sizeof(key.id));
		override_t *ptr =
				record_search(&r, &key, sizeof(key), lsearch, cmp_override);
		if (ptr != NULL)
			record_delete(&r, ptr, sizeof(*ptr));
		record_close(&r);
	}
	printf("Location: fall\n\n");
	return 0;
}
예제 #4
0
//为每一个trie结点生成候选字列表
void gen_trie_each_node(struct SOTrie *so, const char *stroke_stack, int sp)
{
	int i;
	//for (i = 0; i < sp; ++i) putchar(stroke_stack[i]);
	//putchar(' ');
	
	int start = 0, end = 0;
	record_search(stroke_stack, sp, &start, &end);
	//printf("start=%d,end=%d\n", start, end);
	
	srp_count = 0;
	for (; start <= end; ++start) {
		srp_array[srp_count] = &global_srecord[start];
		srp_count ++;
	}
	qsort(srp_array, srp_count, sizeof(struct SRecord *), _comp);
	for (i = 0; i < (srp_count > MAX_DATA ? MAX_DATA : srp_count); ++i) {
		//putgbkchr(srp_array[i] -> chareter);
		if (so -> sdata == NULL) so -> sdata = sdata_new();
		sdata_insert(so -> sdata, srp_array[i] -> chareter, so -> sdata -> count);
	}
	//putchar('\n');
}
예제 #5
0
void menu()
{
 emp_rec ser_emp;
 int c=0,emp_no;
 long pos;
 FILE * fp,* eno,* delemp;
 if((fp=fopen("emp.dat","rb+"))==NULL)
 	{
	printf("Error 1: Problem with main file opening.\n");
	exit(ferror(fp));
	}
if((eno=fopen("empno.dat","rb+"))==NULL)
	{
	printf("Error 2: Problem with employee no file.\n");
	exit(ferror(fp));
	}
if((delemp=fopen("delemp.dat","rb+"))==NULL)
	{
	printf("Error 3: Problem with deleted employee file.\n");
	delemp=fopen("delemp.dat","wb+");
	}


	

 while(c!=6)
 	{
	printf("\t\t\t\t Menu for Employee Record Base\n");
	printf("\t\t\t1.Employee Record Insertion\n");
	printf("\t\t\t2.Employee Record Search\n");
	printf("\t\t\t3.Employee Record Update\n");
	printf("\t\t\t4.Employee Record Delete\n");
	printf("\t\t\t5.Display All Employees\n");
	printf("\t\t\t6.Exit the program.\n");

	printf("\t\t\t\t Enter your choice:");
	scanf("%d",&c);
		switch(c)
		{
			case 1:
				record_insert(fp,eno);
				break;
			case 2:
				printf("Enter the employee no to search:");
				scanf("%d",&emp_no);
				if((pos=record_search(fp,emp_no))==-1)
				   printf("Employee does not exist.\n");
				else
				{
				   printf("Employee exists.\n");
				   fseek(fp,pos,SEEK_SET);
				   fread(&ser_emp,sizeof(emp_rec),1,fp);
	printf("\t\t\tDetails of Employee No: %d\n",ser_emp.emp_no);
	printf("\tEmployee Name:%s\n",ser_emp.emp_name);
	printf("\tEmployee Salary:%lf",ser_emp.emp_sal);
	printf("\tEmployee Address:%s\n",ser_emp.emp_add);
	printf("\tEmployee Mobile:%s\n",ser_emp.emp_mobile);
				}
				break;
			case 3:
				record_update(fp);
				break;
			case 4:
				record_delete(fp,delemp);
				break;
			case 5:
				fseek(fp,0,SEEK_END);
				pos=ftell(fp);
				fseek(fp,0,SEEK_SET);
				while((pos!=ftell(fp))&&(!feof(fp)))
				{
				fread(&ser_emp,sizeof(emp_rec),1,fp);
				if(ser_emp.emp_no!=-1)
				{
	printf("\t\t\tDetails of Employee No: %d\n",ser_emp.emp_no);
	printf("\tEmployee Name:%s\n",ser_emp.emp_name);
	printf("\tEmployee Salary:%lf",ser_emp.emp_sal);
	printf("\tEmployee Address:%s\n",ser_emp.emp_add);
	printf("\tEmployee Mobile:%s\n",ser_emp.emp_mobile);
	printf("\n\n");		}	

				}
				break;
			case 6:
				printf("Exiting...and closing the files\n");
				fclose(fp);
				fclose(eno);
				fclose(delemp);
				break;
		}


	}

}