概要
实现一个图形化界面的学生管理系统,能实现
- 增加学生信息
- 删除学生信息
- 修改学生信息
- 查询学生信息
代码
#include <stdio.h>
#include <string.h>
typedef struct student{
int num;
char name[20];
char sex;
int age;
}Stu;
int addStu(Stu stu[],char *,char,int);
void delStu(Stu stu[],char *);
int alterStu(Stu stu[],char *,int);
int inquireStu(Stu stu[],char *);
void printAllstu(Stu stu[]);
int main(int argc, const char *argv[])
{
Stu admin = {0,"admin",'b',0};
char input_admin[20] = {0};
char input_password[10] = {0};
char *password = "admin";
int item = 0;
Stu stu[100]={[0]=admin};
int input_num = 0;
int num = 0;
char input_name[20] = {0};
char input_sex;
int input_age = 0;
char next;
printf("||===================================||\n");
printf("||-----------------------------------||\n");
printf("||-----Student Management System-----||\n");
printf("||-----------------------------------||\n");
printf("||===================================||\n");
printf(">>请输入管理账户------>>>");
ADMIN:
gets(input_admin);
if(strcmp(input_admin,admin.name)!=0){
printf(">>输入账户错误,请重新输入---->>");
goto ADMIN;
}
printf(">>请输入登录密码------>>>");
PASSWARD:
gets(input_password);
if(strcmp(input_password,password)!=0){
printf(">>输入密码错误,请重新输入---->>");
goto PASSWARD;
}
printf(">>登录成功!\n");
NEXT:
printf(">>请选择你要进行的操作\n");
printf(">>增加用户---> 1\n");
printf(">>删除用户---> 2\n");
printf(">>修改用户---> 3\n");
printf(">>查询用户---> 4\n");
printf(">>请输入你要操作的选项---->>");
ITEM:
scanf("%d",&item);
getchar();
if(item != 1 && item != 2 && item != 3 && item != 4){
printf(">>输入选项错误,请重新选择---->>");
goto ITEM;
}
switch(item)
{
case 1:
printf(">>增加用户信息\n");
printf(">>请输入姓名--->>");
gets(input_name);
printf(">>请输入性别--->>");
scanf("%c",&input_sex);
getchar();
printf(">>请输入年龄--->>");
scanf("%d",&input_age);
getchar();
//printf("%s %c %d\n",input_name,input_sex,input_age);//test
num = addStu(stu,input_name,input_sex,input_age);
printf(">>增加成功!\n");
printf(">>增加用户信息如下:\n");
printf(">>stu[%d].num = %d\n",num,stu[num].num);
printf(">>stu[%d].name = %s\n",num,stu[num].name);
printf(">>stu[%d].sex = %c\n",num,stu[num].sex);
printf(">>stu[%d].age = %d\n",num,stu[num].age);
break;
case 2:
printf(">>删除用户信息\n");
printf(">>请输入姓名--->>");
gets(input_name);
delStu(stu,input_name);
num = inquireStu(stu,input_name);
if(num == 0){
printf(">>删除成功!\n");
}
else
{
printf(">>删除失败,请检查是否存在该用户。\n");
}
break;
case 3:
printf(">>修改用户信息\n");
printf(">>请输入姓名--->>");
gets(input_name);
printf(">>请更新年龄--->>");
scanf("%d",&input_age);
getchar();
num = alterStu(stu,input_name,input_age);
printf(">>更改后用户信息如下:\n");
printf(">>stu[%d].num = %d\n",num,stu[num].num);
printf(">>stu[%d].name = %s\n",num,stu[num].name);
printf(">>stu[%d].sex = %c\n",num,stu[num].sex);
printf(">>stu[%d].age = %d\n",num,stu[num].age);
break;
case 4:
printf(">>查找用户信息\n");
printf(">>请输入姓名--->>");
gets(input_name);
num = inquireStu(stu,input_name);
if(num != 0)
{
printf(">>找到了,详细信息如下:\n");
printf(">>stu[%d].num = %d\n",num,stu[num].num);
printf(">>stu[%d].name = %s\n",num,stu[num].name);
printf(">>stu[%d].sex = %c\n",num,stu[num].sex);
printf(">>stu[%d].age = %d\n",num,stu[num].age);
}
else
{
printf(">>抱歉,没有这个用户。\n");
}
break;
}
//test
printAllstu(stu);
//endtest
printf(">>继续操作请输入--->> c\n");
printf(">>结束操作请输入--->> q\n");
scanf("%c",&next);
if(next == 'c'){
goto NEXT;
}
else if(next == 'q'){
return 0;
}
}
int addStu(Stu stu[],char *input_name,char input_sex,int input_age)
{
int num = 1;
while(stu[num].num != 0){
num++;
}
stu[num].num = num;
strcpy(stu[num].name,input_name);
stu[num].sex = input_sex;
stu[num].age = input_age;
return num;
}
void delStu(Stu stu[],char *input_name)
{
int num = inquireStu(stu,input_name);
if(stu[num+1].num == 0){
stu[num].num = 0;
memset(stu[num].name,0,sizeof(stu[num].name));
stu[num].sex = 0;
stu[num].age = 0;
}
else{
while(stu[num+1].num != 0)
{
strcpy(stu[num].name,stu[num+1].name);
stu[num].sex = stu[num+1].sex;
stu[num].age = stu[num+1].age;
num++;
}
stu[num].num = 0;
memset(stu[num].name,0,sizeof(stu[num].name));
stu[num].sex = 0;
stu[num].age = 0;
}
}
int alterStu(Stu stu[],char *input_name,int input_age)
{
int num = inquireStu(stu,input_name);
stu[num].age = input_age;
return num;
}
int inquireStu(Stu stu[],char *input_name)
{
int num = 1;
while(stu[num].num != 0)
{
if(strcmp(input_name,stu[num].name) == 0){
return num;
}
num++;
}
return 0;
}
void printAllstu(Stu stu[])
{
int num = 1;
printf("||---------------PRINT---------------||\n");
printf("||-----------All-Students------------||\n");
while(stu[num].num != 0)
{
printf(">>stu[%d].num = %d\n",num,stu[num].num);
printf(">>stu[%d].name = %s\n",num,stu[num].name);
printf(">>stu[%d].sex = %c\n",num,stu[num].sex);
printf(">>stu[%d].age = %d\n",num,stu[num].age);
printf("||\n");
num++;
}
//test delStu
//printf(">>stu[%d].num = %d\n",num,stu[num].num);
//printf(">>stu[%d].name = %s\n",num,stu[num].name);
//printf(">>stu[%d].sex = %c\n",num,stu[num].sex);
//printf(">>stu[%d].age = %d\n",num,stu[num].age);
//endtest
printf("||-----------------------------------||\n");
}
结果
linux@linux:/mnt/hgfs/Share/hq$ ./a.out
||===================================||
||-----------------------------------||
||-----Student Management System-----||
||-----------------------------------||
||===================================||
>>请输入管理账户------>>>admin
>>请输入登录密码------>>>admin
>>登录成功!
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>1
>>增加用户信息
>>请输入姓名--->>sheng
>>请输入性别--->>b
>>请输入年龄--->>23
>>增加成功!
>>增加用户信息如下:
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
c
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>1
>>增加用户信息
>>请输入姓名--->>lou
>>请输入性别--->>b
>>请输入年龄--->>22
>>增加成功!
>>增加用户信息如下:
>>stu[2].num = 2
>>stu[2].name = lou
>>stu[2].sex = b
>>stu[2].age = 22
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
>>stu[2].num = 2
>>stu[2].name = lou
>>stu[2].sex = b
>>stu[2].age = 22
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
c
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>1
>>增加用户信息
>>请输入姓名--->>rouseon
>>请输入性别--->>b
>>请输入年龄--->>23
>>增加成功!
>>增加用户信息如下:
>>stu[3].num = 3
>>stu[3].name = rouseon
>>stu[3].sex = b
>>stu[3].age = 23
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
>>stu[2].num = 2
>>stu[2].name = lou
>>stu[2].sex = b
>>stu[2].age = 22
||
>>stu[3].num = 3
>>stu[3].name = rouseon
>>stu[3].sex = b
>>stu[3].age = 23
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
c
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>3
>>修改用户信息
>>请输入姓名--->>lou
>>请更新年龄--->>23
>>更改后用户信息如下:
>>stu[2].num = 2
>>stu[2].name = lou
>>stu[2].sex = b
>>stu[2].age = 23
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
>>stu[2].num = 2
>>stu[2].name = lou
>>stu[2].sex = b
>>stu[2].age = 23
||
>>stu[3].num = 3
>>stu[3].name = rouseon
>>stu[3].sex = b
>>stu[3].age = 23
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
c
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>2
>>删除用户信息
>>请输入姓名--->>lou
>>删除成功!
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
>>stu[2].num = 2
>>stu[2].name = rouseon
>>stu[2].sex = b
>>stu[2].age = 23
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
c
>>请选择你要进行的操作
>>增加用户---> 1
>>删除用户---> 2
>>修改用户---> 3
>>查询用户---> 4
>>请输入你要操作的选项---->>4
>>查找用户信息
>>请输入姓名--->>lou
>>抱歉,没有这个用户。
||---------------PRINT---------------||
||-----------All-Students------------||
>>stu[1].num = 1
>>stu[1].name = sheng
>>stu[1].sex = b
>>stu[1].age = 23
||
>>stu[2].num = 2
>>stu[2].name = rouseon
>>stu[2].sex = b
>>stu[2].age = 23
||
||-----------------------------------||
>>继续操作请输入--->> c
>>结束操作请输入--->> q
q
linux@linux:/mnt/hgfs/Share/hq$
总结
1、晚上花了3小时多完成这个任务。
2、难点有2处:一是对各种类型数据的输入匹配问题;二是结构体数组的定义初始化以及访问方式。
3、写代码的过程还是较顺利的,思路清晰。
反思
1、代码能实现概要中叙述的4个功能。但对于一些不期望的输入数据,没有加入更多的条件限制,这是不足的一点。
2、函数的封装应该能用指针实现,但对结构体数组中的结构体对象访问还不熟练,有待掌握。
3、回想起大一下学C语言的结构体,那时好像就有学生管理系统这个题目,可惜我当时贪玩没有好好打过代码。认知总是后知后觉呀。
本文链接:https://shengto.top/c/student_management_system.html
转载时须注明出处及本声明