鱼C论坛

 找回密码
 立即注册
查看: 5832|回复: 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 | 显示全部楼层
  1. #include "stdio.h"
  2. #include "malloc.h"
  3. #include "string.h"
  4. //一个学生信息管理系统的排序功能
  5. //学生信息包括学号,姓名,年龄
  6. //要求能根据学号进行排序
  7. //学号为string类型
  8. //初学者求助,跪求大佬帮助......

  9. typedef struct sData{
  10.         char * xh;
  11.         char * name;
  12.         int age;
  13. }sData;

  14. typedef struct sTest{
  15.         sData * Data;
  16.         struct sTest *next;
  17. }sTest;

  18. typedef struct sHead{
  19.         sTest * p_head;
  20. }sHead;

  21. void random_data(sHead * p,int n){
  22.         sTest * t;
  23.         char str[128];
  24.         int i ;
  25.         p->p_head=NULL;                                                                        //初始化
  26.         for(i=0;i<n;i++){
  27.                 t=(sTest *)malloc(sizeof(sTest));
  28.                 t->Data=(sData *)malloc(sizeof(sData));
  29.                
  30.                 str[0]='a'+i;
  31.                 str[1]='b'+i;
  32.                 str[2]='c'+i;
  33.                 str[3]='\0';
  34.                 t->Data->xh  =(char *)malloc(strlen(str)+1);
  35.                 t->Data->name=(char *)malloc(strlen(str)+1);
  36.                 t->Data->age=i;
  37.                 strcpy(t->Data->xh,str);
  38.                 strcpy(t->Data->name,str);

  39.                 t->next=p->p_head;
  40.                 p->p_head=t;
  41.         }
  42. }

  43. void print(sHead * p){
  44.         sTest *t=p->p_head;
  45.         while(t){
  46.                 printf("number:%s name:%s age:%d\n",t->Data->xh,t->Data->name,t->Data->age);
  47.                 t=t->next;
  48.         }
  49. }
  50. void sort(sHead * p){
  51.         sTest *t=p->p_head;
  52.         sTest *t1;
  53.         sTest * swap;
  54.         while(t  && t->next){
  55.                 swap = t;
  56.                 t1=t->next;
  57.                 while(t1){
  58.                         if(strcmp(swap->Data->xh,t1->Data->xh)>0){
  59.                                 swap=t1;
  60.                         }
  61.                         t1=t1->next;
  62.                 }
  63.                 if(t-swap){                                                        //地址发生偏移
  64.                         sData * s = t->Data;
  65.                         t->Data = swap->Data;
  66.                         swap->Data = s;
  67.                 }
  68.                 t=t->next;
  69.         }
  70. }

  71. int main(){
  72.         sHead head;
  73.        
  74.         random_data(&head,10);
  75.         print(&head);
  76.         sort(&head);
  77.         puts("\n\n");
  78.         print(&head);
  79.         return 0;
  80. }
复制代码


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-3-28 19:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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