📄 kao7.cpp
字号:
}
if(flag==0)
break;
}
}
//****************************按成绩排序输出****************************************
void paixu1() //按分数排序
{
Stud *H,*L,*P;
int i,j,flag,n;
n=tongji(); //调用统计个数函数
for(i=0;i<n-1;i++)
{
flag=0; //跳出控制符
H=head;
L=H->next;
P=L->next;
for(j=1;j<n-i;j++)
{
if(L->chengji.pingjun<P->chengji.pingjun)
{ //如果当前结点同学平均成绩小于下个结点平均成绩则通过指针调换前后顺序
H->next=P;
L->next=P->next;
P->next=L;
flag=flag+1;
}
H=H->next;
L=H->next;
P=L->next;
}
if(flag==0)
break;
}
}
//*********************************按学号查询***************************************
void find(long b)
{
w=head->next;
while(w!=NULL&&b!=w->xuehao) //查找该学生,找到其结点
w=w->next;
if(!w)
printf("!不存在该学生!\n");
else
{
printf("\n学号 姓名 性别 系别 班级 宿舍 电话 家庭地址 \n");
output(); //调用输出学籍基本信息函数
printf("\n考试成绩: 高数 英语 算法 汇编 电路 体育 总分 平均分 \n");
printf(" ");
output1(); //调用输出成绩信息函数
printf("\n");
printf("\n课表信息: 星期一 星期二 星期三 星期四 星期五\n");
output2(); //调用输出课表信息函数
}
}
//********************************按名字查询*******************************************
void find1(char b[])
{
w=head->next;
while(w!=NULL&&strcmp(b,w->name)!=0) //查找该同学的结点
w=w->next;
if(!w)
printf("!不存在该同学!\n");
else
{
printf("\n学号 姓名 性别 系别 班级 宿舍 电话 家庭地址 \n");
output(); //调用输出学籍基本信息函数
printf("\n考试成绩 高数 英语 算法 汇编 电路 体育 总分 平均分 \n");
printf(" ");
output1(); //调用输出成绩信息函数
printf("\n");
printf("\n课表信息: 星期一 星期二 星期三 星期四 星期五\n\n");
output2(); //调用输出课表信息函数
}
}
//********************************统计学生信息个数****************************************
int tongji()
{
Stud *p=head;
int n=0;
while(p->next!=NULL)
{
p=p->next;
n++;
}
return n;
}
//********************************按学号删除信息*******************************************
void xuehaoDel(long x)
{
stud *p,*s;
p=head;
long b=x;
while(p->xuehao!=b&&p->next!=NULL) //查找该同学
{
s=p;
p=p->next;
}
if (p->next==NULL)
printf("!不存在该学生!\n");
else
{
printf("!删除成功!\n");
s->next=p->next; //通过指针指向下一个来删除当前结点
free(p); // 释放已删除的结点
}
}
//*******************************按姓名删除************************************************
void nameDel(char b[])
{
stud *p,*s;
p=head;
while(p!=NULL&&strcmp(b,p->name)!=0) //按姓名查找信息
{
s=p;
p=p->next;
}
if (p->next==NULL)
printf("!不存在该学生!\n");
else
{
printf("!删除成功!\n");
s->next=p->next; //通过指针指向下一个来删除当前结点
free(p); //释放删除完的结点
}
}
//*********************************保存学生信息****************************************
void close() //保存学生信息
{ Stud *p;
p=head->next;
fi1=fopen("student.txt","wb"); //打开二进制文件
while(p!=NULL)
{
fwrite(p,sizeof(Stud),1,fi1); //把运行环境中的链表信息输出到文件保存
p=p->next;
}
fclose(fi1); //关闭文件
}
//******************************载入信息库的学生信息**********************************************
void open()//打开学生库信息
{
Stud *sp,*sq;
head=(Stud *)malloc(sizeof(Stud)); ///申请个结点作为链表表头
head->next=NULL;
sp=head;
if((fi1=fopen("student.txt","rb"))!=NULL) //打开二进制文件
{
while(!feof(fi1))
{
sq=(Stud *)malloc(sizeof(Stud)); //申请一个新结点存放数据
if(!fread(sq,sizeof(Stud),1,fi1)) break; //把文件对应的信息存到刚申请的结点
sp->next=sq;
sp=sp->next;
}
sp->next=NULL; //链表尾指空
fclose(fi1); //关闭文件
}
}
//******************************更新学生信息***************************************************
void gengxin(long b)
{
int choose1=1;
w=head->next;
while(w!=NULL&&b!=w->xuehao) //按学号查找信息
w=w->next;
while(!w)
{
printf("\n!不存在该学生!\n请重新输入学号:\n");
scanf("%ld",&b);
w=head->next;
while(w!=NULL&&b!=w->xuehao) //按学号查找
w=w->next;
}
printf("\n学号 姓名 班级\n\n");
printf("%ld %s %s\n\n",w->xuehao,w->name,w->banji);
caidan5(); //调用修改信息类型子菜单
while (choose1!=0)
{
scanf("%d",&choose1);
switch (choose1)
{
case 1: //进入修改学籍基本信息功能小模块
printf("\n学号 姓名 性别 系别 班级 宿舍 电话 家庭地址 \n");
output(); //调用输出学籍基本信息函数
printf("输入新的信息\n");
printf("\n姓名 性别 系别 班级 宿舍 电话 家庭地址 \n");
scanf("%s%s%s%s%s%s%s",w->name,w->sex,w->xibie,w->banji,w->sushe,w->tel,w->address);
printf("信息更新成功!\n");
choose1=0;
break;
case 2: //进入修改成绩信息功能小模块
printf("\n学号 姓名 班级 高数 英语 算法 汇编 电路 体育 总分 平均分 \n");
printf("%-6ld%-6s%-6s",w->xuehao,w->name,w->banji);
output1(); //调用输出成绩信息函数
printf("\n输入新的成绩");
printf("\n 高数 英语 算法 汇编 电路 体育\n");
scanf("%f%f%f",&w->chengji.math,&w->chengji.english,&w->chengji.suanfa);
scanf("%f%f%f",&w->chengji.huibian,&w->chengji.dianlu,&w->chengji.tiyu);
w->chengji.total=w->chengji.math+w->chengji.english+w->chengji.suanfa+w->chengji.huibian+w->chengji.dianlu+w->chengji.tiyu;//计算总分
w->chengji.pingjun=w->chengji.total/6; // 算平均分
printf("信息更新成功!\n");
choose1=0;
break;
case 3: //进入修改课程信息功能小模块
shuru1();
choose1=0;
break;
default:
printf("\n选择错误,请重新选择!\n");
printf("请选择修改类型>>");
break;
}
}
}
//****************************输入信息函数*************************************************
void shuru()
{
float x,y;
w=R;
printf("姓名 性别 系别 班级 宿舍 电话 家庭地址\n");
scanf("%s%s%s%s%s%s%s",w->name,w->sex,w->xibie,w->banji,w->sushe,w->tel,w->address);
printf("高数 英语 算法 汇编 电路 体育\n");
scanf("%f%f%f",&w->chengji.math,&w->chengji.english,&w->chengji.suanfa);
scanf("%f%f%f",&w->chengji.huibian,&w->chengji.dianlu,&w->chengji.tiyu);
x=w->chengji.math+w->chengji.english+w->chengji.suanfa+w->chengji.huibian;
x=x+w->chengji.dianlu+w->chengji.tiyu; //这两行计算总分
y=x/6; //计算平均分
w->chengji.total=x;w->chengji.pingjun=y;
shuru1(); //调用输入课表函数
}
void shuru1() //输入课表函数
{
printf("\n星期一课表: 1-2节 3-4节 5-6节 7-8节 9-10节\n");
scanf("%s%s%s%s%s",w->kecheng.mon1,w->kecheng.mon2,w->kecheng.mon3,w->kecheng.mon4,w->kecheng.mon5);
printf("\n星期二课表: 1-2节 3-4节 5-6节 7-8节 9-10节\n");
scanf("%s%s%s%s%s",w->kecheng.tues1,w->kecheng.tues2,w->kecheng.tues3,w->kecheng.tues4,w->kecheng.tues5);
printf("\n星期三课表: 1-2节 3-4节 5-6节 7-8节 9-10节\n");
scanf("%s%s%s%s%s",w->kecheng.wed1,w->kecheng.wed2,w->kecheng.wed3,w->kecheng.wed4,w->kecheng.wed5);
printf("\n星期四课表: 1-2节 3-4节 5-6节 7-8节 9-10节\n");
scanf("%s%s%s%s%s",w->kecheng.thur1,w->kecheng.thur2,w->kecheng.thur3,w->kecheng.thur4,w->kecheng.thur5);
printf("\n星期五课表: 1-2节 3-4节 5-6节 7-8节 9-10节\n");
scanf("%s%s%s%s%s",w->kecheng.fri1,w->kecheng.fri2,w->kecheng.fri3,w->kecheng.fri4,w->kecheng.fri5);
}
//*********************************输出学籍基本信息********************************************
void output() //输出学籍基本信息
{
printf("%-10ld",w->xuehao);
printf("%-10s",w->name);
printf("%-10s",w->sex);
printf("%-10s",w->xibie);
printf("%-10s",w->banji);
printf("%-10s",w->sushe);
printf("%-10s",w->tel);
printf("%-10s",w->address);
}
//********************************输出成绩信息***********************************************
void output1()//输出成绩信息
{
printf("%-8.2f",w->chengji.math);
printf("%-8.2f",w->chengji.english);
printf("%-8.2f",w->chengji.suanfa);
printf("%-8.2f",w->chengji.huibian);
printf("%-8.2f",w->chengji.dianlu);
printf("%-8.2f",w->chengji.tiyu);
printf("%-8.2f",w->chengji.total);
printf("%-8.2f",w->chengji.pingjun);
}
//********************************输出课表信息**********************************************
void output2() //输出课表信息
{
printf("1-2 节: %-13s%-13s%-13s%-13s%-13s\n",w->kecheng.mon1,w->kecheng.tues1,w->kecheng.wed1,w->kecheng.thur1,w->kecheng.fri1);
printf("3-4 节: %-13s%-13s%-13s%-13s%-13s\n",w->kecheng.mon2,w->kecheng.tues2,w->kecheng.wed2,w->kecheng.thur2,w->kecheng.fri2);
printf("5-6 节: %-13s%-13s%-13s%-13s%-13s\n",w->kecheng.mon3,w->kecheng.tues3,w->kecheng.wed3,w->kecheng.thur3,w->kecheng.fri3);
printf("7-8 节: %-13s%-13s%-13s%-13s%-13s\n",w->kecheng.mon4,w->kecheng.tues4,w->kecheng.wed4,w->kecheng.thur4,w->kecheng.fri4);
printf("9-10节: %-13s%-13s%-13s%-13s%-13s\n",w->kecheng.mon5,w->kecheng.tues5,w->kecheng.wed5,w->kecheng.thur5,w->kecheng.fri5);
printf("\n");
}
///*****************************以下是操作菜单函数定义************************************////
void caidan() //总操作菜单函数
{
printf(" * * * * * * * * * * * * * * * * * * * * *\n");
printf(" * ~欢迎进入广西工学院 *\n");
printf(" * 学籍信息管理系统~ *\n");
printf(" * *\n");
printf(" * ★ 操作目录 ★ *\n");
printf(" * *\n");
printf(" * ☆ 1>> 录入学生信息 *\n");
printf(" * ☆ 2>> 学号升序输出 *\n");
printf(" * ☆ 3>> 成绩排名输出 *\n");
printf(" * ☆ 4>> 查询学生信息 *\n");
printf(" * ☆ 5>> 统计学生个数 *\n");
printf(" * ☆ 6>> 更新学生信息 *\n");
printf(" * ☆ 7>> 删除学生信息 *\n");
printf(" * ☆ 0>> 安全保存退出 *\n");
printf(" * * * * * * * * * * * * * * * * * * * * *\n");
}
//*****************************************************************************
void caidan1()
{
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ★查询学生信息子菜单★ \n");
printf(" \n");
printf(" 1>> 按学号查询 \n");
printf(" \n");
printf(" 2>> 按姓名查询 \n");
printf(" \n");
printf(" 0>> 返回总菜单 \n");
}
//*****************************************************************************
void caidan2()
{
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ★删除学生信息子菜单★ \n");
printf(" \n");
printf(" 1>> 按学号删除 \n");
printf(" \n");
printf(" 2>> 按姓名删除 \n");
printf(" \n");
printf(" 3>> !全部删除! \n");
printf(" \n");
printf(" 0>> 返回总菜单 \n");
}
//****************************************************************************
void caidan3()
{
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ★录入新学生信息★ \n");
}
//***************************************************************************
void caidan4()
{
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ★按学号升序排列输出学生信息★ \n");
printf(" \n");
printf(" 1>> 输出学籍基本信息 \n");
printf(" \n");
printf(" 2>> 输出考试成绩 \n");
printf(" \n");
printf(" 3>> 输出学生课表 \n");
printf(" \n");
printf(" 0>> 返回总菜单 \n");
}
//***************************************************************************
void caidan5()
{
printf("请选择修改类型: \n");
printf(" \n");
printf(" 1>> 修改学生基本信息 \n");
printf(" \n");
printf(" 2>> 修改学生成绩信息 \n");
printf(" \n");
printf(" 3>> 修改学生课程信息 \n");
}
//****************************************************************************
void caidan6()
{
printf(" *************************************************\n");
printf(" *************************************************\n");
printf(" ★更新学生信息子菜单★ \n");
}
//*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -