QQ837952151 2019-11-04 22:34 采纳率: 75%
浏览 870

c语言:这是一个学生信息管理系统,编译过了,但是运行的时候出了问题!

代码如下:

#include"stdio.h"

include "stdlib.h"

#define M 100
struct student {
char name[25]; //姓名
char num[25]; //学号
char gender[20]; //性别
char class[35]; //班别
char tel[25]; //手机号
char sex[25]; //性别
};
void input(struct student stu[M]); //输入函数
void output(struct student stu[M]); //输出函数
void lookfor(struct student stu[M]); //查询函数
void modify(struct student stu[M]); //修改函数
void delete_student(struct student stu[M]); //删除函数
int count = 0;
struct student t;
int main()
{
int choice, sum;
struct student stu[M];
point1:
sum = 0;
printf("\t\t\t\t * 欢迎使用学生信息管理系统 \n");
printf("\t\t\t\t\t 1、添加学生信息\n");
printf("\t\t\t\t\t 2、查询学生信息\n");
printf("\t\t\t\t\t 3、修改学生信息\n");
printf("\t\t\t\t\t 4、删除学生信息\n");
printf("\t\t\t\t\t 5、浏览学生信息\n");
printf("\t\t\t\t\t 6、退出系统\n");
printf(" *
*******************************************************************************\n");
printf("请输入你的选择\n");
scanf_s("%d", &choice);
if (choice > 7 || choice <= 0)
{
sum++;
if (sum >= 5)
{
printf("输入错误次数过多,程序将重新开始\n");
system("pause"); //程序暂停
system("cls"); //清屏语句
goto point1;
}
}
switch (choice) //根据选择,调用不同的函数来完成不同的任务
{
case 1:input(stu); break;
case 2:lookfor(stu); break;
case 3:modify(stu); break;
case 4:delete_student(stu); break;
case 5:output(stu); break;
case 6:printf("感谢你使用学生信息管理系统,请关掉程序!!!\n"); system("pause"); break;
default:printf("无效的选择!!!请重新输入!!!\n"); break;
}
return 0;
}
void input(struct student stu[M]) //自定义输入函数
{
int len;
system("cls");
printf("请添加要输入学生的信息\n");
do {
printf("请输入由12位数字组成的学生学号\n");
scanf_s("%s", &stu[count].num);
len = strlen(stu[count].num);
} while (len != 12);
printf("请输入同学的姓名\n");
scanf_s("%s", stu[count].name);
printf("请输入学生的性别(1.男 2.女):\n");
scanf_s("%s", &stu[count].sex);
printf("请输入对应的学生班级: \n");
scanf_s("%s", &stu[count].class);
printf("请输入学生的手机号码\n");
scanf_s("%s", &stu[count].tel);
count++;
}
void output(struct student stu[M]) //自定义输出函数
{
int j;
system("cls");
if (count == 0)
{
printf("当前已存学生信息为0个\n");
return;
}
for (j = 0; j < count; j++)
{
printf("学号\t\t 姓名\t\t性别\t班别\t手机号\n");
for (j = 0; j < count; j++) {

printf("%s\t", stu[j].num);
printf("%s\t", stu[j].name);
printf("%s\t", stu[j].sex);
printf("%s\t", stu[j].class);
printf("%s\t", stu[j].tel);
}
}
}
void modify(struct student stu[M]) //自定义修改函数
{
int j, flag = 0, course;
char xh[25];
system("cls");
if (count == 0)
{
printf("当前已存学生信息为0个,无法修改!!!\n");
return;
}
else
{
printf("请输入你想要修改的同学学号\n");
scanf_s("%s", &xh);
for (j = 0; j < count; j++){
if (strcmp(stu[j].num, xh) == 0) //同上
{
printf("你确定要修改学生的信息吗???如果不确定的话,请关掉本程序吧!!!\n");
printf("选择需要修改的内容: 1、姓名 2、学号 3、班别 4、性别 5、手机号\n");
scanf_s("%d", &course);
printf("请输入你想要修改后的学生成绩\n");
switch (course)
{
case 1:printf("请输入你想要修改后的学生名字\n"); scanf_s("%s", &stu[j].name); break;
case 2:printf("请输入你想要修改后的学生学号\n"); scanf_s("%s", &stu[j].num); break; //switch控制语句
case 3:printf("请输入你想要修改后的学生班别\n"); scanf_s("%s", &stu[j].class); break;
case 4:printf("请输入你想要修改后的学生性别\n"); scanf_s("%s", &stu[j].sex); break;
case 5:printf("请输入你想要修改后的学生手机号\n"); scanf_s("%s", &stu[j].tel); break;
default:printf("无效的选择!!!请重新输入!!!\n"); break;
}
}
}

}

}
void lookfor(struct student stu[M]) //自定义查询学生信息函数
{
int j, flag = 0;
char xh[25];
system("cls");
if (count == 0)
{
printf("当前已存学生信息为0个,无法查询!!!\n");
return;
}
else
{
printf("请输入你想要查看的同学学号\n");
scanf_s("%s", &xh);
fflush(stdin);
for (j = 0; j < count; j++)
{
if (strcmp(stu[j].num, xh) == 0) //通过字符函数对已存入的学生信息进行比较,找出要查看的学生
{
printf("学号\t\t姓名\t\t班别\t性别\t手机号\n");
printf("%s\t", stu[j].num);
printf("%s\t", stu[j].name);
printf("%s\t", stu[j].class);
printf("%s\t", stu[j].sex);
printf("%s\t", stu[j].tel);
}
}
if (j == count)
printf("很抱歉,没有你所需要的学生信息\n");
}
}
void delete_student(struct student stu[M]) //自定义删除函数
{

int j, index = 0, k = count;
char xh[25];
system("cls");
if (count == 0)
{
    printf("当前已存学生信息为0个,无法删除!!!\n");
    return;
}
else
{
    printf("请输入你想要删除的同学学号\n");
    scanf_s("%s", xh);
    fflush(stdin);
    for (j = 0; j < count; j++)
    {
        if (strcmp(stu[j].num, xh) == 0)
        {
            for (j = index; j < count; j++)
                stu[j] = stu[j + 1];
            count--;
            if (count < k)
                printf("你已经删除成功\n");
        }
        index++;
    }
    if (j == count)
        printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n");
}

}

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:23
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波