| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1610 人关注过本帖
标题:Code::Blocks编译学生管理系统,为什么运行不了,求解
只看楼主 加入收藏
wulizicodean
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-12-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
Code::Blocks编译学生管理系统,为什么运行不了,求解
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#define LEN 15
#define MAX 100
struct student
{
    int no;
    char name[50];
    int score_yu;
    int score_sx;
}   stu[MAX];
int count=0;
void show_menu()
{
    printf("\t\t*************学生管理系统************\n");
    printf("\n\n\t\t\t        1 添加记录\n");
    printf("\t\t\t        2 显示记录\n");
    printf("\t\t\t        3 修改记录\n");
    printf("\t\t\t        4 删除记录\n");
    printf("\t\t\t        5 查找记录\n");
    printf("\t\t\t        6 排序记录\n");
    printf("\t\t\t        7 退出系统\n");
    printf("\n\n\t\t************************************\n");
    printf("please choice 1-7: ");
}



void sort()

{
    int i,j,*p,*q,s;
    char temp[10];
    for(i=0; i<50-1; i++)
    {
        for(j=50-1; j>i; j--)
            if(strcmp(stu[j-1].no,stu[j].no)>0)
            {
                strcpy(temp,stu[j-1].no);
                strcpy(stu[j-1].no,stu[j].no);
                strcpy(stu[j].no,temp);
                strcpy(temp,stu[j-1].name);
                strcpy(stu[j-1].name,stu[j].name);
                strcpy(stu[j].name,temp);


            }
    }
}
void del()
{
    int i,j,flag=0;
    char s1[LEN+1];
    printf("请输入要删除学生的学号:\n");
    scanf("%s",s1);
    for(i=0; i<50; i++)
        if(strcmp(stu[i].no,s1)==0)
        {
            flag=1;
            for(j=i; j<50-1; j++)
                stu[j]=stu[j+1];
        }
    if(flag==0)
        printf("该学号不存在!\n");
    if(flag==1)
    {
        printf("删除成功,显示结果请选择菜单6\n");
        i--;
    }
}
int find_insert_point()
{
    int i;
    for(i=0; i<MAX; i++)
    {
        if(stu[i].no==0) break;
    }
    return i;
}
void add()
{
    while(1)
    {
        if(count>=MAX)
        {
            printf("已超出系统容量,不能再添加");
            return;
        }
        int i=find_insert_point();
        printf("学号: ");
        scanf("%d",&stu[i].no);
        getchar();
        printf("姓名: ");
        scanf("%s",stu[i].name);
        getchar();
        printf("语文:");
        scanf("%d",&stu[i].score_yu);
        getchar();
        printf("数学:");
        scanf("%d",&stu[i].score_sx);
        getchar();
        count++;
        memset(&stu[0],0,sizeof(stu));
        printf("是否继续添加(Y/N)");
        char c=getchar();
        count++;

        if(c=='N'||c=='n') break;
    }
}
void show()
{
    printf("学号\t姓名\t语文\t数学\t总分\n");
    int i;
    for(i=0; i<MAX; i++)
    {
        if(stu[i].no!=0)
        {
            printf("%d\t%s%d%d",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
        }
    }
}
void find()
{
    printf("查找学生的记录\n");
    printf("请输入学生的姓名:");
    int i;
    char name[50];
    scanf("%s",name);
    for(i=0; i<MAX; i++)
    {
        if(strcmp(stu[i].name,name)==0)
        {
            printf("%d\t%s%d%d",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
        }
    }
}
void modify_score()
{
    printf("修改学生记录\n");
    printf("请输入学生姓名: ");
    char name[50];
    int i;
    scanf("%s",name);
    int flag=0;
    for(i=0; i<MAX; i++)
    {
        if(strcmp(stu[i].name,name)==0)
        {
            printf("%d\t%s\t%d\t%d\t\n",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
            flag=1;
            break;
        }
    }
    if(!flag)
    {
        printf("查找不到学生记录\n");
        return;
    }
    printf("姓名: ");
    scanf("%s",stu[i].name);
    getchar();
    printf("语文:");
    scanf("%d",&stu[i].score_yu);
    getchar();
    printf("数学:");
    scanf("%d",&stu[i].score_sx);
    printf("修改成功\n");

}
int main()
{
    memset(&stu[0],0,sizeof(stu));
    while(1)
    {
        show_menu();
        int chioce;
        scanf("%d",chioce);
        {
            printf("Game over\n");
            break;
        }
        switch(chioce)
        {
        case 1:
        {
            add();
            break;
        }
        case 2:
        {
            show();
            break;
        }
        case 3:
        {
            modify_score();
            break;
        }
        case 4:
        {
            del();
            break;
        }
        case 5:
        {
            find();
            break;
        }
        case 6:
        {
            sort();
            break;
        }
        case 7:
        {
            break;
        }
        default:
            printf("输出有误!\n");
        }
        return 0;
    }

}

搜索更多相关主题的帖子: stu int name printf scanf 
2017-12-16 16:48
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:7 
运行到哪有问题
2017-12-16 16:50
wulizicodean
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-12-16
收藏
得分:0 
回复 2楼 吹水佬
可运行但选择菜单时停止工作出现这个错误Process terminated with status -1073741510 (0 minute(s), 23 second(s))
 
2017-12-16 16:56
wulizicodean
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-12-16
收藏
得分:0 
哪里有错请求大神指点,急
2017-12-16 17:21
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:7 
很多scanf语句,没加 &
2017-12-17 01:08
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
结构成员 no(学号)是int类型,有些地方按字符串处理。
2017-12-17 06:11
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
简单改了一下,参考:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#define LEN 15
#define MAX 100
struct student
{
    int no;
    char name[50];
    int score_yu;
    int score_sx;
}   stu[MAX];
int count=0;
void show_menu()
{
    printf("\t\t*************学生管理系统************\n");
    printf("\n\n\t\t\t        1 添加记录\n");
    printf("\t\t\t        2 显示记录\n");
    printf("\t\t\t        3 修改记录\n");
    printf("\t\t\t        4 删除记录\n");
    printf("\t\t\t        5 查找记录\n");
    printf("\t\t\t        6 排序记录\n");
    printf("\t\t\t        7 退出系统\n");
    printf("\n\n\t\t************************************\n");
    printf("please choice 1-7: ");
}

void sort()
{
    int i,j;
    struct student st;
    for (i=0; i<count-1; ++i)
    {
        for (j=i+1; j<count; ++j)
        {
            if (stu[j].no < stu[i].no)
            {
                st = stu[i];
                stu[i] = stu[j];
                stu[j] = st;
            }
        }
    }
}

void del()
{
    int i,j,no;
    printf("请输入要删除学生的学号:\n");
    scanf("%d",&no);
    for (i=0; i<count; ++i)
    {
        if (stu[i].no == no)
        {
            for (j=i; j<count-1; ++j)
                stu[j] = stu[j+1];
            break;
        }
    }
    if (i < count)
    {
        --count;
        printf("删除成功,显示结果请选择菜单6\n");
    }
    else
        printf("该学号不存在!\n");
}

void add()
{
    while(1)
    {
        if(count>=MAX)
        {
            printf("已超出系统容量,不能再添加");
            return;
        }
        printf("学号:");
        scanf("%d",&stu[count].no);
        printf("姓名: ");
        scanf("%s",stu[count].name);
        printf("语文:");
        scanf("%d",&stu[count].score_yu);
        printf("数学:");
        scanf("%d",&stu[count].score_sx);
        while (getchar() != '\n') NULL;
        count++;
        printf("是否继续添加(Y/N)");
        char c=getchar();
        while (getchar() != '\n') NULL;
        if(c=='N'||c=='n') break;
    }
}

void show()
{
    printf("学号\t姓名\t语文\t数学\t总分\n");
    int i;
    for(i=0; i<count; i++)
        printf("%d\t%s\t%d\t%d\t%d\n",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
}

void find()
{
    printf("查找学生的记录\n");
    printf("请输入学生的姓名:");
    int i;
    char name[50];
    scanf("%s",name);
    for (i=0; i<count; ++i)
        if (strcmp(stu[i].name,name) == 0)
            break;
    if (i < count)
        printf("%d\t%s\t%d\t%d\t%d\n",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
    else
        printf("没找到 %s 的记录\n",name);
}

void modify_score()
{
    printf("修改学生记录\n");
    printf("请输入学生姓名: ");
    char name[50];
    int i;
    scanf("%s",name);
    for (i=0; i<count; i++)
        if (strcmp(stu[i].name,name)==0)
            break;
    if (i == count)
    {
        printf("查找不到学生记录\n");
        return;
    }
    printf("%d\t%s\t%d\t%d\t%d\n",stu[i].no,stu[i].name,stu[i].score_yu,stu[i].score_sx,stu[i].score_yu+stu[i].score_sx);
    printf("姓名: ");
    scanf("%s",stu[i].name);
    printf("语文:");
    scanf("%d",&stu[i].score_yu);
    printf("数学:");
    scanf("%d",&stu[i].score_sx);
    while (getchar() != '\n') NULL;
    printf("修改成功\n");
}

int main()
{
    memset(&stu[0],0,sizeof(stu));
    while(1)
    {
        show_menu();
        int chioce;
        scanf("%d", &chioce);
        while (getchar() != '\n') NULL;
        if (chioce == 7)
        {
            printf("Game over\n");
            break;
        }
        switch(chioce)
        {
            case 1:
            {
                add();
                break;
            }
            case 2:
            {
                show();
                break;
            }
            case 3:
            {
                modify_score();
                break;
            }
            case 4:
            {
                del();
                break;
            }
            case 5:
            {
                find();
                break;
            }
            case 6:
            {
                sort();
                break;
            }
            default:
                printf("输出有误!\n");
        }
    }
    return 0;
}
2017-12-17 07:54
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:7 
编译没有错误,但警告提示sort函数里面结构体引用不正确。
程序代码:
if(strcmp(stu[j-1].no,stu[j].no)>0)
            {
                strcpy(temp,stu[j-1].no);
                strcpy(stu[j-1].no,stu[j].no);
                strcpy(stu[j].no,temp);
                strcpy(temp,stu[j-1].name);
                strcpy(stu[j-1].name,stu[j].name);
                strcpy(stu[j].name,temp);
另外主函数这边有逻辑错误,导致退出。scanf后面马上就执行了break。
程序代码:
int main()
{
    memset(&stu[0],0,sizeof(stu));
    while(1)
    {
        show_menu();
        int chioce;
        scanf("%d",chioce);
        {
            printf("Game over\n");
            break;
        }
        switch(chioce)
        {

2017-12-17 12:21
wulizicodean
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-12-16
收藏
得分:0 
谢谢
2017-12-17 22:06
快速回复:Code::Blocks编译学生管理系统,为什么运行不了,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023378 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved