1. 学生管理系统功能介绍
前面文章里介绍了结构体类型,知道结构体类型里可以存放不同的数据类型,属于一个有序的集合。
这篇文章就使用结构体知识点完成一个小练习,使用结构体+数组设计一个简单的学生管理系统,作为结构体知识点的巩固练习。
功能如下:
(1). 欢迎界面提示
(2). 输入密码登录
(3). 功能: 录入学生信息、按照学号排序、按照成绩排序、输出所有学生信息、输出指定学生信息(学号、姓名、成绩)、计算成绩平均值值输出打印、删除指定学生信息、增加新的学生信息。
(4). 功能模块采用菜单方式选择
2. 框架设计
#include
#include
void Display_info(void);
char buff_user[50];
char buff_password[50];
int main()
{
int a,i;
printf("------欢迎使用xxxx学生管理系统------\n");
for(i=1;i<=3;i++)
{
printf("请输入用户名:");
scanf("%s",buff_user);
printf("请输入密码:");
system("stty -echo"); //系统函数---调用系统的命令 关闭回显
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系统函数---调用系统的命令 开回显
//比较密码是否正确
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密码或者用户错误.请重新输入,剩余次数:%d\n",3-i);
}
else break;
}
//比较密码是否正确
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("系统安全退出.\n");
return 0; //exit(); //终止进程
}
/*
#include
void exit(int status); 比如: exit(0);
*/
while(1)
{
Display_info();
scanf("%d",&a);
switch (a)
{
case 1:
printf("选择录取学生信息\n");
break;
case 2:
printf("输出学生信息\n");
break;
//............
default:
break;
}
}
return 0;
}
//显示提示信息
void Display_info(void)
{
printf("------欢迎使用xxxx学生管理系统------\n");
printf("1. 录取学生信息\n");
printf("2. 输出学生信息\n");
printf("3. 打印成绩平均值\n");
printf("4. 增加学生信息\n");
printf("5. 按照成绩排序输出学生信息.\n");
printf("6. 删除指定学生信息\n");
printf("请选择功能:\n");
}
3. 完整代码
#include
#include
struct STU
{
char name[100]; //姓名
int age; //年龄
char number[100]; //学号
float grade;//成绩
};
//全局变量定义区域
char buff_user[50];
char buff_password[50];
struct STU stu_info[100];
int stu_cnt=0; //存放学生总人数
//函数声明区域
void Display_info(void);
int SystemLogin(void);
void add_info(struct STU *stu,int flag);
void grade_sort(struct STU *stu);
void del_info(struct STU *stu);
void print_info(struct STU *stu);
int main()
{
int number;
//1. 登录系统
if(SystemLogin())
{
printf("系统安全退出.\n");
exit(0);
}
//2.执行功能模块
while(1)
{
Display_info();
scanf("%d",&number);
switch (number)
{
case 1: //录入学生信息
add_info(stu_info,1);
break;
case 2: //输出学生信息
print_info(stu_info);
break;
case 3: //打印成绩平均值
break;
case 4: //增加学生信息
add_info(stu_info,0);
break;
case 5: //按照成绩排序输出学生信息
grade_sort(stu_info);
break;
case 6: //删除指定学生信息
del_info(stu_info);
break;
case 7: //退出系统
printf("-----系统安全退出------\n");
exit(0); //退出当前进程
default:
break;
}
}
return 0;
}
//显示提示信息
void Display_info(void)
{
printf("\n\n");
printf("------欢迎使用xxxx学生管理系统------\n");
printf("1. 录入学生信息(按照要求录入信息)\n");
printf("2. 输出学生信息\n");
printf("3. 打印成绩平均值\n");
printf("4. 增加学生信息\n");
printf("5. 按照成绩排序输出学生信息.\n");
printf("6. 删除指定学生信息\n");
printf("7. 退出系统\n");
printf("请选择功能:");
}
/*
函数功能: 系统登录
返回值: 0表示成功 1表示失败
*/
int SystemLogin(void)
{
printf("------欢迎使用xxxx学生管理系统------\n");
int i;
for(i=1;i<=3;i++)
{
printf("请输入用户名:");
scanf("%s",buff_user);
printf("请输入密码:");
system("stty -echo"); //系统函数---调用系统的命令 关闭回显
scanf("%s",buff_password);
printf("\n");
system("stty echo"); //系统函数---调用系统的命令 开回显
//比较密码是否正确
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
printf("密码或者用户错误.请重新输入,剩余次数:%d\n",3-i);
}
else break;
}
//比较密码是否正确
if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
{
return 1;
}
return 0;
}
/*
函数功能: 录入学生信息
int flag :1表示连续增加学生信息 0表示增加单个学生信息
*/
void add_info(struct STU *stu,int flag)
{
int i;
int tmp;
int addr=stu_cnt; //学生总人数
if(flag)
{
for(i=addr;i(stu_info)>
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136814 -
数组
+关注
关注
1文章
417浏览量
25946 -
结构体
+关注
关注
1文章
130浏览量
10841
发布评论请先 登录
相关推荐
Keil使用结构体数组的奇怪问题
今天用keil的时候发现一个很奇怪的点,是关于结构体数组的。首先说明我的keil版本是:V5.28.0.0问题是这样的:我在a.h文件定义了一个结构
发表于 11-21 16:36
•3次下载
C语言使用结构体数组注意事项
一个结构体变量中可以存放一组有关联的数据,如一个学生的学号、姓名、成绩等数据,如果有10个学生的数据需要参加运算,显然应该用数组,这就是
C语言如何创建数组
用法和注意事项。 要创建一个数组,首先需要确定数组的数据类型和大小。C语言中的数据类型包括基本数据类型(如整数、浮点数、字符等)以及派生数据类型(如
评论