花哥哥的瞎扯:
大一的课设学生管理系统,因为学也学不精,望各位大神轻点骂,多指点一下吖。注释写得相对的仔细,认真看玩就没有不会的!哈哈哈加油!
实现功能:
建立学生结点之后再弄一个链表,用尾插法的方式添加学生元素,主要是由主函数,自定义函数,还有菜单框架函数,及选择功能函数之间的调换,实现主要功能有:增加、删除、修改、统计排序和查询以及信息的存储功能。
理解流程图:
运行环境准备:
Dev-C++
代码区:
//@你的花哥哥-花森制作
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<bits/stdc++.h>
#include<conio.h>
using namespace std;
struct student//创建学生信息结构体。
{
char name[20];
char nation[10];
char sex[2];
long int idnum;
float math;
float english;
float sum;
};
struct Node//链表的结点结构。
{
struct student data;
struct Node*next;
};
//链表的创建:
Node*creatNode();//1.创建结点
//链表的删除:
struct Node*deleteNodebyname(Node*headNode);//1.按姓名删除结点
struct Node*deleteNodebynum(Node*headNode, char num[]);//2.按学号删除结点
//链表的遍历统计:
struct Node*aver(Node*headNode);//1.统计平均数
void mathnopass(Node*headNode);//2.数学未及格人数
void englishnopass(Node*headNode); //3.英语未及格人数输出与统计
void selectsex(Node*headNode);//4. 按性别统计学生人数
void selectnation(Node*headNode);//5.按民族统计学生人数
//链表的输出:
void printlist(Node*headNode); //1.遍历打印学生信息
//文件的操作:
void savefile(Node*headNode); //1.文件的保存
void readfile(Node*headNode);//2.文件的读取
void asavefile(Node*headNode);//3.文件的追加
//菜单框架:
void printstar();//1.打印横条 * 号
void print();//2.打印边边 * 号
void menu();//3.主菜单框架
void menuofdelete();//4.删除菜单框架
void menuofnumalter();//5.按学号修改
void menuofnopass();//6.不及格人数菜单
void menusort(); //排序菜单框架
//界面选择功能:
void keydown();
void keydowndelete();//2.删除菜单
void keydownbynumalter();//3.修改菜单
void keydownsort();//4.单科成绩排序菜单
void keydownnopass();//5.不及格人数菜单
//修改类函数:
Node*altername(Node*headNode);//1.修改姓名
Node*alteridnum(Node*headNode);//2.修改学号
Node*altermath(Node*headNode);//3.修改数学成绩
Node*alterenglish(Node*headNode);//4.修改英语成绩
//排序类函数:
void sortmath(Node*headNode); //1.数学成绩排序
void sortaver(Node*headNode);//2.平均成绩排序
//主程序
int main()
{
menu();
keydown();
return 0;
}
//链表的创建 :
struct Node*creatNode()//创建学生结点,并填入数据data,返回这结点的指针。
{
/*struct Node *headNode;
headNode=(struct Node*)malloc(sizeof(struct Node));//sizeof函数计算该结构体的所占的内存大小,malloc创建一个结构体大小的内存地址。
headNode->next=NULL; */
Node*pnew;
Node*ptail;
Node*p=NULL;
int i=0;
cout<<endl;
cout<<"开始学生信息的录入..."<<endl;
cout<<endl;
cout<<"小提示:输入学号为0时停止输入!"<<endl;
cout<<endl;
while(1)
{
cout<<"请输入第"<<i+1<<"个学生信息"<<endl;
pnew=(struct Node*)malloc(sizeof(struct Node));
cout<<"学号:";cin>>pnew->data.idnum;
if(pnew->data.idnum==0) break;
fflush(stdin);
cout<<"姓名: "; cin>>pnew->data.name;
cout<<"民族: "; cin>>pnew->data.nation;
cout<<"性别: "; cin>>pnew->data.sex;
cout<<"数学成绩: ";cin>>pnew->data.math;
cout<<"英语成绩:";cin>>pnew->data.english;
cout<<endl;
pnew->next=NULL;
if(i==0)//建立第一个结点的时候
{
p=pnew;
ptail=pnew;
}
else
{
ptail->next=pnew;
ptail=ptail->next;
}
i++;
}
return p;//头指针是一个元素
}
//链表结点的删除 :
struct Node*deleteNodebyname(Node*phead)//按姓名遍历查找并删除。
{
if(phead==NULL)//头指针的判断是否为空
{
cout<<"无学生数据"<<endl;
return phead;
}
else
{
cout<<"请输入要删除的学生姓名:"<<endl;
char name[20];
cin>>name;
struct Node*p=phead->next;
struct Node*q=phead;
if(q!=NULL&&p==NULL)//链表只有一个元素情况
{
if(strcmp(phead->data.name,name)==0)
{
phead=phead->next;
free(q);
cout<<"删除成功"<<endl;
}
}
else
{
while(p!=NULL)//不是一个元素就进循环
{
if(strcmp(phead->data.name,name)==0)//如果第一个数直接是匹配的元素。
{
phead=phead->next;
free(q);
cout<<"删除成功"<<endl;
break;
}
if(strcmp(p->data.name,name)==0)//p指针来找要匹配的元素,然后q指向p的前一个。
{
q->next=p->next;
free(p);
cout<<"删除完毕"<<endl;
break;
}
q=p;
p=p->next;
}
if(p==NULL)//P指针走到最后
{
cout<<"无该学生数据"<<endl;
}
}
return phead;
}
}
struct Node*deleteNodebynum(Node*phead)//按学号进行删除。
{
if(phead==NULL)
{
cout<<"无学生数据"<<endl;
return phead;
}
else
{
cout<<"请输入要删除的学生学号:"<<endl;
long int num;
cin>>num;
struct Node*p=phead->next;
struct Node*q=phead;
if(q!=NULL&&p==NULL)
{
if(phead->data.idnum==num)
{
phead=phead->next;
free(q);
cout<<"删除成功"<<endl;
}
}
else
{
while(p!=NULL)//不是一个元素就进循环
{
if(phead->data.idnum==num)//如果第一个数直接是匹配的元素。
{
phead=phead->next;
free(q);
cout<<"删除成功"<<endl;
break;
}
if(p->data.idnum==num)//p指针来找要匹配的元素,然后q指向p的前一个。
{
q->next=p->next;
free(p);
cout<<"删除完毕"<<endl;
break;
}
q=p;
p=p->next;
}
if(p==NULL)
{
cout<<"无该学生数据"<<endl;
}
}
return phead;
}
}
//链表结点的遍历输出:
void printlist(Node*headNode) //遍历打印输出学生的个人信息 。
{
cout<<"正在为您导出学生信息..."<<endl;
struct Node*pmove=headNode;
if(pmove==NULL)
{
cout<<"无学生信息!"<<endl;
}
else
{
cout.width(4);
cout<<"编号 "<<"姓名 "<<" 数学 "<<"英语 "<<endl;
while(pmove!=NULL)
{
cout<<pmove->data.idnum<<" "<<pmove->data.name<<" "<<pmove->data.math<<" "<<pmove->data.english<<endl;
pmove=pmove->next;
}
}
}
//遍历统计 :
struct Node*aver(Node*headNode)//计算每名学生的平均数
{
float ave;
Node*p=headNode;
Node*phead=p;
if(p==NULL)
{
cout<<"无学生信息 无法求平均数"<<endl;
}
else
{
cout<<"开始统计成绩信息..."<<endl;
cout<<"编号 "<<"姓名 "<<"数学 "<<"英语 "<<"平均分"<<endl;
while(p!=NULL)
{
ave=(p->data.math+p->data.english)/2;
p->data.sum=ave;
cout<<p->data.idnum<<" "<<p->data.name<<" "<<p->data.math<<" "<<p->data.english<<" "<<ave<<endl;
p=p->next;
}
}
return phead;
}
void mathnnopass(Node*headNode)
{
int i=0;
Node*p=headNode;
if(p==NULL)
{
cout<<"无学生信息!"<<endl;
}
else
{
cout<<endl;
cout<<"开始统计数学成绩不及格信息..." <<endl;
cout<<"姓名 "<<"编号 "<<"数学 "<<endl;
cout<<endl;
while(p!=NULL)
{
if(p->data.math<60)
{
i++;
cout<<p->data.name<<" "<<p->data.idnum<<" "<<p->data.math<<endl;
}
p=p->next;
}
}
cout<<endl;
cout<<"数学总共有"<<i<<"个学生不及格!" <<endl;
cout<<endl;
}
void englishnopass(Node*headNode)
{
int i=0;
Node*p=headNode;
if(p==NULL)
{
cout<<"无学生信息!"<<endl;
}
else
{
cout<<endl;
cout<<"开始统计数学成绩不及格信息..." <<endl;
cout<<"姓名 "<<"编号 "<<"英语 "<<endl;
cout<<endl;
while(p!=NULL)
{
if(p->data.english<60)
{
i++;
cout<<p->data.name<<" "<<p->data.idnum<<" "<<p->data.english<<endl;
}
p=p->next;
}
}
cout<<endl;
cout<<"英语总共有"<<i<<"个学生不及格!" <<endl;
cout<<endl;
}
void selectsex(Node*headNode)
{
cout<<endl;
cout<<"开始按性别统计学生人数..."<<endl;
cout<<"请输入性别(男 or 女):"<<endl;
char sex[2];
cin>>sex;
int i=0;
Node*p=headNode;
if(p==NULL)
{
cout<<"无学生信息!"<<endl;
}
else
{
while(p!=NULL)
{
if(strcmp(p->data.sex,sex)==0)
{
i++;
}
p=p->next;
}
}
cout<<endl;
cout<<"总共有"<<i<<"个" <<sex<<"学生!"<<endl;
cout<<endl;
}
void selectnation(Node*headNode)
{
cout<<endl;
cout<<"开始按民族统计学生人数..."<<endl;
cout<<"请输入XXX族:"<<endl;
char nation[10];
cin>>nation;
int i=0;
Node*p=headNode;
if(p==NULL)
{
cout<<"无学生信息!"<<endl;
}
else
{
while(p!=NULL)
{
if(strcmp(p->data.nation,nation)==0)
{
i++;
}
p=p->next;
}
}
cout<<endl;
cout<<"总共有"<<i<<"个" <<nation<<"学生!"<<endl;
cout<<endl;
}
//修改类
struct Node*altername(Node*headNode)
{
cout<<"请输入要修改的学生学号:"<<endl;
long int num;
cin>>num;
struct Node*p=headNode;
Node*phead=headNode;
if(p==NULL) cout<<"表格为空"<<endl;
while(p!=NULL)
{
if(p->data.idnum==num)
{
char n[20];
cout<<"请输入新的姓名:"<<endl;
cin>>n;
strcpy(p->data.name,n);
cout<<"修改成功!"<<endl;
break;
}
p=p->next;
}
if(p==NULL)
{
cout<<"无该学生信息";
}
return phead;
}
struct Node*alteridnum(Node*headNode)//修改学号
{
cout<<"请输入要修改的学生学号:"<<endl;
long int num;
cin>>num;
struct Node*p=headNode;
Node*phead=headNode;
if(p==NULL) cout<<"表格为空"<<endl ;
while(p!=NULL)
{
if(p->data.idnum==num)
{
long int n;
cout<<"请输入新的学号:"<<endl;
cin>>n;
p->data.idnum=n;
cout<<"修改成功!"<<endl;
break;
}
p=p->next;
}
if(p==NULL)
{
cout<<"无该学生信息";
}
return phead;
}
struct Node*altermath(Node*headNode)//修改数学成绩
{
cout<<"请输入要修改的学生学号:"<<endl;
long int num;
cin>>num;
struct Node*p=headNode;
Node*phead=headNode;
if(p==NULL) cout<<"表格为空" <<endl;
while(p!=NULL)
{
if(p->data.idnum==num)
{
float n;
cout<<"请输入新的数学成绩:"<<endl;
cin>>n;
p->data.math=n;
cout<<"修改成功!"<<endl;
break;
}
p=p->next;
}
if(p==NULL)
{
cout<<"无该学生信息";
}
return phead;
}
struct Node*alterenglish(Node*headNode)//修改英语成绩
{
cout<<"请输入要修改的学生学号:"<<endl;
long int num;
cin>>num;
struct Node*p=headNode;
Node*phead=headNode;
if(p==NULL) cout<<"表格为空" <<endl;
while(p!=NULL)
{
if(p->data.idnum==num)
{
float n;
cout<<"请输入新的英语成绩成绩:"<<endl;
cin>>n;
p->data.english=n;
cout<<"修改成功!"<<endl;
break;
}
p=p->next;
}
if(p==NULL)
{
cout<<"无该学生信息"<<endl;
}
return phead;
}
//排序类型
void sortmath(Node*headNode)
{
cout<<"开始进行数学成绩的排序..." <<endl;
int i,j;
int len=0;
struct Node*p;
struct Node* r;
struct Node*t=headNode;
if(t==NULL)
{
cout<<"该表格为空!"<<endl;
}
else//表格不为空时就进入
{
while(t!=NULL)//计算链表的长度
{
len=len+1;
t=t->next;
}
for(i=0,p=headNode;i<len-1;++i,p=p->next)//int i 不能放在这里面,因为括号里的类型不全是int类型,还有指针的类型。
{
for( j=i+1,r=p->next;j<len;++j,r=r->next)
{
if(p->data.math<r->data.math)
{
float temp;
temp=p->data.math;
p->data.math=r->data.math;
r->data.math=temp;
char t[20];
strcpy(t,p->data.name);
strcpy(p->data.name,r->data.name);
strcpy(r->data.name,t);
}
}
}
int count=1;
t=headNode;
Node*pnew=(struct Node*)malloc(sizeof(struct Node));
pnew->next=t;
cout<<"名次"<<" "<<"姓名"<<" "<<"数学成绩"<<endl;
while(t!=NULL)//遍历输出部分
{
cout<<count<<" "<<t->data.name<<" "<<t->data.math<<endl;
pnew=pnew->next;
t=t->next;
if(t!=NULL)
{
if(pnew->data.math!=t->data.math) count++;
}
}
}
}
void sortaver(Node*headNode)
{
cout<<"开始进行平均成绩的排序..." <<endl;
int i,j;
int len=0;
float ave;
struct Node*p;
struct Node* r;
struct Node*t=headNode;
if(t==NULL)
{
cout<<"该表格为空!"<<endl;
}
else//表格不为空时就进入
{
while(p!=NULL)
{
ave=(p->data.math+p->data.english)/2;
p->data.sum=ave;
p=p->next;
}
while(t!=NULL)//计算链表的长度
{
len=len+1;
t=t->next;
}
for(i=0,p=headNode;i<len-1;++i,p=p->next)//int i 不能放在这里面,因为括号里的类型不全是int类型,还有指针的类型。
{
for( j=i+1,r=p->next;j<len;++j,r=r->next)
{
if(p->data.sum<r->data.sum)
{
float temp;
temp=p->data.sum;
p->data.sum=r->data.sum;
r->data.sum=temp;
char t[20];
strcpy(t,p->data.name);
strcpy(p->data.name,r->data.name);
strcpy(r->data.name,t);
}
}
}
int count=1;
t=headNode;
Node*pnew=(struct Node*)malloc(sizeof(struct Node));
pnew->next=t;
cout<<"名次"<<" "<<"姓名"<<" "<<"平均成绩"<<endl;
while(t!=NULL)//遍历输出部分
{
cout<<count<<" "<<t->data.name<<" "<<t->data.sum<<endl;
pnew=pnew->next;
t=t->next;
if(t!=NULL)
{
if(pnew->data.sum!=t->data.sum) count++;
}
}
}
}
//文件的操作:
void savefile(Node*headNode)//文件的建立保存,通过遍历把每一条数据都保存。
{
struct Node*p=headNode;
FILE*fp=fopen("student.txt","w");//*fp为一个文件的指针,fopen(文件名,创建的文件权限类型) 文件权限类型:"r","W","a","w+","a+" 。
while(p!=NULL)
{
fwrite(p,sizeof(Node),1,fp);//遍历保存记录的语句。
p=p->next;
}
fclose(fp) ;
}
void asavefile(Node*headNode)//文件的建立保存,通过遍历把每一条数据都保存。
{
struct Node*p=headNode;
FILE*fp=fopen("student.txt","a");//*fp为一个文件的指针,fopen(文件名,创建的文件权限类型) 文件权限类型:"r","W","a","w+","a+" 。
while(p!=NULL)
{
fwrite(p,sizeof(Node),1,fp);//遍历保存记录的语句。
p=p->next;
}
fclose(fp) ;
}
Node* readfile(char *filename)//文件的读取。
{
Node *phead=NULL;
FILE *fp;
if((fp=fopen(filename,"r"))==0) return phead;
Node *ptail, *pnew;
int i=0;
student s;
while(fread(&s,sizeof(Node),1,fp)!=0)
{
pnew=(Node*)malloc(sizeof(Node));
pnew->data=s;
pnew->next=NULL;
if(i==0)
{
phead=pnew;
ptail=pnew;
}
else
{
ptail->next=pnew;
ptail=pnew;
}
i++;
}
fclose(fp);
return phead;//第一个元素的指针
}
//菜单选择器
void keydown()
{
char choice;
fflush(stdin);
choice=getch();
switch(choice)
{
case '0'://退出管理系统。
break;
case '1'://学生个人信息的录入。
{
Node*headNode=creatNode();
asavefile(headNode);
system("pause");
system("cls");
menu();
keydown();
break;
}
case '2'://遍历输出所有的学生记录。
{
char filename[100];
strcpy(filename,"student.txt");
Node*headNode=readfile(filename);
printlist(headNode);
system("pause");
system("cls");
menu();
keydown();
break;
}
case '3'://平均分
{
char filename[100];
strcpy(filename,"student.txt");
Node*headNode=readfile(filename);
headNode=aver(headNode);
savefile(headNode);
system("pause");
system("cls");
menu();
keydown();
break;
}
case '4'://删除修改信息
{
system("cls");
menuofdelete();
keydowndelete();
break;
}
case '5':
{
system("cls");
menuofnopass();
keydownnopass();
break;
}
case '6':
{
system("cls");
menusort();
keydownsort();
break;
}
case '7'://按性别统计人数
{
char filename[100];
strcpy(filename,"student.txt");
Node*headNode=readfile(filename);
selectsex(headNode);
savefile(headNode);
system("pause");
system("cls");
menu();
keydown();
break;
}
case '8':
{
char filename[100];
strcpy(filename,"student.txt");
Node*headNode=readfile(filename);
selectnation(headNode);
savefile(headNode);
system("pause");
system("cls");
menu();
keydown();
break;
}
default:
{
cout<<"输入错误 请重新输入!"<<endl;
system("pause");
system("cls");
menu();
keydown();
break;
}
}
}
void keydowndelete()//删除修改方式菜单。
{
char choice;
fflush(stdin);
choice=getch();
switch(choice)
{
case '0':
{
system("cls");
menu();
keydown();
break;
}
case '1'://1,按照姓名查找删除 。
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*phead=readfile(filename);
phead=deleteNodebyname(phead);
savefile(phead);
system("pause");
system("cls");
menuofdelete();
keydowndelete();
break;
}
case '2'://2,按照学号查找删除。
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*phead=readfile(filename);
phead=deleteNodebynum(phead);
savefile(phead);
system("pause");
system("cls");
menuofdelete();
keydowndelete();
break;
}
case '3'://按学号修改信息
{
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
default:
{
cout<<"输入错误"<<endl;
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
}
}
void keydownbynumalter()//按照学号修改选择器
{
char choice;
fflush(stdin);
choice=getch();
switch(choice)
{
case '0'://返回到主菜单
{
system("cls");
menu();
keydown();
break;
}
case '1'://修改学号
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
headNode=alteridnum(headNode);
savefile(headNode);
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
case '2'://修改姓名
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
headNode=altername(headNode);
savefile(headNode);
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
case '3'://修改数学成绩
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
headNode=altermath(headNode);
savefile(headNode);
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
case '4'://修改英语成绩
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
headNode=alterenglish(headNode);
savefile(headNode);
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
break;
}
default:
{
cout<<"您输入错误请重新输入!"<<endl;
system("pause");
system("cls");
menuofnumalter();
keydownbynumalter();
}
}
}
void keydownnopass()
{
char choice;
fflush(stdin);
choice=getch();
switch(choice)
{
case '0':
{
system("cls");
menu();
keydown();
break;
}
case '1'://数学不及格人数
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
mathnnopass(headNode);
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
case '2'://英语不及格人数
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
englishnopass(headNode);
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
default:
{
cout<<"您输入错误请重新输入!"<<endl;
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
}
}
void keydownsort()
{
char choice;
fflush(stdin);
choice=getch();
switch(choice)
{
case '0':
{
system("cls");
menu();
keydown();
break;
}
case '1'://数学排序
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
sortmath(headNode);
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
case '2'://平均成绩排序
{
char filename[100];
strcpy(filename,"student.txt");
struct Node*headNode=readfile(filename);
sortaver(headNode);
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
default:
{
cout<<"您输入错误请重新输入!"<<endl;
system("pause");
system("cls");
menuofnopass();
keydownnopass();
break;
}
}
}
//菜单框架:
void menu()//功能表的菜单框架。
{
void printstar();
void print();
printstar();
print();
cout<<"* 学生成绩管理系统 *"<<endl;
print();
printstar();
print();
cout<<"* 主菜单 *"<<endl;
print();
cout<<"* 1.学生信息的录入 *"<<endl;
cout<<"* 2.学生信息的遍历 *"<<endl;
cout<<"* 3.学生成绩的平均 *"<<endl;
cout<<"* 4.信息删除和修改 *"<<endl;
cout<<"* 5.不合格成绩统计 *"<<endl;
cout<<"* 6.成绩名次的排序 *"<<endl;
cout<<"* 7.性别统计学生数 *"<<endl;
cout<<"* 8.民族统计学生数 *"<<endl;
cout<<"* 0.管理系统的退出 *"<<endl;
print();
print();
print();
cout<<"* *"<<endl;
printstar();
cout<<"请选择以上功能(0-6):"<<endl;
}
void menuofdelete()
{
void printstar();
void print();
printstar();
print();
cout<<"* 删除修改菜单 *"<<endl;
print();
printstar();
cout<<"* *"<<endl;
print();
cout<<"* 0.返回到主菜单 *"<<endl;
cout<<"* 1.按照姓名删除 *"<<endl;
cout<<"* 2.按照学号删除 *"<<endl;
cout<<"* 3.按学号改信息 *"<<endl;
cout<<"* *"<<endl;
print();
print();
print();
print();
cout<<"* *"<<endl;
printstar();
cout<<"请选择以上功能(0-3):"<<endl;
}
void menuofnumalter()
{
void printstar();
void print();
printstar();
print();
cout<<"* 按学号修改菜单 *"<<endl;
print();
printstar();
cout<<"* *"<<endl;
print();
cout<<"* 0.返回到主菜单 *"<<endl;
cout<<"* 1.修改学生学号 *"<<endl;
cout<<"* 2.修改学生姓名 *"<<endl;
cout<<"* 3.修改数学成绩 *"<<endl;
cout<<"* 4.修改英语成绩 *"<<endl;
cout<<"* *"<<endl;
print();
print();
print();
print();
cout<<"* *"<<endl;
printstar();
cout<<"请选择以上功能(0-4):"<<endl;
}
void menuofnopass()
{
void printstar();
void print();
printstar();
print();
cout<<"* 单科成绩不及格 *"<<endl;
print();
printstar();
cout<<"* *"<<endl;
print();
cout<<"* 0.返回到主菜单 *"<<endl;
cout<<"* 1.数学不及格数 *"<<endl;
cout<<"* 2.英语不及格数 *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
print();
print();
print();
print();
cout<<"* *"<<endl;
printstar();
cout<<"请选择以上功能(0-2):"<<endl;
}
void menusort()
{
void printstar();
void print();
printstar();
print();
cout<<"* 排序菜单 *"<<endl;
print();
printstar();
cout<<"* *"<<endl;
print();
cout<<"* 0.返回到主菜单 *"<<endl;
cout<<"* 1.数学成绩排序 *"<<endl;
cout<<"* 2.平均成绩排序 *"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
print();
print();
print();
print();
cout<<"* *"<<endl;
printstar();
cout<<"请选择以上功能(0-2):"<<endl;
}
void printstar() //此处有30个星号
{
cout<<"********************************"<<endl;
}
void print()
{
cout<<"* *"<<endl;
}
话痨:
当时弄这个鬼东西,差点没有给我累死,还好当时还有几位不遗余力的解答我的奇奇怪怪的问题,予以表扬吖。
网站推荐(2020年):
花森酱个人资源导航:huasenjio.top/nav(必备)
花森酱个人笔录博客:huasenjio.top(资源教程)
花哥哥严肃说:
所学的知识均从课本,课外读物,网上收集资料,如果哪有侵权惹到您不开心丫,此外还有我也是小白,如果哪有认识不对的地方系统您抽我一耳光说我哪错了,联系企鹅号:184820911,有哪不明白或没事都可以找我,陪聊,陪吃不陪睡。