学生成绩管理系统c语言编辑的毕业设计Word文档下载推荐.doc
- 文档编号:13167057
- 上传时间:2022-10-07
- 格式:DOC
- 页数:6
- 大小:23KB
学生成绩管理系统c语言编辑的毕业设计Word文档下载推荐.doc
《学生成绩管理系统c语言编辑的毕业设计Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统c语言编辑的毕业设计Word文档下载推荐.doc(6页珍藏版)》请在冰豆网上搜索。
voidInputData(STUDENT*ptr);
voidPrintMenu();
intMenu_Select();
voidInit();
voidcreate();
voidprint();
voidDelete();
voidappend();
voidcomputer();
main()
intkey;
while
(1){
key=Menu_Select();
switch(key)
{
case0:
Init();
//初试化链表。
也就是若链表不为空则释放链表中所有数据,将head置为空(NULL)
break;
case1:
create();
//创建链表,输入数据
case2:
Delete();
//删除一个指定学号的记录数据
case3:
print();
//打印链表中所有数据
case4:
computer();
//计算链表中所有人的总分和平均分
case5:
append();
//追加一个数据到链表的尾部
case6:
//释放链表
exit(0);
}
};
}
voidPrintMenu()
inti;
char*menu[]={
"
0.Initlist"
1.Enterlist"
2.Deletearecordfromlist"
3.Printlist"
4.Computethescore"
5.Insertrecordtolist"
6.Quit"
printf("
\n\n"
);
for(i=0;
i<
MENU_NUM;
i++)
printf("
%s\n"
menu[i]);
\nEnteryourchoice(0-6):
"
intMenu_Select()
PrintMenu();
scanf("
%d"
&
key);
returnkey;
voidInit()//初始化单链表。
也就是释放链表中的所有数据
STUDENT*p,*ptr;
//定义两个临时指针变量p,ptr
p=head;
ptr=head;
//将两个临时变量指向头指针head;
while(ptr!
=NULL)
{
ptr=ptr->
next;
//ptr指向下一个结构数据
free(p);
//释放p所指向的结构数据的内存
p=ptr;
//将p指向ptr所指向的数据
}
head=NULL;
//将head指向NULL
voidcreate()//创建单链表
STUDENT*pt,*pth=NULL;
//定义两个指针变量:
pt指向即将申请新的数据内存,pth指向当前数据
while
(1)
pt=(STUDENT*)malloc(sizeof(STUDENT));
//让pt指向新申请的内存空间
InputData(pt);
//输入数据,存放到pt所指向的结构数据。
注意让pt的next指向NULL
if(strcmp(pt->
no,"
@"
)==0)
free(pt);
//释放pt所指向的内存空间
break;
//退出循环
elseif(head==NULL)
pth=pt;
head=pt;
//将头指针head和pth指向pt
else
pth->
next=pt;
//将pth的next指向pt;
pth=pt;
//将pth指向pt;
voidprint()//打印单链表中所有数据
{inti=0;
STUDENT*p;
//第一个指针p
//将p指向head
\n"
******************************STUDENT******************************\n"
|rec|no|name|sc1|sc2|sc3|sum|ave|order|\n"
|---|----------|----------------|----|----|----|------|-----|-----|\n"
//打印表头
while(p!
|%3d|%10s|%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|\n"
++i,p->
no,p->
name,p->
score[0],p->
score[1],p->
score[2],
p->
sum,p->
average,p->
order);
//打印p所指向的结构中的所有数据。
注意打印数据间的分隔线
p=p->
//将p指向p的下一个结构数据
printf("
********************************END********************************\n"
//打印表尾
voidDelete()//删除一个记录
STUDENT*p,*pth;
//定义两个指针p,pth
charno[11];
//定义一个整数no(用来存储输入的学号)
intputdeleteno\n"
scanf("
%s"
no);
//用输入语句输入一个学号存储到no中
p=head;
pth=head;
//将p和pth都指向头指针
if(strcmp(p->
no,no)==0)//也就是若头指针指向的数据需要删除
{
head=head->
//将head指针指向head的下一个数据;
free(p);
//释放p所指向的数据
}
else
p=p->
//将p指向p的下一个数据
while(p!
{
if(strcmp(p->
no,no)==0)//找到了要删除的数据
{
pth->
next=p->
//将pth的next指向p的next
free(p);
//释放p
break;
}
else
pth=pth->
//将pth指向pth的next或将pth指向p
p=p->
//将p指向p的next
}
voidappend()
STUDENT*p,*pth;
//定义两个指针变量p,pth
pth=head;
//将pth指向head
while(pth->
next!
pth=pth->
//ptr指向ptr的next
p=(STUDENT*)malloc(sizeof(STUDENT));
//将p指向新申请的内存空间
InputData(p);
p->
next=NULL;
//数据数据存储到p所指向的内存空间,注意将p的next置为NULL
pth->
next=p;
//将ptr的next指向p
voidInputData(STUDENT*ptr)
{inti;
enterno:
ptr->
no);
if(strcmp(ptr->
)==0)return;
entername:
name);
for(i=0;
3;
shuruchengji\n"
%f"
ptr->
score[i]);
ptr->
sum=0;
average=0;
order=0;
voidcomputer()
for(;
p;
p=p->
next)
p->
sum=p->
score[0]+p->
score[1]+p->
score[2];
average=(p->
score[2])/3;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 编辑 毕业设计