鱼C论坛

 找回密码
 立即注册
查看: 6311|回复: 5

c++学生信息管理系统怎么根据学号排序萌新跪求

[复制链接]
发表于 2018-6-23 23:25:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小路k 于 2018-6-24 14:52 编辑

一个学生信息管理系统的排序功能
定义一个student 的类
student中包括学号,姓名,年龄
这个类中定义一个排序的功能
要求能根据学号进行排序
学号为string类型
初学者求助,跪求大佬帮助......


嘤嘤嘤?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-23 23:38:34 | 显示全部楼层
我觉得这个在数据库层面就能实现,select * from studentinfo order by 学号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-24 00:58:52 | 显示全部楼层
#include "stdio.h"
#include "malloc.h"
#include "string.h"
//一个学生信息管理系统的排序功能
//学生信息包括学号,姓名,年龄
//要求能根据学号进行排序
//学号为string类型
//初学者求助,跪求大佬帮助......

typedef struct sData{
        char * xh;
        char * name;
        int age;
}sData;

typedef struct sTest{
        sData * Data;
        struct sTest *next;
}sTest;

typedef struct sHead{
        sTest * p_head;
}sHead;

void random_data(sHead * p,int n){
        sTest * t;
        char str[128];
        int i ;
        p->p_head=NULL;                                                                        //初始化
        for(i=0;i<n;i++){
                t=(sTest *)malloc(sizeof(sTest));
                t->Data=(sData *)malloc(sizeof(sData));
                
                str[0]='a'+i;
                str[1]='b'+i;
                str[2]='c'+i;
                str[3]='\0';
                t->Data->xh  =(char *)malloc(strlen(str)+1);
                t->Data->name=(char *)malloc(strlen(str)+1);
                t->Data->age=i;
                strcpy(t->Data->xh,str);
                strcpy(t->Data->name,str);

                t->next=p->p_head;
                p->p_head=t;
        }
}

void print(sHead * p){
        sTest *t=p->p_head;
        while(t){
                printf("number:%s name:%s age:%d\n",t->Data->xh,t->Data->name,t->Data->age);
                t=t->next;
        }
}
void sort(sHead * p){
        sTest *t=p->p_head;
        sTest *t1;
        sTest * swap;
        while(t  && t->next){
                swap = t;
                t1=t->next;
                while(t1){
                        if(strcmp(swap->Data->xh,t1->Data->xh)>0){
                                swap=t1;
                        }
                        t1=t1->next;
                }
                if(t-swap){                                                        //地址发生偏移
                        sData * s = t->Data;
                        t->Data = swap->Data;
                        swap->Data = s;
                }
                t=t->next;
        }
}

int main(){
        sHead head;
        
        random_data(&head,10);
        print(&head);
        sort(&head);
        puts("\n\n");
        print(&head);
        return 0;
}

sort比较low,好的方法。可以带入函数指针,函数指针返回 0 或者大于0 或者小于0,sort根据函数指针返回到值,进行操作。
这样到好处是,可以sort各种排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-6-24 08:11:36 | 显示全部楼层
根据学会排序呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-24 15:08:42 | 显示全部楼层
关键是感觉 发表于 2018-6-24 00:58
sort比较low,好的方法。可以带入函数指针,函数指针返回 0 或者大于0 或者小于0,sort根据函数指针返 ...

蟹蟹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-28 10:24:41 | 显示全部楼层
强制转化为int型排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 00:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表