设为首页 加入收藏

TOP

我的C/C++之路-010课(结构体使用的简单实例(学生成绩管理))(一)
2014-11-24 00:33:12 来源: 作者: 【 】 浏览:68
Tags:C/C 之路 -010 结构 使用 简单 实例 学生 成绩 管理

最近比较忙,几天没写了。今天做的是结构体的应用(学生的成绩管理),相信很多朋友都做过,我这里献丑下,C比较难控制,所以在里面有很多不是很好的功能,大家可以自己完善下。

[cpp]
#include
#include
#include
/**
结构体使用的简单实例:
1.创建学生成绩结构体(包含学号,姓名,语文,数学,英语成绩)
使用链表指向下一个学生(由于输入学生个数未知,使用数组方式不怎么好)

2.提供学生成绩插入,查询,更改,删除
*/
typedef struct Student
{
char no[4];//3位数的学号,输入多的会出错
char name[10];
int chinese;
int math;
int english;
struct Student *next;//指向下一个学生

}StudentList;
void init(StudentList *&);
void select(StudentList *); //查询成绩
void insert(StudentList *&); //录入成绩
void update(StudentList *&); //更新成绩
void deleteData(StudentList *);//删除数据

void studentScoreManege()
{
StudentList *stuList = NULL;
int oprate;
init(stuList);//初始化
do{
system("cls");
fflush(stdin);
puts("************* Student Data Oprate *******************");
puts("* 1. select student score *");
puts("* 2. insert student score *");
puts("* 3. update student score *");
puts("* 4. delete student data *");//删除全部数据,虽然实际不能这样做,这里为了简便设计
puts("* 0. exit *");
puts("*****************************************************");
printf("please select a number: ");

scanf("%d",&oprate);
switch(oprate)//根据不同选择执行不同操作
{
case 1:
select(stuList);
break;
case 2:
insert(stuList);
break;
case 3:
update(stuList);
break;
case 4:
deleteData(stuList);
break;
case 0:
default:
break;
}
}while(oprate!=0);
}
//初始化表头
void init(StudentList *&stuList)
{
stuList = (StudentList *)malloc(sizeof(StudentList));
stuList->next = NULL;
}

//查询成绩
void select(StudentList *stuList)
{
StudentList *p = stuList->next;
if(p==NULL)
{
puts("there is no data,please insert!!");
puts("press any key to return!!!");
getchar();
}
puts("************** student score insert *********************");
puts("No\tName\tChinese\tMath\tEnglish");
while(p!=NULL)
{
printf("%s\t%s\t%d\t%d\t%d\n",p->no,p->name,p->chinese,p->math,p->english);
p = p->next;
}
fflush(stdin);
puts("press any key to return!!!");
getchar();
}
//录入成绩 www.2cto.com
void insert(StudentList *&stuList)
{
StudentList *p ,*s;
p = stuList;
while(p->next != NULL)
{
p = p->next;
}
do{
s = (StudentList *)malloc(sizeof(StudentList));

puts("please insert student data(NO,Name,Chinese,Math,English):");
scanf("%3s%10s",&s->no,&s->name);
scanf("%d%d%d",&s->chinese,&s->math,&s->english);
//判断数据合法性,关于学号的重复性大家自己写校验
if(s->chinese<0||s->chinese>100||s->math<0||s->math>100||s->english<0||s->english>100)
{
puts("input data error !!!");
return;
}
s->next = NULL;
p->next = s;
p = p->next;//为下一次循环录入准备
fflush(stdin);//清除缓冲区的 '\n' 不然下面的getchar()不起作用
puts("Continue ENTER to yes or input no to exi

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

评论

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