学生成绩管理系统c语言编辑的毕业设计.doc
- 文档编号:236712
- 上传时间:2022-10-07
- 格式:DOC
- 页数:6
- 大小:23KB
学生成绩管理系统c语言编辑的毕业设计.doc
《学生成绩管理系统c语言编辑的毕业设计.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统c语言编辑的毕业设计.doc(6页珍藏版)》请在冰豆网上搜索。
#include
#include
#include
#defineMENU_NUM7
#defineN3
typedefstructs1
{
charno[11];/*学号由10个字符组成*/
charname[15];/*学生姓名*/
floatscore[N];/*各门课成绩*/
floatsum;/*总分*/
floataverage;/*平均分*/
intorder;/*名次*/
structs1*next;/*指向后继结点的指针*/
}STUDENT;/*定义结构体类型*/
STUDENT*head=NULL;
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();
//创建链表,输入数据
break;
case2:
Delete();
//删除一个指定学号的记录数据
break;
case3:
print();
//打印链表中所有数据
break;
case4:
computer();
//计算链表中所有人的总分和平均分
break;
case5:
append();
//追加一个数据到链表的尾部
break;
case6:
Init();
//释放链表
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 printf("%s\n",menu[i]); printf("\nEnteryourchoice(0-6): "); } intMenu_Select() { intkey; 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;//将p指向head printf("\n"); printf("******************************STUDENT******************************\n"); printf("|rec|no|name|sc1|sc2|sc3|sum|ave|order|\n"); printf("|---|----------|----------------|----|----|----|------|-----|-----|\n"); //打印表头 while(p! =NULL) { printf("|%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->next;//将p指向p的下一个结构数据 } printf("********************************END********************************\n");//打印表尾 } voidDelete()//删除一个记录 { STUDENT*p,*pth;//定义两个指针p,pth charno[11];//定义一个整数no(用来存储输入的学号) printf("intputdeleteno\n"); scanf("%s",no);//用输入语句输入一个学号存储到no中 p=head;pth=head;//将p和pth都指向头指针 if(strcmp(p->no,no)==0)//也就是若头指针指向的数据需要删除 { head=head->next;//将head指针指向head的下一个数据; free(p);//释放p所指向的数据 } else { p=p->next;//将p指向p的下一个数据 while(p! =NULL) { if(strcmp(p->no,no)==0)//找到了要删除的数据 { pth->next=p->next;//将pth的next指向p的next free(p);//释放p break;//退出循环 } else { pth=pth->next;//将pth指向pth的next或将pth指向p p=p->next;//将p指向p的next } } } } voidappend() { STUDENT*p,*pth;//定义两个指针变量p,pth pth=head;//将pth指向head while(pth->next! =NULL) { pth=pth->next;//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; printf("enterno: "); scanf("%s",ptr->no); if(strcmp(ptr->no,"@")==0)return; printf("entername: "); scanf("%s",ptr->name); for(i=0;i<3;i++) { printf("shuruchengji\n"); scanf("%f",&ptr->score[i]); } ptr->sum=0; ptr->average=0; ptr->order=0; ptr->next=NULL; } voidcomputer() { STUDENT*p; p=head; for(;p;p=p->next) { p->sum=p->score[0]+p->score[1]+p->score[2]; p->average=(p->score[0]+p->score[1]+p->score[2])/3; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言 编辑 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)