/* 还不够完善 */
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h> // getch()
struct stu_t {
int num ;
char name [10];
char sex[5];
int age;
} student[10];
void return_confirm(void);
void student_initia(struct stu_t * p, int n); // 初始化
void page_title(char * menu_item);
void student_information(void);
int search_num(void);
void student_del(void);
void student_edit(void);
int main(void)
{
int ch;
student_initia(student, 10); // 初始化
page_title("Menu operation");
ch = 0;
while(ch != '5')
{
printf("Please use number keys select Options\n"
"1) student_information 2) search_num\n"
"3) student_del 4) student_edit\n"
"5 exit\n\n"
);
ch = getchar();
if(ch != '\n')
while(getchar() != '\n')
continue;
switch(ch)
{
case '1':
student_information();
break;
case '2':
search_num();
break;
case '3':
student_del();
break;
case '4':
student_edit();
break;
}
}
printf("goodbye !\n");
return 0;
}
void student_initia(struct stu_t * p, int n)
{
int i;
for(i = 0; i < n; i++)
p[i].num = -1;
}
void page_title(char * menu_item)
{
system("cls"); // 清屏 (system() stdlib.h)
printf(">>> Student performance management system <<<\n\n- %s -\n\n",menu_item);
}
void return_confirm(void)
{
printf("\nPress any button to return...\n");
getch();
putchar('\n');
}
void student_information(void)
{
int i, k;
page_title("Input students basic information");
for(i = k = 0; i < 10; i++)
if(student[i].num == -1)
{
do{
printf("num: ");
k = scanf("%d", &student[i].num);
while(getchar() != '\n')
continue;
}while(k != 1 || student[i].num <= 0);
do{
printf("name:");
scanf("%9s", student[i].name);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("sex:");
scanf("%4s", student[i].sex);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("age:");
k = scanf("%d", &student[i].age);
while(getchar() != '\n')
continue;
}while(k != 1);
return_confirm();
break;
}
}
int search_num(void)
{
int n, i;
do{
printf("plese input num:");
n = scanf("%d", &i);
while(getchar() != '\n')
continue;
}while(n != 1);
for(n = 0; n < 10; n++)
{
if(student[n].num == i && student[n].num != -1)
{
printf("num: %d\nname: %s\nage: %d\n", student[n].num
, student[n].name
, student[n].age);
return n;
}
}
printf("\nInput error or wrong number.\n");
return -1;
}
void student_del(void)
{
int n;
page_title("Delete students basic information");
if((n = search_num()) != -1)
{
student[n].num = -1;
printf("\n!The students have been deleted.\n");
}
return_confirm();
}
void student_edit(void)
{
int i, k;
page_title("editor students basic information");
i = search_num();
if(i != -1)
{
printf("\nRe-enter new information:\n");
do{
printf("num: ");
k = scanf("%d", &student[i].num);
while(getchar() != '\n')
continue;
}while(k != 1 || student[i].num <= 0);
do{
printf("name:");
scanf("%9s", student[i].name);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("sex:");
scanf("%4s", student[i].sex);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("age:");
k = scanf("%d", &student[i].age);
while(getchar() != '\n')
continue;
}while(k != 1);
}
return_confirm();
}
[[italic] 本帖最后由 cosdos 于 2008-1-2 18:27 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h> // getch()
struct stu_t {
int num ;
char name [10];
char sex[5];
int age;
} student[10];
void return_confirm(void);
void student_initia(struct stu_t * p, int n); // 初始化
void page_title(char * menu_item);
void student_information(void);
int search_num(void);
void student_del(void);
void student_edit(void);
int main(void)
{
int ch;
student_initia(student, 10); // 初始化
page_title("Menu operation");
ch = 0;
while(ch != '5')
{
printf("Please use number keys select Options\n"
"1) student_information 2) search_num\n"
"3) student_del 4) student_edit\n"
"5 exit\n\n"
);
ch = getchar();
if(ch != '\n')
while(getchar() != '\n')
continue;
switch(ch)
{
case '1':
student_information();
break;
case '2':
search_num();
break;
case '3':
student_del();
break;
case '4':
student_edit();
break;
}
}
printf("goodbye !\n");
return 0;
}
void student_initia(struct stu_t * p, int n)
{
int i;
for(i = 0; i < n; i++)
p[i].num = -1;
}
void page_title(char * menu_item)
{
system("cls"); // 清屏 (system() stdlib.h)
printf(">>> Student performance management system <<<\n\n- %s -\n\n",menu_item);
}
void return_confirm(void)
{
printf("\nPress any button to return...\n");
getch();
putchar('\n');
}
void student_information(void)
{
int i, k;
page_title("Input students basic information");
for(i = k = 0; i < 10; i++)
if(student[i].num == -1)
{
do{
printf("num: ");
k = scanf("%d", &student[i].num);
while(getchar() != '\n')
continue;
}while(k != 1 || student[i].num <= 0);
do{
printf("name:");
scanf("%9s", student[i].name);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("sex:");
scanf("%4s", student[i].sex);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("age:");
k = scanf("%d", &student[i].age);
while(getchar() != '\n')
continue;
}while(k != 1);
return_confirm();
break;
}
}
int search_num(void)
{
int n, i;
do{
printf("plese input num:");
n = scanf("%d", &i);
while(getchar() != '\n')
continue;
}while(n != 1);
for(n = 0; n < 10; n++)
{
if(student[n].num == i && student[n].num != -1)
{
printf("num: %d\nname: %s\nage: %d\n", student[n].num
, student[n].name
, student[n].age);
return n;
}
}
printf("\nInput error or wrong number.\n");
return -1;
}
void student_del(void)
{
int n;
page_title("Delete students basic information");
if((n = search_num()) != -1)
{
student[n].num = -1;
printf("\n!The students have been deleted.\n");
}
return_confirm();
}
void student_edit(void)
{
int i, k;
page_title("editor students basic information");
i = search_num();
if(i != -1)
{
printf("\nRe-enter new information:\n");
do{
printf("num: ");
k = scanf("%d", &student[i].num);
while(getchar() != '\n')
continue;
}while(k != 1 || student[i].num <= 0);
do{
printf("name:");
scanf("%9s", student[i].name);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("sex:");
scanf("%4s", student[i].sex);
while(getchar() != '\n')
continue;
}while(student[i].name[0] == '\0');
do{
printf("age:");
k = scanf("%d", &student[i].age);
while(getchar() != '\n')
continue;
}while(k != 1);
}
return_confirm();
}
[[italic] 本帖最后由 cosdos 于 2008-1-2 18:27 编辑 [/italic]]
----------------解决方案--------------------------------------------------------