c语言学生成绩管理系统链表版.docx
- 文档编号:3033464
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:46
- 大小:24.02KB
c语言学生成绩管理系统链表版.docx
《c语言学生成绩管理系统链表版.docx》由会员分享,可在线阅读,更多相关《c语言学生成绩管理系统链表版.docx(46页珍藏版)》请在冰豆网上搜索。
c语言学生成绩管理系统链表版
#include
#include
#include
#include
#include
#include
#defineYES1
#defineNO0
typedefstruct
{
intnum;
floatmath_score;
floatengl_score;
floatchin_score;
floatphy_score;
floatchem_score;
doubleaver_score;
doublesum_score;
charsex;
}StudentDate;//学生基本信息
typedefstructstudent
{
charname[20];//学生姓名
StudentDateone;//学生其他信息
intrank;//成绩排名
structstudent*next;
}Student,*List;
Student*startCheck(void);//开始检查
Student*createListHead(void);//创建链表的头
voidmenu(void);//主菜单
voidsortList(Student*pHead);//排序链表
voidreadListWithFile(Student*pHead,char*file_name);//从文件中读取数据,并保存在链表中
voidsorttList(Student*pHead);//排序链表
intuserChioce(Student*pHead);//用户选择
intsortMenu(void);//打印选择菜单
voidpasswordCheck(void);//密码检测
voidcorrectWord(void);//修改密码
voidaddStudentInfo(Student*pHead);//向链表的末尾添加数据
intscanMenu(void);//浏览菜单
voidfindStudentInfo(Student*pHead);//查找学生信息
voiddelStudentInfo(Student*pHead);//删除某一个学生信息
voidalterStudentInfo(Student*pHead);//修改学生信息
voidsaveList(Student*pHead);//将链表保存在文件里
voidprintList(Student*pHead);//打印链表
voidstatisStudentInfo(Student*pHead);//查看学生信息
intstatisMenu(void);//查看菜单
voidgotoxy(intx,inty);//改变光标位置函数
voidinputData(Student*pHead,Student*node);//输入信息,并检测是否合法
intmain(void)
{
Student*pHead;
HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);//得到窗口句柄
SMALL_RECTrc={0,0,94-1,30-1};//{Y位置,X位置,宽,高}
SetConsoleWindowInfo(hOut,true,&rc);//重置窗口位置和大小
system("color5B");//设置控制台颜色
pHead=startCheck();//读取信息
while
(1)
{
if(9==userChioce(pHead))//按9时退出系统
{
break;
}
}
return0;
}
voidmenu(void)
{
system("CLS");//清屏
printf("\n\n\n\t\t\t\t┌─────────────────┐\n");
printf("\t\t\t\t│学生成绩统计系统│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│1增加学生记录│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│2删除学生记录│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│3修改学生记录│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│4查找学生信息│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│5统计学生成绩│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│6查看学生成绩│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│7修改登陆密码│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│8关于│\n");
printf("\t\t\t\t├─────────────────┤\n");
printf("\t\t\t\t│9退出系统│\n");
printf("\t\t\t\t└─────────────────┘\n");
}
voidgotoxy(intx,inty)//x为列坐标,y为行坐标
{
COORDpos={x,y};
HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
Student*startCheck(void)
{
Student*pHead;
FILE*fp1;
charpassword[20]="123456";
inti;
if((fp1=fopen("password.dat","rb"))==NULL)//若密码文件不存在,新建密码文件
{
fp1=fopen("password.dat","wb");
fwrite(password,20,1,fp1);
fclose(fp1);
printf("密码初始化完成!
(默认密码为:
123456)");
passwordCheck();
}
else
{
passwordCheck();
}
//读条
system("CLS");
system("title学生成绩统计系统-载入中");//将标题栏命名为“学生成绩统计系统”
printf("\n\n\t\t\t欢迎进入本系统!
正在载入.....");
printf("\n\n\n\n\t\t\t┏━━━━━━━━━━┓\n");
printf("\t\t\t┃┃\n");
printf("\t\t\t┗━━━━━━━━━━┛\n");
gotoxy(26,7);
for(i=0;i<10;i++)
{
printf("█");
Sleep(100);
}
pHead=createListHead();
readListWithFile(pHead,"stud.dat");
returnpHead;
}
Student*createListHead(void)
{
Student*pHead;
pHead=(List)malloc(sizeof(Student));
pHead->next=NULL;
returnpHead;
}
voidreadListWithFile(Student*pHead,char*file_name)
{
FILE*fp;
Student*p1,*p2;
intcount,rank=0;
StudentDatedat;
charstu_name[20];
fp=fopen(file_name,"r");
if(fp==NULL)
{
fp=fopen(file_name,"w");
fclose(fp);
return;
}
fseek(fp,0L,2);
count=ftell(fp);
p1=pHead;
fp=fopen(file_name,"r");
while(!
feof(fp))
{
p2=(List)malloc(sizeof(Student));
fscanf(fp,"%d%s%c%f%f%f%f%f\n",&p2->one.num,p2->name,&p2->one.sex,&p2->one.chin_score,
&p2->one.math_score,&p2->one.engl_score,&p2->one.chem_score,&p2->one.phy_score);
p2->one.sum_score=(double)(p2->one.chin_score+p2->one.chin_score+p2->one.engl_score+
p2->one.chem_score+p2->one.phy_score);
p2->one.aver_score=p2->one.sum_score/5;
p2->next=NULL;
p1->next=p2;
p1=p2;
if(ftell(fp)==count)
{
break;
}
}
//将链表排序,并初始化排名
for(p1=pHead->next;p1!
=NULL;p1=p1->next)
{
for(p2=p1->next;p2!
=NULL;p2=p2->next)
{
if(p2->one.aver_score>p1->one.aver_score)
{
dat=p2->one;
strcpy(stu_name,p2->name);
p2->one=p1->one;
strcpy(p2->name,p1->name);
p1->one=dat;
strcpy(p1->name,stu_name);
}
}
p1->rank=++rank;
}
fclose(fp);
}
voidsortList(Student*pHead)
{
Student*p1,*p2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统 链表版