| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 668 人关注过本帖
标题:[求助]课程设计有点错。。
只看楼主 加入收藏
tianlk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-7-13
收藏
 问题点数:0 回复次数:4 
[求助]课程设计有点错。。

题目:学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,本实验是对学生的成绩管理作一个简单的模拟,用菜单选择操作方式完成下列功能:
(1)学生成绩;
(2)查询学生成绩;
(3)插入学生成绩;
(4)删除学生成绩。

我的程序:(能运行,但是功能不全,希望高手指点!)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define ERROR 0
#define OK 1
typedef struct Node
{
int id,score;
char name[21];
struct Node *next;
}students,*Linklist;

Linklist creat_new(){ //建立单链表
Linklist L=NULL;
students *s;
int id,score;
char name[21];
int flag=0;
printf("Please input the ID:\n",id);
scanf("%d",&id);
while (id!=flag)
{
s=new students;
s->id=id;
printf("Please input the NAME:\n",name);
scanf("%s",&name);
strcpy(s->name,name);
printf("Please input the SCORE:\n",score);
scanf("%d",&score);
printf("Please input the ID(Enter 0 to end):\n",id);
scanf("%d",&id);
s->score=score;
s->next=L;
L=s;
}
return L;
}

students *Get_Linklist(Linklist L,int id){ //以序号查找
students *s;
int j=1;
s=L;
while(s->next!=NULL&&j<=id)
{ s=s->next;
j++;
}
if(j==id)
return s;
else
return NULL;
}

int Insert_Linklist(Linklist L,int pos,int id,char name[],int score){
students *p,*s;
p=Get_Linklist(L,pos-1);
if(p==NULL)
{ printf("The position was wrong!\n");
return ERROR;
}
else
{ s=new students;
s->id=id;
strcpy(s->name,name);
s->score=score;
s->next=p->next;
p->next=s;
return OK;
}
}

int Del_Linklist (Linklist L,int pos){ //删除数据
students *p,*s;
p=Get_Linklist(L,pos-1);
if(p==NULL)
{ printf("The position don't exit!\n");
return ERROR;
}
else
if(p->next==NULL)
{ printf("The position don't exit!\n");
return ERROR;
}
else
{ s=p->next;
p->next=s->next;
delete s;
return OK;
}
}

main()
{
int t=1;
int pos,i;
Linklist L;
students *s;
int id,score;
char chocie,name[21];
while(t)
{ printf("\n");
printf("**********************************\n");
printf("* Welcome to the manage system! *\n");
printf("* Creat--------1 *\n");
printf("* Find---------2 *\n");
printf("* Insert-------3 *\n");
printf("* Delete-------4 *\n");
printf("* Quit---------5 *\n");
printf("**********************************\n");
printf("Please enter your chocie:\n");
chocie=getchar();
if(chocie=='1')creat_new();
else
if(chocie=='2')
{ printf("Please input the ID:\n");
scanf("%d",&i);
if(i==s->id)
{ Get_Linklist(L,i);
printf("%d %-5s %-5d\n",s->id,s->name,s->score) ; }
else printf("ERROR!\n");
}
else
if(chocie=='3')
{ printf("Please input the POSITION:\n");
scanf("%d",&pos);
printf("Please input the ID:\n");
scanf("%d",&id);
printf("Please input the NAME:\n");
scanf("%s",name);
printf("Please input the SCORE:\n");
scanf("%d",&score);
Insert_Linklist(L,pos,id,name,score);
}
else
if(chocie=='4')
{ printf("Please input the ID:\n");
scanf("%d",&pos);
if(pos==s->id)
Del_Linklist(L,pos);
else printf("ERROR!\n");
}
else
if(chocie=='5')
{
t=0;
}
}
}

搜索更多相关主题的帖子: 课程 include 学生 Node 信息量 
2006-12-26 22:19
tianlk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-7-13
收藏
得分:0 
哪位高手帮忙指点下啊,急等..

编程菜鸟,努力奋斗中~ 同学博客:www.
2006-12-27 09:49
tianlk
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-7-13
收藏
得分:0 

汗..怎么没人回下的啊?斑竹呢?帮忙啊


编程菜鸟,努力奋斗中~ 同学博客:www.
2006-12-28 14:55
汶潭水清
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-11-11
收藏
得分:0 
printf("Please input the ID:\n",id);
这里怎么回事啊?
if(i==s->id)
这里的s是否应该给它分配个空间呢?
你所犯的错误是没给需要分配内存空间的变量分配空间,或对需要初始化的变量不初始化。
我没仔细看啊,其他问题我没看啊,如果有其他问题出现的话再说,因为没多少人会花很多时间仔细来找错误的。

[此贴子已经被作者于2006-12-30 22:05:52编辑过]


2006-12-30 21:45
没牙的狼
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-4-23
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define ERROR 0
#define OK 1
typedef struct Node
{
int id,score;
char name[21];
struct Node *next;
}Linklist;

Linklist *creat_new()
{ //建立单链表
Linklist *L;
L=(Linklist*)malloc(sizeof(Linklist));
if(L!=NULL)
{
L->next=NULL;
return L;
}
else return NULL;

}
Linklist *creat_student(Linklist *L)//输入学生数据
{
int flag;
Linklist *s;
while (flag)
{
s=(Linklist*)malloc(sizeof(Linklist));
printf("Please input the ID:\n");
scanf("%d",&s->id);
printf("Please input the NAME:\n");
scanf("%s",s->name);
printf("Please input the SCORE:\n");
scanf("%d",&s->score);
s->next=L->next;
L->next=s;
printf("\n是否继续输入?1/0:");
scanf("%d",&flag);


}

return L;
}


Linklist *Get_Linklist(Linklist *L,int id)
{ //以序号查找
Linklist *s;
s=L->next;
while(s!=NULL&&s->id!=id)
s=s->next;

if(s!=NULL)
return s;
else
return NULL;
}

int Insert_Linklist(Linklist *L,int pos,int id)
{
Linklist *p,*s;
p=Get_Linklist(L,pos-1);
if(p==NULL)
{ printf("The position was wrong!\n");
return ERROR;
}
else
{ s=(Linklist*)malloc(sizeof(Linklist));
s->id=id;
printf("Please input the NAME:\n");
scanf("%s",s->name);
printf("Please input the SCORE:\n");
scanf("%d",&s->score);
s->next=p->next;
p->next=s;
return OK;
}
}

int Del_Linklist (Linklist *L,int pos)
{ //删除数据
Linklist *p,*s;
p=Get_Linklist(L,pos-1);
if(p==NULL)
{ printf("The position don't exit!\n");
return ERROR;
}
else
if(p->next==NULL)
{ printf("The position don't exit!\n");
return ERROR;
}
else
{ s=p->next;
p->next=s->next;
free(s);
return OK;
printf("\n删除成功");
}
}

main()
{
int t=1,pos,i,chocie,flag,id;

Linklist *L,*q;
L=creat_new();

while(t)
{ printf("\n");
printf("**********************************\n");
printf("* Welcome to the manage system! *\n");
printf("* 输入学生信息--------1 *\n");
printf("* 查找学生信息---------2 *\n");
printf("* 插入学生信息-------3 *\n");
printf("* 删除学生信息-------4 *\n");
printf("* 结束---------0 *\n");
printf("**********************************\n");
printf("Please enter your chocie:\n");
scanf("%d",&chocie);
if(chocie==1)
{
creat_student(L);

}
else
if(chocie==2)
{
printf("Please input the ID:\n");
scanf("%d",&i);
q=Get_Linklist(L,i);
if(q!=NULL)
printf("%d %-5s %-5d\n",q->id,q->name,q->score) ;
else
printf("ERROR!\n");
}

else
if(chocie==3)
{ printf("Please input the POSITION:\n");
scanf("%d",&pos);
printf("Please input the ID:\n");
scanf("%d",&id);
flag=Insert_Linklist(L,pos,id);
if(flag==1)
printf("\nSUCCESS!");
else printf("FAIL!\n");
}
else
if(chocie==4)
{ printf("Please input the ID:\n");
scanf("%d",&pos);
flag=Del_Linklist(L,pos);
if(flag==1)
printf("\nSUCCESS!");
else printf("FAIL!\n");

}
else
if(chocie==0)
t=0;

}
}

已给楼主改过,VC++6.0下运行成功,建议楼主不要在C风格中写C++的库函数.


2007-01-04 23:57
快速回复:[求助]课程设计有点错。。
数据加载中...
 
   



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

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