⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data.c

📁 用C编写的短小精悍的数据库
💻 C
📖 第 1 页 / 共 4 页
字号:
/*   long_c,long_f  : (* UNDEFINED TYPE: longint *);

Error 4:  type expected:  ; */
	/* UNDEFINED TYPE: longint */
int long_c,long_f;
struct node *c,
            *l;
int find_num;
num_range1 find_number;
char find_name[11];
char find_sex;
struct date find_birthdate;
num_range2 find_experience;
num_range2 find_force;
num_range2 find_smartness;

    condition_code = condition_select("find condition:");
    switch (condition_code) {
	case 1:
	    printf("\n");
	    printf("record:");
	    scanf("%d",&find_num);
	    if ((find_num >= 1) && (find_num <= count)) {
                if (head != nil) {
                    c = nil;
                    l = nil;
                    found_num = 1;    /*FIND NODE*/
		    for (i = 1; i <= find_num; i++) {
                        if (i == 1) {
                            c = head;
                            l = c->next;
                        }
                        else  {
                            c = l;
                            l = c->next;
                        }    /*IF*/
                    }    /*FOR*/
                    output_title();
		    output_it(c,find_num);
		    printf("find %d\n",found_num);
		}
		else
		    printf("no record\n");
	    }
            else 
		printf("out record\n");
	    break;
        case 2:
            printf("\n");
	    printf("no:");
	    scanf("%d",&find_number);
	    if (head != nil) {
                c = head;
                l = c->next;
                found_num = 0;
                output_title();
                for (i = 1; i <= count; i++) {
                    if (c->number == find_number) {
			output_it(c,i);
                        found_num = found_num + 1;
			c = l;
                        c = c->next;
		    }
		    else  {
                        c = l;
                        l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
	case 3:
	    printf("\n");
	    printf("name:");
	    gets(find_name);
	    if (head != nil) {
		c = head;
		l = c->next;
                found_num = 0;
                output_title();
                for (i = 1; i <= count; i++) {
                    if (strcmp(c->name,find_name) == 0) {
			output_it(c,i);
                        found_num = found_num + 1;
			c = l;
			c = c->next;
		    }
		    else  {
			c = l;
			l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
	case 4:
	    printf("\n");
	    printf("sex:");
	    scanf("%c",&find_sex);
            if (head != nil) {
                c = head;
		l = c->next;
                found_num = 0;
                output_title();
                for (i = 1; i <= count; i++) {
                    if (c->sex == find_sex) {
			output_it(c,i);
                        found_num = found_num + 1;
			c = l;
                        c = c->next;
		    }
		    else  {
			c = l;
			l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
	case 5:
	    printf("\n");
	    printf("birthday:");
	    scanf("%d%d%d",&find_birthdate.da_year,&find_birthdate.da_mon,
		    &find_birthdate.da_day);
	    if (head != nil) {
		c = head;
		l = c->next;
		found_num = 0;
                output_title();
		long_f = find_birthdate.da_year;
                long_f = long_f * 100;
		long_f = long_f + find_birthdate.da_mon;
		long_f = long_f * 100;
		long_f = long_f + find_birthdate.da_day;
		for (i = 1; i <= count; i++) {
		    long_c = c->birthdate.da_year;
                    long_c = long_c * 100;
		    long_c = long_c + c->birthdate.da_mon;
                    long_c = long_c * 100;
		    long_c = long_c + c->birthdate.da_day;
                    if (long_c == long_f) {
			output_it(c,i);
                        found_num = found_num + 1;
                        c = l;
			c = c->next;
		    }
                    else  {
			c = l;
                        l = c->next;
                    }
                }    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
        case 6:
            printf("\n");
	    printf("experience:");
	    scanf("%d",&find_experience);
            if (head != nil) {
                c = head;
                l = c->next;
                found_num = 0;
		output_title();
		for (i = 1; i <= count; i++) {
                    if (c->experience == find_experience) {
                        output_it(c,i);
                        found_num = found_num + 1;
			c = l;
			l = c->next;
		    }
		    else  {
			c = l;
			l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
	case 7:
	    printf("\n");
	    printf("force:");
	    scanf("%d",&find_force);
	    if (head != nil) {
		c = head;
		l = c->next;
		found_num = 0;
		output_title();
		for (i = 1; i <= count; i++) {
		    if (c->force == find_force) {
			output_it(c,i);
			found_num = found_num + 1;
			c = l;
			l = c->next;
		    }
		    else  {
			c = l;
			l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
	    else
		printf("out record\n");
	    break;
	case 8:
	    printf("\n");
	    printf("smartness:");
	    scanf("%d",&find_smartness);
	    if (head != nil) {
		c = head;
		l = c->next;
                found_num = 0;
                output_title();
                for (i = 1; i <= count; i++) {
		    if (c->smartness == find_smartness) {
			output_it(c,i);
                        found_num = found_num + 1;
			c = l;
			l = c->next;
		    }
		    else  {
			c = l;
			l = c->next;
		    }    /*IF*/
		}    /*FOR*/
		if (found_num != 0)
		    printf("find %d\n",found_num);
		else
		    printf("no record\n");
	    }
            else 
		printf("out record\n");
	    break;
	default:
	    printf("find error\n");
	    break;
    }    /*CASE*/

}

void sort_record (void)
{

int condition_code;
int i,
    j;

int long_c,long_f;
struct node *c_bak,
	    *l_bak;

    condition_code = condition_select("sort condition:");
    switch (condition_code) {
	case 1:
	    printf("record over\n");
	    break;
	case 2:
	    if ((head != nil) && (head->next != nil)) {
		c_bak = current;
		l_bak = last;    /*沉淀法排序*/
		for (i = count - 1; i >= 1; i--) {
		    current = c_bak;
		    last = l_bak;
		    for (j = 1; j <= i; j++) {
			if (current->number < current->front->number)
			    swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
			last = current->next;
                    }
                }
                current = c_bak;
                last = l_bak;
	    }
	    printf("no over\n");
	    break;
        case 3:
            if ((head != nil) && (head->next != nil)) {
                c_bak = current;
                l_bak = last;    /*沉淀法排序*/
                for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
                    last = l_bak;
                    for (j = 1; j <= i; j++) {
                        if (strcmp(current->name,
				current->front->name) < 0)
                            swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
			last = current->next;
                    }
                }
                current = c_bak;
                last = l_bak;
            }
	    printf("name over\n");
            break;
        case 4:
	    if ((head != nil) && (head->next != nil)) {
                c_bak = current;
                l_bak = last;    /*沉淀法排序*/
                for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
                    last = l_bak;
                    for (j = 1; j <= i; j++) {
                        if (current->sex < current->front->sex)
                            swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
                        last = current->next;
		    }
		}
                current = c_bak;
                last = l_bak;
            }
	    printf("sex over\n");
	    break;
        case 5:
            if ((head != nil) && (head->next != nil)) {
                c_bak = current;
                l_bak = last;    /*沉淀法排序*/
                for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
		    last = l_bak;
                    for (j = 1; j <= i; j++) {    /*CURRENT*/
			long_c = current->birthdate.da_year;
                        long_c = long_c * 100;
			long_c = long_c + current->birthdate.da_mon;
                        long_c = long_c * 100;
			long_c = long_c + current->birthdate.da_day;
			/*FRONT*/                        long_f = current->front->birthdate.da_year;
                        long_f = long_f * 100;
                        long_f = long_f + 
				current->front->birthdate.da_mon;
                        long_f = long_f * 100;
			long_f = long_f + current->front->birthdate.da_day;

			if (long_c < long_f)
			    swap_it(&current,&last,&c_bak,&l_bak);
			current = current->front;
			last = current->next;
		    }
		}
		current = c_bak;
		last = l_bak;
	    }
	    printf("birthday over\n");
	    break;
        case 6:
            if ((head != nil) && (head->next != nil)) {
		c_bak = current;
                l_bak = last;    /*沉淀法排序*/
                for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
                    last = l_bak;
                    for (j = 1; j <= i; j++) {
                        if (current->experience < current->front->experience)
                            swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
			last = current->next;
                    }
		}
                current = c_bak;
                last = l_bak;
            }
	    printf("experience over\n");
	    break;
        case 7:
            if ((head != nil) && (head->next != nil)) {
                c_bak = current;
		l_bak = last;    /*沉淀法排序*/
		for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
                    last = l_bak;
                    for (j = 1; j <= i; j++) {
                        if (current->force < current->front->force)
                            swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
                        last = current->next;
                    }
                }
		current = c_bak;
                last = l_bak;
	    }
	    printf("force over\n");
	    break;
        case 8:
            if ((head != nil) && (head->next != nil)) {
                c_bak = current;
                l_bak = last;    /*沉淀法排序*/
		for (i = count - 1; i >= 1; i--) {
                    current = c_bak;
                    last = l_bak;
                    for (j = 1; j <= i; j++) {
                        if (current->smartness < current->front->smartness)
			    swap_it(&current,&last,&c_bak,&l_bak);
                        current = current->front;
                        last = current->next;
                    }
                }
                current = c_bak;
		last = l_bak;
            }
	    printf("smartness over\n");
	    break;
    }    /*CASE*/

}

/*BEGIN*/
void modify_record (void)
{

int condition_code;
int i,
    modified_num;


int long_c,long_m;
struct node *c,
	    *l;
int mdf_num;
num_range1 mdf_number;
char mdf_name[11];
char mdf_sex;
struct date mdf_birthdate;
num_range2 mdf_experience;
num_range2 mdf_force;
num_range2 mdf_smartness;

    condition_code = condition_select("modify:");
    switch (condition_code) {
	case 1:
	    printf("\n");
	    printf("record:");
	    scanf("%d",&mdf_num);
            if ((mdf_num >= 1) && (mdf_num <= count)) {
		if (head != nil) {
                    c = nil;
                    l = nil;    /*FIND NODE*/
                    for (i = 1; i <= mdf_num; i++) {
			if (i == 1) {
                            c = head;
                            l = c->next;
			}
                        else  {
                            c = l;
			    l = c->next;
			}    /*IF*/
                    }    /*FOR*/
                    modify_it(c,l,i);
		    printf("%d modify\n",mdf_num);
		}
		else
		    printf("no record\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -