📄 data.c
字号:
current->birthdate = birthdate_c;
current->experience = experience_c;
current->force = force_c;
current->smartness = smartness_c;
count = count + 1;
}
void insert_it (struct node **c,int n,int *p)
{
struct node *insert;
error_num err;
*p = 0;
printf("record %d\n",n);
printf("No:");
scanf("%d",&number_c);
printf("name:");
gets(name_c);
gets(name_c);
printf("sex(M,F):");
scanf("%c",&sex_c);
printf("birthda_day(1978 16 1):");
scanf("%d %d %d",&birthdate_c.da_year,&birthdate_c.da_day,&birthdate_c.da_mon);
printf("experience:");
scanf("%d",&experience_c);
printf("force:");
scanf("%d",&force_c);
printf("smartness:");
scanf("%d",&smartness_c);
printf("\n");
err = check_record(&number_c,&sex_c,&birthdate_c,&experience_c,
&force_c,&smartness_c);
switch (err) {
case 0:
add_record();
n = n + 1;
*p=1;
break;
case 1:
printf("no wrong:1-1000\n");
printf("try again\n");
break;
case 2:
printf("sex wrong:M male F female\n");
printf("try again\n");
break;
case 3:
printf("birthday wrong:1978 1 16\n");
printf("try again\n");
break;
case 4:
printf("experience wrong:0-100\n");
printf("try again\n");
break;
case 5:
printf("force wrong:0-100\n");
printf("try again\n");
break;
case 6:
printf("smartness wrong:0-100\n");
printf("try again\n");
break;
}
if (*p == 1) { /*NO DATA*/
if (*c == nil) {
add_record();
} /*FIRST ONE*/
else if (*c == head) {
insert = (stu_p) malloc (sizeof(struct node));
insert->front = nil;
insert->next = nil;
head->front = insert;
insert->next = head;
head = insert;
insert->number = number_c;
strcpy (insert->name,name_c);
insert->sex = sex_c;
insert->birthdate = birthdate_c;
insert->experience = experience_c;
insert->force = force_c;
insert->smartness = smartness_c;
count = count + 1;
}
else {
insert = (stu_p) malloc (sizeof(struct node));
insert->front = nil;
insert->next = nil;
(*c)->front->next = insert;
insert->front = (*c)->front;
(*c)->front = insert;
insert->next = *c;
insert->number = number_c;
strcpy (insert->name,name_c);
insert->sex = sex_c;
insert->birthdate = birthdate_c;
insert->experience = experience_c;
insert->force = force_c;
insert->smartness = smartness_c;
count = count + 1;
}
}
}
void save_record (void)
{
int n;
char path[81];
struct node *c,
*l;
if (head == nil)
printf("no record\n");
else {
n = 0; /*文件初始化*/
printf("\n");
printf("write file name ps:pb.TXT:\n");
gets(path);
db_file=fopen(path,"wt"); /*指针初始化*/
c = head;
l = head->next;
fprintf(db_file,"%d\n",count); /*写入最大记录数*/
while (c != nil) { /*数据输出*/
fprintf(db_file,"%d",c->number);
fprintf(db_file,"%10s",c->name);
fprintf(db_file,"%2lc",c->sex);
fprintf(db_file,"%5d%3d%3d",c->birthdate.da_year,
c->birthdate.da_day,c->birthdate.da_mon);
fprintf(db_file,"%4d",c->experience);
fprintf(db_file,"%4d",c->force);
fprintf(db_file,"%4d",c->smartness);
fprintf(db_file,"\n");
n = n + 1;
c = l;
l = c->next;
}
fclose(db_file); /*保护代码*/
if (n != count)
printf("sum of record wrong\n");
printf("have been saved\n");
}
}
void close_database (int n)
{
/*N为内部使用,信息显示开关*/
struct node *c,
*l;
int i;
char pan;
if (head != nil) {
c = head;
l = c->next;
pan = ' ';
if (n == 1) {
printf("\n");
printf("save database?(Y/N)\n");
scanf("%c",&pan);
if (pan == 'Y')
save_record();
printf("\n");
}
for (i = 1; i <= count; i++)
delete_it(&c,&l);
head = nil;
current = nil;
last = nil;
count = 0;
if (n == 1)
printf("database close\n");
}
}
void output_record (void)
{
int n,
i;
struct node *c,
*l;
if (head == nil)
printf("no record\n");
else {
n = 1; /*指针初始化*/
c = head;
l = head->next;
output_title();
for (i = 1; i <= count; i++) {
output_it(c,n);
n = n + 1;
c = l;
l = c->next;
}
}
}
void del_record(void)
{
int condition_code;
int i,
deleted_num;
/* long_c,long_d : (* UNDEFINED TYPE: longint *);
Error 4: type expected: ; */
/* UNDEFINED TYPE: longint */
int long_c,long_d;
int del_num;
num_range1 del_number;
char del_name[11];
char del_sex;
struct date del_birthdate;
num_range2 del_experience;
num_range2 del_force;
num_range2 del_smartness;
struct node *c_bak,
*l_bak;
condition_code = condition_select("del condition:"); /*PROTECT*/
c_bak = current;
l_bak = last;
switch (condition_code) {
case 1:
printf("\n");
printf("record:");
scanf("%d",&del_num);
if ((del_num >= 1) && (del_num <= count)) {
if (head != nil) {
current = nil;
last = nil; /*FIND NODE*/
for (i = 1; i <= del_num; i++) {
if (i == 1) {
current = head;
last = current->next;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
delete_it(¤t,&last);
printf(" record %d delete\n",del_num);
}
else
printf("no record like u need\n");
}
else
printf("out record\n");
break; /*1*/
case 2:
printf("\n");
printf("no:");
scanf("%d",&del_number);
if ((del_number >= 1) && (del_number <= 1000)) {
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if (current->number == del_number) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("no record like u need\n");
}
else
printf("out record\n");
break; /*2*/
case 3:
printf("\n");
printf("name:");
gets(del_name);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if (strcmp(current->name,del_name) == 0) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
case 4:
printf("\n");
printf("sex:");
scanf("%c",&del_sex);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if ((current->sex == del_sex)) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
case 5:
printf("\n");
printf("birthday:");
scanf("%d%d%d",&del_birthdate.da_year,&del_birthdate.da_mon,
&del_birthdate.da_day);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
long_d = del_birthdate.da_year;
long_d = long_d * 100;
long_d = long_d + del_birthdate.da_mon;
long_d = long_d * 100;
long_d = long_d + del_birthdate.da_day;
for (i = 1; i <= count; i++) {
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;
if ((long_c == long_d)) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
}
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
case 6:
printf("\n");
printf("experience:");
scanf("%d",&del_experience);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if ((current->experience == del_experience)) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
case 7:
printf("\n");
printf("force:");
scanf("%d",&del_force);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if ((current->force == del_force)) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
case 8:
printf("\n");
printf("smartness:");
scanf("%d",&del_smartness);
if (head != nil) {
current = head;
last = current->next;
deleted_num = 0;
for (i = 1; i <= count; i++) {
if ((current->smartness == del_smartness)) {
delete_it(¤t,&last);
deleted_num = deleted_num + 1;
}
else {
current = last;
last = current->next;
} /*IF*/
} /*FOR*/
if (deleted_num != 0)
printf(" record %d delete\n",deleted_num);
else
printf("no record like u need\n");
}
else
printf("out record\n");
break;
default:
printf("delete error\n");
break;
} /*CASE*/
if (last != nil) {
current = c_bak;
last = l_bak;
}
}
void find_record (void)
{
int condition_code;
int i,
found_num;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -