学⽣成绩管理系统C语⾔(详解)附源码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
// 描述学⽣信息的结构体
struct student
{
char name[18]; // 名字
int num; // 学号
double score[3]; // 3门课的成绩
double sum; // 总分
};
// 学⽣所有信息的结构体
struct stuSystem
{
struct student stu[MAX]; //系统⽤学⽣的信息的结构体数组stu[]来储存学⽣的信息
int curSize; //当前系统中有的学⽣数
};
// 创建系统的函数
struct stuSystem* createSystem()
{
/
/初始化结构体指针
struct stuSystem* pSystem = (struct stuSystem*)calloc(sizeof(struct stuSystem), 1);
return pSystem;
};
// 制作菜单
void makeMenu()
html span字体大小{
printf("---------------------------------------------\n");
printf("\t\t 0. 退出系统 \n");
printf("\t\t 1. 录⼊信息 \n");
printf("\t\t 2. 浏览信息 \n");
printf("\t\t 3. 删除信息 \n");
printf("\t\t 4. 修改信息 \n");
printf("\t\t 5. 查信息 \n");
printf("\t\t 6. 排序信息 \n");
printf("---------------------------------------------\n");
printf("---------请输⼊(0 ~ 7):");
}
// 录⼊学⽣信息的函数
void inputStu(struct stuSystem* pSystem)
{
struct student temp; // 结构体变量,临时储存⽤户输⼊的信息
printf("请输⼊学⽣的姓名和学号:");
scanf("%s%d",temp.name, &temp.num);
printf("请输⼊此学⽣3门课的成绩:");
temp.sum = 0;
for(int i = 0; i < 3; i++)
{
scanf("%lf",&temp.score[i]);
temp.sum += temp.score[i];
}
insertArray(pSystem, temp); // 插⼊数组函数(⽤于将⽤户输⼊的信息插⼊并储存在数组中)
}
/
/ 插⼊(学⽣信息)数组函数
void insertArray(struct stuSystem* pSystem,struct student stuInfo)
void insertArray(struct stuSystem* pSystem,struct student stuInfo)
{
if(pSystem -> curSize >= MAX) // 如果数组已经存满
{
printf("学⽣⼈数已满,⽆法录⼊!\n");
return; // 直接返回
}
// 若没有存满
pSystem ->stu[pSystem ->curSize] = stuInfo; // 指针指向学⽣信息的数组并赋值
pSystem ->curSize++; // 指向现在已经存在学⽣数
}
//打印(学⽣信息)数组函数
void printfArray(struct stuSystem* pSystem)
{
printf("姓名\t编号\t数学\t英语\t体育\t总分\n");
for(int i = 0; i < pSystem ->curSize; i++)
{
printf("%s\t%d\t",pSystem ->stu[i].name, pSystem ->stu[i].num); //打印姓名和学号 for(int j = 0; j < 3; j++)
{
printf("%.llf\t",pSystem ->stu[i].score[j]); // 打印各科成绩
}
printf("%.llf\n",pSystem ->stu[i].sum); // 打印总分
}
}
//查学⽣姓名函数
int searchArray(struct stuSystem* pSystem, const char* name)
{
for(int i = 0; i < pSystem ->curSize; i++)
{
if(strcmp(pSystem ->stu[i].name, name) == 0) // 运⽤⽐较字符串进⾏⽐较
return i; // 如果成功到,返回数组下标
}
return -1; // 没有到,返回-1
}
//删除(学⽣信息)数组函数(数组的移位操作)
void deleteArray(struct stuSystem* pSystem, const char* name)
{
int pos = searchArray(pSystem, name);
if(pos == -1)
{
printf("没有到此学⽣,⽆法删除!\n");
}
else
{
//利⽤指针的移位删除数组
for(int i = pos; i < pSystem ->curSize - 1; i++)
{
pSystem ->stu[i] = pSystem -> stu[i + 1];
}
pSystem ->curSize--;
printf("删除成功!\n");
}
}
/
/修改(学⽣信息)数组函数
void modifyArray(struct stuSystem* pSystem, const char* name)
{
int pos = searchArray(pSystem, name);
if(pos == -1)
{
printf("没有到此学⽣,⽆法修改!\n");
}
}
else
{
printf("请输⼊该⽣新的姓名和学号:");
scanf("%s%d",pSystem ->stu[pos].name,&pSystem ->stu[pos].num); printf("请输⼊新的三门课的成绩:");
pSystem ->stu[pos].sum = 0; //初始为零
for(int i = 0; i < 3; i++) //重新赋值
补码怎么转源码{
scanf("%lf",&pSystem ->stu[pos].score[i]);
pSystem ->stu[pos].sum += pSystem ->stu[pos].score[i];
}
printf("修改成功 \n");
}
}
//(数组的)排序函数(冒泡排序)
void SortBySum(struct stuSystem* pSystem)
{
//按照总分排序
for(int i = 0; i < pSystem ->curSize; i++)
{
for(int j = 0; j < pSystem ->curSize - i - 1; j++)
{
if(pSystem ->stu[j].sum < pSystem ->stu[j + 1].sum)
{
struct student temp = pSystem ->stu[j];
pSystem ->stu[j] = pSystem ->stu[j + 1];
pSystem ->stu[j + 1] = temp;
}
}
}
}
//寻并打开某⼀个系统的函数(打开系统的钥匙)
void keyDown(struct stuSystem* pSystem)
{
// 按键输⼊+开关语句(switch)
int userKey = 0;
scanf("%d",&userKey); // 输⼊钥匙
int result = userKey;
int pos = 0; // 查判断
char name[18] = "";
冒泡排序代码c语言switch(userKey) // ⽤钥匙打开系统的某个操作
{
case 0:
printf("------------退出系统-----------\n");
printf("退出成功 \n");
system("pause");
exit(0); //退出界⾯函数
break;
case 1:
printf("------------录⼊学⽣信息-----------\n");
inputStu(pSystem); //调⽤输⼊函数
break;
case 2:
printf("------------浏览学⽣信息-----------\n");
printfArray(pSystem); //调⽤打印学⽣信息函数
break;
case 3:
printf("------------删除学⽣信息-----------\n");
printf("请输⼊要删除学⽣的姓名:");
scanf("%s",name);
deleteArray(pSystem, name); //调⽤删除函数
break;
case 4:
case 4:
printf("------------修改学⽣信息-----------\n");
printf("请输⼊修改学⽣的姓名:");
scanf("%s", name);
modifyArray(pSystem, name);//调⽤修改函数
break;
case 5:
printf("------------查学⽣信息-----------\n");
printf("请输⼊要查的学⽣的姓名:");
scanf("%s",name);
pos = searchArray(pSystem, name); // 调⽤查函数
if(pos == -1)
{
printf("未到相关学⽣信息!\n");
}
else
{
printf("姓名\t编号\t数学\t英语\t体育\t总分\n");
printf("%s\t%d\t",pSystem ->stu[pos].name, pSystem ->stu[pos].num); //打印姓名和学号 for(int i = 0; i < 3; i++)isalpha函数可以检测中文吗
{
printf("%.lf\t", pSystem ->stu[pos].score[i]); // 打印各科成绩
}
printf("%.lf\n", pSystem ->stu[pos].sum); // 打印总分
}
break;
case 6:
printf("------------学⽣排序信息-----------\n");
SortBySum(pSystem); //调⽤排序函数
printfArray(pSystem); //然后调⽤打印函数打印信息
break;
default:
java消息推送的方式有哪几种printf("输⼊错误!请重新输⼊!\n");
break;
}
}
int main()
{
struct stuSystem* pSystem = createSystem(); //创建⼀个结构指针插⼊某个系统
while (1)
{
makeMenu(); // 调⽤函数并打印出菜单
keyDown(pSystem); //调⽤打开系统函数
system("pause");
}
return 0;tablebordered
}
制作不易,还请三连⽀持
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论