设为首页 加入收藏

TOP

我的C/C++之路-010课(结构体使用的简单实例(学生成绩管理))(二)
2014-11-24 00:33:12 来源: 作者: 【 】 浏览:67
Tags:C/C 之路 -010 结构 使用 简单 实例 学生 成绩 管理
t");//是否继续录入
}while(getchar()=='\n');

}
//更新
void update(StudentList *&stuList)
{
StudentList *p = stuList->next;
char no[4];//3位学号,如用户输入4~位学号,这里关于越界的问题,大家自己处理
fflush(stdin);//还是先清空缓冲区
puts("please input student No: ");
gets(no);
//显示当前学号的学生数据
if(p==NULL)
{
puts("there is no record,please insert!!");
puts("press any key to return!!!");
getchar();
return;
}
else
{
while(p!=NULL)
{
if(!strcmp(p->no,no)){//如果查找到,则进行显示
puts("NO\tNAME\tChinese\tMath\tEnglish");
printf("%s\t%s\t%d\t%d\t%d\n",p->no,p->name,p->chinese,p->math,p->english);
break;
}
else{
p = p->next;
}
}
if(p==NULL)//未找到
{
puts("can't find this student's record!!!");
puts("press any key to return!!!");
getchar();
return;
}
}
//只能这样简单的更新了,喜欢的自己改进
puts("please update student data(Name,Chinese,Math,English):");
scanf("%10s",&p->name);
scanf("%d%d%d",&p->chinese,&p->math,&p->english);
fflush(stdin);
puts("update successful,press any key to return!!!");
getchar();
}
//删除数据
void deleteData(StudentList *stuList)
{
/* 前面这个部分和更新差不多,只是指针有变化,因为需要删除,
比如 a->b->c,要删除b,则需要a->c后,才free(b),
操作就是a->next=b->next
*/
StudentList *p = stuList,*q;
char no[4];//3位学号,如用户输入4~位学号,这里关于越界的问题,大家自己处理
fflush(stdin);//还是先清空缓冲区
puts("please input student No: ");
gets(no);
//显示当前学号的学生数据
if(p->next==NULL)
{
puts("there is no record !!!");
puts("press any key to return!!!");
getchar();
return;
}
else
{
while(p->next!=NULL)
{
if(!strcmp(p->next->no,no)){//如果查找到,则进行显示
puts("NO\tNAME\tChinese\tMath\tEnglish");
printf("%s\t%s\t%d\t%d\t%d\n",p->next->no,p->next->name,p->next->chinese,p->next->math,p->next->english);
break;
}
else{
p = p->next;
}
}
if(p->next==NULL)//未找到
{
puts("can't find this student's record!!!");
puts("press any key to return!!!");
getchar();
return;
}
}
puts("Are you sure delete this record press ENTER to confirm or other key to cancel!!!");
if(getchar()=='\n')//删除操作,如果这步不懂,大家可以去GOOGLE OR BAIDU链表的删除操作
{
q = p->next;
p->next = q->next;
free(q);//释放内存
}
puts("delete successful,press any key to return!!!");
getchar();
}


摘自 mzlqh的专栏
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇我的C/C++之路-007课(模仿ATM取款.. 下一篇我的C/C++之路-009课(字符串操作&..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: