输入学生信息,之后怎么按学号查询学生信息,按学号修改信息呢
sbdklskshavhdjkds
可以看看我写的这个,刚发的
https://blog.csdn.net/weixin_44882124/article/details/125285056
你要的是学生管理程序吗?如下:
https://github.com/csyxwei/StudentScoreManagerSystem/blob/master/%E6%88%90%E7%BB%A9%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.c
该程序包括以下功能:
1.录入每个学生的学号、姓名和各科考试成绩
2.计算每门课程的总分和平均分
3.计算每个学生的总分和平均分
4.按每个学生的总分由高到低排出名次表
5.按每个学生的总分由低到高排出名次表
6.按学号由小到大排出成绩表
7.按姓名的字典顺序排出成绩表
8.按学号查询学生排名及其考试成绩
9.按姓名查询学生排名及其考试成绩
10.按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比
11.输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分
12.将每个学生的纪录信息写入文件
13.从文件中读出每个学生的纪录信息并显示
供参考:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define N 100
typedef struct Dormitory {
char name[32]; //姓名
char id[16]; //学号
char dormNo[32];//班级
char sex[4]; //性别
char details[64];//联系方式
}dorm;
dorm dor[N];
int cnt = 0;
void menu()
{
printf("\t\t***********************************************\n\n");
printf("\t\t 学生学籍管理系统 \n\n");
printf("\t\t***********************************************\n\n");
printf("\t\t***********************************************\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("\t\t***********************************************\n");
printf("\t\t请选择(1 - 6):");
}
void add()
{
printf("请输入姓名:"); scanf("%s", dor[cnt].name); getchar();
printf("请输入学号:"); scanf("%s", dor[cnt].id); getchar();
printf("请输入班级:"); scanf("%s", dor[cnt].dormNo); getchar();
printf("请输入性别:"); scanf("%s", dor[cnt].sex); getchar();
printf("请输入联系方式:"); scanf("%s", dor[cnt].details); getchar();
cnt++;
printf("请按任意键继续...");
_getch();
}
void dispsingrecord(int i)
{
if (i == -1)
printf("未找到相关记录.\n");
else {
printf("姓名\t学号\t班 级\t性别\t联系方式\n");
printf("%s %s %s %s %s\n", dor[i].name, dor[i].id,
dor[i].dormNo, dor[i].sex, dor[i].details);
}
printf("请按任意键继续...");
_getch();
}
int inquire()
{
int i;
char n_id[32];
if (cnt == 0) {
return -1;
}
else {
printf("请输入姓名或学号:");
scanf("%s", n_id);
for (i = 0; i < cnt; i++) {
if (strcmp(dor[i].name, n_id) == 0 || strcmp(dor[i].id, n_id) == 0)
return i;
}
if (i == cnt)
return -1;
}
}
void revise(int i)
{
int choose = 1;
if (i == -1)
printf("未找到相关记录.\n");
else {
printf("待修改的记录信息:\n");
printf("姓名:%s 学号:%s 班级:%s 性别:%s 联系方式:%s\n\n",
dor[i].name, dor[i].id, dor[i].dormNo, dor[i].sex, dor[i].details);
do {
printf("请输入修改的信息(1.姓名 2.学号 3.班级 4.性别 5.联系方式 0.保存并退出修改):\n");
scanf("%d", &choose);
switch (choose)
{
case 1:printf("请输入新的姓名:"); scanf("%s", dor[i].name); break;
case 2:printf("请输入新的学号:"); scanf("%s", dor[i].id); break;
case 3:printf("请输入新的班级:"); scanf("%s", dor[i].dormNo); break;
case 4:printf("请输入新的性别:"); scanf("%s", dor[i].sex); break;
case 5:printf("请输入新的联系方式:"); scanf("%s", dor[i].details); break;
case 0:choose = 0; break;
default:
break;
}
} while (choose);
printf("修改完成。\n");
}
printf("请按任意键继续...");
_getch();
}
void del(int i)
{
int k;
if (i == -1)
printf("未找到相关记录.\n");
else {
for (k = i; k < cnt - 1; k++)
dor[k] = dor[k + 1];
cnt--;
printf("删除记录成功。\n");
}
printf("请按任意键继续...");
_getch();
}
void browse()
{
int i;
if (cnt == 0)
printf("无记录\n");
else {
printf("姓名\t学号\t班 级\t性别\t联系方式\n");
for (i = 0; i < cnt; i++)
printf("%s %s %s %s %s\n", dor[i].name, dor[i].id,
dor[i].dormNo, dor[i].sex, dor[i].details);
}
printf("请按任意键继续...");
_getch();
}
int main()
{
int choose = 1;
while (choose) {
menu();
scanf("%d", &choose);
switch (choose)
{
case 1:add(); break;//添加
case 2:dispsingrecord(inquire()); break;//查询
case 3:revise(inquire()); break;//修改
case 4:del(inquire()); break;//删除
case 5:browse(); break; //浏览
case 6:choose = 0; break;
default:
break;
}
system("cls");
}
return 0;
}
什么系统,有代码吗,帮你修改
1、按学号查询学生信息:输入学生信息是把学生学号存在字符数组中,比如:s[0][10]="123",s[1][10]="234"...,查询时输入要查询的学号,然后使用strcmp函数依次和已有的学号对比,如果有strcmp返回值=0,则输入这个学号的学生信息,实现查询功能;或者修改该学生信息。如下:
假设学号存在s[][]数组中:s[0][10]="123",s[1][10]="234"
scanf("%s",&str); //输入要查询的学号
for(int i=0;i<n;i++) //n是学生人数
if(strcmp(s[i],str)==0) //比较是否有这个学号学生,如有执行printf语句
printf("%s",s[i]); //输出该学号学生信息,完成查询功能
//s[i]="345" //修改学生信息