要求完整代码并可以运行

设有N名学生的数据信息,包含学号,姓名和年龄,要求设计一个系统,完成一下功能:
1.输入学生的学号,姓名和年龄
2.按学号由小到大排序,姓名和年龄也随之调整
3.输入一个学号,用一种查找算法找出该学生的姓名

解答如下,用到了结构体

img

#include <stdio.h>
#define MAX 255
typedef struct student
{
    int id;
    char name[20];
    int age;
};
void input(student stu[],int n);//输入 
void sort(student stu[],int n);//冒泡排序  
void print(student stu[],int n);//打印 
int search(student stu[],int n,int id);//按学号查找 
int main()
{
    int N,id;
    student stu[MAX];
    printf("请输入学生人数N:");
    scanf("%d",&N);
    input(stu,N);
    sort(stu,N);
    printf("按学号由小到大排序后为:\n");
    print(stu,N);
    printf("请输入查询的学号:");
    scanf("%d",&id);
    search(stu,N,id);
    return  0;
}

void input(student stu[],int n)
{
    for(int i=0;i<n;i++)
    {
        printf("输入第%d个学生的学号,姓名和年龄:",i+1);
        scanf("%d %s %d",&stu[i].id,stu[i].name,&stu[i].age);
    }
}
void sort(student stu[],int n)//冒泡排序 
{
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(stu[j].id > stu[j+1].id)
            {
                student tem = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = tem;
            }
        }
    }
}
void print(student stu[],int n)
{
    for(int i=0;i<n;i++)
        printf("学号:%d,姓名:%s,年龄:%d\n",stu[i].id,stu[i].name,stu[i].age);
}
int search(student stu[],int n,int id)
{
    int index=-1;
    for(int i=0;i<n;i++)
    {
        if(stu[i].id==id)
        {
            index=i;
        }
    }
    if(index>-1)
        printf("学号为%d的学生姓名为:%s\n",id,stu[index].name);
    else
        printf("没有这个学号的学生。\n");
}

先设置数据库 把以上字段都输入进去 如果是单表就正常查询 如果是多表就进行联查
连接数据库
搭建架构
在持久层吧sql写完
输入学号即查询

代码如下

#include <stdio.h>

struct Student {
    int id;
    char name[20];
    int age;
};

int main()
{
    int i, j, m, id, N;
    printf("Please enter the number of students (N) : ");
    scanf("%d", &N);
    struct Student stu[N];
    struct Student temp;

    while(1) {
        printf("1. Insert student's information\n");
        printf("2. Sort student's information\n");
        printf("3. Find student's name\n");
        printf("Please enter your choice : ");
        scanf("%d", &m);
        switch (m) {
        case 1:
            for(i = 0; i < N; i++) {
                scanf("%d %s %d", &stu[i].id, stu[i].name, &stu[i].age);
            }
            break;
        case 2:
            for(i = 0; i < N; i++) {
                for(j = 0; j < N - 1 - i; j++) {
                    if(stu[j].id > stu[j + 1].id) {
                        temp = stu[j];
                        stu[j] = stu[j + 1];
                        stu[j + 1] = temp;
                    }
                }
            }
            for(i = 0; i < N; i++) {
                printf("%d\t%s\t%d\n", stu[i].id, stu[i].name, stu[i].age);
            }
            break;
        case 3:
            printf("Please enter student's id : ");
            scanf("%d", &id);
            for(i = 0; i < N; i++) {
                if(id == stu[i].id) {
                    printf("student's name: %s\n", stu[i].name);
                    break;
                }
            }
            break;
        default:
            printf("Invalid choice!\n");
            break;
        }
        printf("\n");
    }
    return 0;
}

不就是学生信息管理系统嘛,源代码我有啊

img

用结构体 定义学生信息
用冒泡排序或简单选择来排序
用二分查找来查找
这样最简单

定义学生数据结构,按要求写三个函数呗

#include <stdio.h>

typedef struct _student
{
    int num;
    char name[20];
    int age;
}student;

void input(student *stu,int n)
{
    for(int i=0;i<n;i++)
    {
        printf("输入第%d个学生的学号,姓名和年龄:",i+1);
        scanf("%d %s %d",&stu[i].num,stu[i].name,&stu[i].age);
    }
}

void sorts(student *stu,int n)
{
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
        {
            if(stu[j].num > stu[j+1].num)
            {
                student temp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = temp;
            }
        }
}

void print(student *stu,int n)
{
    for(int i=0;i<n;i++)
        printf("学号:%d,姓名:%s,年龄:%d\n",stu[i].num,stu[i].name,stu[i].age);
}

void find(student *stu,int n,int num)
{
    int left = 0,right = n-1;
    int mid = (left + right)/2;
    while(left <= right)
    {
        if(stu[mid].num < num)
            left = mid + 1;
        else if(stu[mid].num > num)
            right = mid - 1;
        else 
        {
            printf("学号为%d的学生姓名为:%s\n",num,stu[mid].name);
            break;
        }
    }
    if(left > right)
        printf("没有这个学号的学生。\n");
}

int main()
{
    int N,num;
    student stu[100];
    printf("请输入学生人数:");
    scanf("%d",&N);
    input(stu,N);
    sorts(stu,N);
    printf("学号排序后为:\n");
    print(stu,N);
    printf("请输入查询的学号:");
    scanf("%d",&num);
    find(stu,N,num);
    return  0;
}