最近可能是接近考试,有小伙伴微信私聊让找个学生成绩管理系统,今天发一下,比较简洁。
案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能:
这些功能之间的逻辑关系如下图所示:
学生成绩管理系统
分析案例需求可知,该系统首先会向用户展现一个菜单选择界面,用户可以根据菜单界面的提示,选择不同的功能进入子界面,因此可以针对每一个功能定义一个函数,通过函数调用实现相应功能。由系统需求可知,该系统主要有6大功能,因此需要定义6个函数。
void add(struct student stu[])
{
int i, id = 0; //i作为循环变量,id用来保存新学号
char quit; //保存是否退出的选择
do
{
printf("学号:");
scanf("%d", &id);
for (i = 0; i < n; i++)
{
if (id == stu[i].id)
{
printf("此学号存在!\n");
return;
}
}
stu[i].id = id;
printf("姓名:");
scanf("%s", &stu[i].name);
printf("计算机基础成绩:");
scanf("%d", &stu[i].chinese);
printf("数据结构成绩:");
scanf("%d", &stu[i].math);
stu[i].sum = stu[i].chinese + stu[i].math;
n++; //记录条数加1
printf("是否继续添加?(Y/N)");
scanf("\t%c", &quit);
} while (quit != 'N');
}
void show(struct student stu[], int i)
{
printf("%-10d", stu[i].id);
printf("%-10s", stu[i].name);
printf("%-10d", stu[i].chinese);
printf("%-10d", stu[i].math);
printf("%-10d\n", stu[i].sum);
}
void modify(struct student stu[])
{
char name[8], ch;
int i;
printf("修改学生的记录。\n");
printf("请输入学生的姓名:");
scanf("%s", &name);
for (i = 0; i < n; i++)
{
if (strcmp(name, stu[i].name) == 0)
{
getchar();
printf("找到该生的记录,如下所示:\n");
HH; //显示记录的标题
show(stu, i);
printf("是否修改?(Y/N)\n");
scanf("%c", &ch);
if (ch == 'Y' || ch == 'y')
{
getchar();
printf("姓名:");
scanf("%s", &stu[i].name);
printf("计算机基础成绩:");
scanf("%d", &stu[i].chinese);
printf("数据结构成绩:");
scanf("%d", &stu[i].math);
stu[i].sum = stu[i].chinese + stu[i].math;
printf("修改完毕。\n");
}
return;
}
}
printf("没有找到该生的记录。\n");
}
void del(struct student stu[])
{
int id, i;
char ch;
printf("删除学生的记录。\n");
printf("请输入学号:");
scanf("%d", &id);
for (i = 0; i < n; i++)
{
if (id == stu[i].id)
{
getchar();
printf("找到该生的记录,如下所示:\n");
HH; //显示记录的标题
show(stu, i); //显示数组stu中的第i条记录
printf("是否删除?(Y/N)\n");
scanf("%c", &ch);
if (ch == 'Y' || ch == 'y')
{
for (; i < n; i++)
// 被删除记录后面的记录均前移一位
stu[i] = stu[i + 1];
n--; //记录总条数减1
printf("删除成功!");
}
return;
}
}
printf("没有找到该生的记录!\n");
}
void search(struct student stu[])
{
char name[8];
int i;
printf("查找学生的记录。\n");
printf("请输入学生的姓名:");
scanf("%s", &name);
for (i = 0; i < n; i++)
{
if (strcmp(name, stu[i].name) == 0)
{
printf("找到该生的记录,如下所示:\n");
HH; //显示记录的标题
show(stu, i); //显示数组stu中的第i条记录
return;
}
}
printf("没有找到该生的记录。\n");
}
void sort(struct student stu[])
{
int i, j;
struct student t;
printf("按总成绩进行排序,");
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (stu[i].sum < stu[j].sum)
{
t = stu[i];
stu[i] = stu[j];
stu[j] = t;
}
}
}
printf("排序结果如下:\n");
showAll(stu); //显示排序后的所有记录
}
由于该系统需要定义6个函数,而且还涉及变量,代码较多,因此可以分文件实现该系统,将函数声明与定义在头文件student.h中实现,函数实现在student.c文件中完成,函数调用在main.c文件中执行。
struct student
{
int id; // 学号
char name[8]; //姓名
int chinese; //计算机基础成绩
int math; //数据结构成绩
int sum; //总分
};
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有