| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:这是我用链表结构写的学生管理系统,但老是有错误,还有就是对于排序不知道 ...
只看楼主 加入收藏
邂逅975
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-9-16
结帖率:0
收藏
 问题点数:0 回复次数:3 
这是我用链表结构写的学生管理系统,但老是有错误,还有就是对于排序不知道该怎么开始写,因为写出来基本不对,求指教!
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct student)
struct student
{
  long num;               //学号
  char name;             //姓名
  float score[3];       //三门课程的成绩
  double avr;          //平均成绩
  struct student *next;
};


int n;
struct student *creat()      //创建链表
{
  struct student *head;
  struct student *p1,*p2;
     n=0;
      p1=p2=(struct student*)malloc(LEN);
         printf("请输入学生的学号:");
         scanf("%d",&p1->num);
         printf("请输入学生的姓名:");
         scanf("%s",p1->name);
         printf("请输入学生的成绩:");
         scanf("%f%f%f",&p1->score[0],&p1->score[1],&p1->score[2]);
         head=NULL;
while(p1->num!=0)
{
    n=n+1;
     if(n==1)
         head=p1;
     else
         p2->next=p1;
         p2=p1;
         p1=(struct student*)malloc(LEN);
         scanf("%d%s%f%f%f",&p1->num ,p1->name,&p1->score[0], &p1->score[1],&p1->score[2]);
}
      p2->next=NULL;
      return head;
}
 
struct student *ord(struct student *head)  //打算排序,可是不知道怎么写下去了,求指教
{
struct student *head;
struct student *p1,*p2;


}


void print(struct student *head)           //输出学生信息
{
  struct student *p;
   printf("\n学生信息表\n",n);
   printf("学号  姓名  数学  英语  c语言  平均成绩\n");
   p=head;
   if(head!=NULL)
do
{
    printf("\nnum:%d\nname:%s\nscore:%f%f%f\n",p->num ,p->name,p->score[0],p->score[1],p->score[2],p->avr);
    p=p->next ;
}while(p!=NULL);
}


struct student *delet(struct student *head)      //删除信息
{
struct student *p1,*p2;
int x;
n=0;
printf("请输入要删除的学生的学号:");
scanf("%d",&x);
if(head=NULL)
{
    printf("\nLEN null\n");
    return head;
}
p1=head;
p2=p1;
while(p1->next !=NULL)
{
   
    if(p1->num ==x&&head!=p1)
    {
        p2->next =p1->next ;
        break;
    }
    if(head->num ==x)
    {
        head=head->next ;
        return head;
    }
    p2=p1->next;
    p1=p1->next;
    return head;
}


struct student *insert(struct student *head)      //插入学生信息
{
struct student *p1,*p2;
    n=0;
    p1=p2=(struct student*)malloc(LEN);
    printf("请输入你想插入的学生的信息:");
    printf("学号  姓名  成绩\n");
    scanf("%d%s%f%f%f",&p1->num,p1->name,&p1->score[0],&p1->score[1],&p1->score[2]);
while(p1->next!=0)
{
     n=n+1;
     if(n==1)
         head=p1;
     else
        p2->next=p1;
        p2=p1;
        p1=(struct student*)malloc(LEN);
        scanf("%d,%f%f%f",&p1->num ,&p1->score,&p1->score[1],&p1->score[2]);
}
p2->next=NULL;
return head;
}



void main()
{ struct student *head;
    int k;      //控制循环的标志
    while(1)
{
printf(" -----------------------------------\n");
printf(" | 学生成绩管理 |\n");
printf(" |__ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|\n");
printf(" | 1. 输入学生信息 |\n");
printf(" | 2. 按平均成绩的高低排序 |\n");
printf(" | 3. 输出学生信息 |\n");
printf(" | 4. 删除学生信息 |\n");
printf(" | 5. 插入学生信息 |\n");
printf(" | 0. 退出程序 |\n");
printf(" ------------------------------------\n");
printf(" 请输入你的选择:\n");
scanf("%d",&k);
switch(k)
{
   case 1:
           head=creat();
           system("CLS");
           break;
  /* case 2:
            head=ord(head);
            system("CLS");
            print(head);
            break;*/
   case 3:
           print(head);
            system("CLS");
           break;
   case 4:
           head=delet(head);
            system("CLS");
           print(head);
           break;
   case 5:
           head=insert(head);
           print(head);
            system("CLS");
           break;
   case 0: exit(0);
   default: printf("选择错误,重新开始!\n");
}
} //while
}
搜索更多相关主题的帖子: 管理系统 include double 课程 三门 
2013-12-14 15:33
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
排序最好是在挂载结点的时候同时进行,不要一次性地建好了链表才去排序。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-12-25 19:13
华子hear
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:57
专家分:104
注 册:2013-6-3
收藏
得分:0 
回复 楼主 邂逅975
您好。  您的意思是建立节点的时候就排序?  这个要怎么实现呢。将操作数据与已经建立的链表节点数据比较插入吗?
   还有您说的挂载 , 是专业术语吗?
我不太懂麻烦解释一下
2014-01-04 12:28
嗯嗯啊
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-1-4
收藏
得分:0 
回复 2楼 蚕头燕尾
+1.
2014-01-04 15:06
快速回复:这是我用链表结构写的学生管理系统,但老是有错误,还有就是对于排序不 ...
数据加载中...
 
   



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

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