学生学籍管理系统 用C++编写

2024-11-15 22:41:22
推荐回答(4个)
回答(1):

一时半会也不能写出一模一样的程序了,给个程序让你参考吧!希望对你有帮助!
#include
#include
void menu();//函数声明******主菜单函数
void help();
void build();
void add();
void del();
void save();
void load();
void print();
void print(int l, int *p);
void print1(int l, int *p);
void mend();
void score();
void all();
int findnum(int *r);
int findname(int *r);
void countout();
void countin();
struct student
{
int number;
char name[20];
double math,e,c,avg,all;
};
student people[100];
static int n;
char file[30],ch;
void main()
{
system("color 1A");
cout<<"\t\t\t欢迎使用学生成绩管理系统"< menu();}
void menu()
{

cout< cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
cout<<"┃**************** ☆ 学 生 成 绩 管 理 系 统 ☆ ****************** ┃";
cout<<"┃********** ★★★★★ ★★★★★★★ ★★★★★ *********** ┃";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━世亏━━━━━━━━━━━━━━━┫";
cout<<"┃****************★ ☆ 1.帮助 ☆ ★***************┃";
cout<<"┃****************★ ☆ 2.输入数据并存档 ☆ ★***************┃";
cout<<"┃****************★ ☆ 3.添加学生碰返旁 ☆ ★***************┃";
cout<<"┃****************★ ☆笑橡 4.删除学生 ☆ ★***************┃";
cout<<"┃****************★ ☆ 5.修改学生资料 ☆ ★***************┃";
cout<<"┃****************★ ☆ 6.成绩统计 ☆ ★***************┃";
cout<<"┃****************★ ☆ 7.总成绩统计 ☆ ★***************┃";
cout<<"┃****************★ ☆ 8.储存学生成绩 ☆ ★***************┃";
cout<<"┃****************★ ☆ 9.安全退出系统 ☆ ★***************┃";
cout<<"┃****************★ ☆ 0.查看全部 ☆ ★***************┃";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"
<<"****************作者: 09计本三班 赵天武 QQ:469536761************************"<char a;
cout< cin>>a;
cout<2. switch(a)
{
case '1':help();break;
case '2':build();break;
case '3':add();break;
case '4':del();break;
case '5':mend();break;
case '6':score();break;
case '7':all();break;
case '8':save();break;
case '9':cout<<"退出程序"< case '0'{
print();
cout<<"任意键返回。"< getchar();
system("cls");
menu();
};break;
default:cout<<"输入错误"<cout<<"回车键返回。"<getchar();
system("cls");
menu();
}
}
void help()
{

system("cls");
cout<<" 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,\n";
cout<<" 学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输\n";
cout<<" 入数据后,将在当前目录中建立一个名为 stu.dat文件,用于保存\n";
cout<<" 输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓\n";
cout<<" 名输入符合中国人的姓名,只能用中文,且最长为5个汉字。"< cout<<"回车键返回!!"< getchar();
system("cls");
menu();

}
void build() //新建
{
fstream outf;
cout<<"输入文件名(包括扩展名):";cin>>file;cout< cout<<"请问初始化学生的个数:";cin>>n;cout< for(int i=0;i {
cout<<"\t\t\t学号:"; cin>>people[i].number; cout< cout<<"\t\t\t姓名:"; cin>>people[i].name; cout< cout<<"\t\t\t数学:"; cin>>people[i].math; cout< cout<<"\t\t\t英语:"; cin>>people[i].e; cout< cout<<"\t\t\tC++ :"; cin>>people[i].c; cout< }
cout< save();
}
void save() //保存
{
system("cls");
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件存储失败;"< abort();
}
for(int i=0;i outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"保存完毕"< cout<<"按任意键返回主菜单。";
cin.get();
system("cls");

menu();
}
void load() //读取文件
{
n=0;
loop:
cout<<"输入文件名(包括扩展名):";cin>>file;cout< fstream inf;
inf.open(file,ios::in|ios::binary|ios::nocreate);
if (!inf)
{
cout<<"载入文件失败"< goto loop;
}
else cout<<"成功读取文件!"< while(!inf.eof())
{inf.read((char *)&people[n],sizeof(people[n]));n=n+1;}
cout< cout<<"学生成绩汇总表:"< inf.close();
cout<<"确定返回主菜单。";
getchar();
system("cls");
menu();
}
void add() //添加
{
char ch;
int i=n;
cout<loop:
system("cls");
cout<<"学号:"; cin>>people[n].number; cout< cout<<"姓名:"; cin>>people[n].name; cout< cout<<"数学:"; cin>>people[n].math; cout< cout<<"英语:"; cin>>people[n].e; cout< cout<<"C++ :"; cin>>people[n].c; cout< n=n+1;cout< cout<>ch;
if(ch=='y') goto loop;
cout<<"文件尚未保存,保存吗?(y/n)";cin>>ch;
if(ch=='y')
{
fstream outf;
outf.open(file,ios::out|ios::binary|ios::ate);
if(!outf)
{
cout<<"文件存储失败;"< abort();
}
for(i;i outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"保存完毕"< }
getchar();
system("cls");
menu();
}
void del() //删除
{
if(n==0)
cout<<"无学生档案"< else
{
int findnum(int *p);
int findname(int *p);
int a,k,remember[20];
char ch;
loop:
cout<<"\t\t"<<"输入1.学号查询"< cout<<"\t\t"<<"输入2.以姓名查询"< cout<<"\t\t"<<"输入3.返回"< cout<<"\t\t\t\t输入选项:";cin>>a;
if(a==1)
{
k=findnum(remember);
if (k==0) {cout<<"无此人"< else print1(k,remember);
}
else if(a==2)
{
k=findname(remember);
if (k==0){ cout<<"无此人"< else print1(k,remember);
}
else if(a==3) {system("cls");menu(); }
else {cout<<"错误选项!";goto loop;}
cout< cin>>ch;
if(ch=='y')
{
for(int j=0;j {
for(int t=remember[j];t { if(remember[j]==n-1) break;
else
people[t]=people[t+1]; //经典
}
n--;cout< }
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件存储失败;"< abort();
}
for(int i=0;i outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"删除完毕,文件已保存。"< getchar();
system("cls");
menu();
}
else {cout<<"删除完毕,文件已保存。"< cout<<"\t\t\t\t\t\t\t\t\t\t确定";
getchar();
system("cls");menu();}
}
}
void mend() //修改****************************************************************************
{
if(n==0)
cout<<"无学生资料"< else
{
int findnum(int *p);
int findname(int *p);
int a,k,remember[20];
loop:
cout<<"\t"<<"1.以学号查询"< cout<<"\t"<<"2.以姓名查询"< cout<<"\t"<<"3.返回"< cout<<"输入选项:";cin>>a;
if(a==1)
{
k=findnum(remember);
if (k==0) cout<<"无此人"< }
else if(a==2)
{
k=findname(remember);
if (k==0) cout<<"无此人"< }
else if(a==3){system("cls"); menu();}
else {cout<<"错误选项!";goto loop;}
cout<<"学生资料修改输入:===>>"< for(int i=0;i {
cout<<"\t\t\t学号:"; cin>>people[remember[i]].number; cout< cout<<"\t\t\t姓名:"; cin>>people[remember[i]].name; cout< cout<<"\t\t\t数学:"; cin>>people[remember[i]].math;cout< cout<<"\t\t\t英语:"; cin>>people[remember[i]].e; cout< cout<<"C++:"; cin>>people[remember[i]].c; cout< }
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件未存储;"< abort();
}
for(i=0;i {
if(i==k) continue;
else outf.write((char *)&people[i],sizeof(people[i]));
}
outf.close();
cout<<"学生信息修改完成。"< }
cout<<"\t\t\t\t\t\t\t\t\t\t确定。"< getchar();
system("cls");

menu();
}
void score() //成绩统计****************************************************************************
{
double savg[3];
int pnum[3][5],good,lgood,so,ok,notok; //3 科 1~5 优秀,良好,中,及格,不及格 的人数
double sum[3]={0,0,0};
for(int j=0;j for(int i=0;i<3;i++) savg[i]=sum[i]/n; //科目平均****************************************************************************
for(i=0;i<5;i++)
{
good=0;lgood=0;so=0;ok=0;notok=0;
for(int j=0;j {
if (people[j].math>=90) good++;else if(people[j].math>=80) lgood++;else if(people[j].math>=70) so++;else
if (people[j].math>=60) ok++;else notok++;
}
pnum[0][0]=good;pnum[0][1]=lgood;pnum[0][2]=so;pnum[0][3]=ok;pnum[0][4]=notok;
good=0;lgood=0;so=0;ok=0;notok=0;
for(j=0;j {
if (people[j].e>=90) good++;else if(people[j].e>=80) lgood++;else if(people[j].e>=70) so++;else
if (people[j].e>=60) ok++;else notok++;
}
pnum[1][0]=good;pnum[1][1]=lgood;pnum[1][2]=so;pnum[1][3]=ok;pnum[1][4]=notok;
good=0;lgood=0;so=0;ok=0;notok=0;
for(j=0;j {
if (people[j].c>=90) good++;else if(people[j].c>=80) lgood++;else if(people[j].c>=70) so++;else
if (people[j].c>=60) ok++;else notok++;
}
pnum[2][0]=good;pnum[2][1]=lgood;pnum[2][2]=so;pnum[2][3]=ok;pnum[2][4]=notok;
}
cout<<"┌————┬—————┬————┬————┬————┬————┬————┐"< cout<<"│ 科目 │ 平均成绩 │ 优秀 │ 良好 │ 中等 │ 及格 │ 不及格 │"< cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ 数学 │"< < cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ 英语 │"< < cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ C++ │"< < cout<<"└————┴—————┴————┴————┴————┴————┴————┘"< cout<<"比例(%)"< cout<<"┌————┬—————┬————┬————┬————┬————┬————┐"< cout<<"│ 科目 │ 平均成绩 │ 优秀 │ 良好 │ 中等 │ 及格 │ 不及格 │"< cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ 数学 │"< < cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ 英语 │"< < cout<<"├————┼—————┼————┼————┼————┼————┼————┤"< cout<<"│ C++ │"< < cout<<"└————┴—————┴————┴————┴————┴————┴————┘"< getchar();
system("cls");
menu();
}
void all() //总成绩统计****************************************************************************
{
int a[100],flag;
if (n>=1)
{
for(int j=0;j {
people[j].all=people[j].math+people[j].e+people[j].c;
people[j].avg=people[j].all/3;
}
for(j=0;j {
flag=0;
for(int s=0;s {
if (people[j].all }
a[j]=flag;
}

system("cls");
cout<<"┌—————┬—————┬——————┬——————┬—————┐"< cout<<"│ 排名 │ 学号 │ 姓名 │ 平均分 │ 总成绩 │"< cout<<"├—————┼—————┼——————┼——————┼—————┤"< for(int i=0;i {
cout<<"│ "< <<" │ "< <<" │"< <<" │"< <<" │"< <<" │"< if(i==n-1) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"< }
cout<<"└—————┴—————┴——————┴——————┴—————┘"<}
else cout<<"错误,或无学生资料."< cout<<"\t\t\t\t\t\t\t\t\t\t确定。"< getchar();
system("cls");
menu();
}

void countout()//个数记录**********************************************************************************************************************
{
fstream out;
out.open("F:\\count.dat",ios::out);
if(!out){cout<<"count error"< else out< out.close();
}
void countin()//个数读取****************************************************************************
{
fstream in;
in.open("F:\\count.dat",ios::in);
if(!in){cout<<"in error"< in>>n;
in.close();
}
void print(int l,int *p) //输出删除后所剩学生的信息****************************************************************************
{
if(l==0) cout<<"无学生资料."< int m(0);
cout<<"┌—————┬—————┬——————┬——————┬—————┐"< cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"< cout<<"├—————┼—————┼——————┼——————┼—————┤"< for(int i=0;i {
if(i==*(p+m)) {m++;continue;}
cout<<"│ "< <<" │ "< <<" │"< <<" │"< <<" │"< <<" │"< if(i==l-2) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"< }
cout<<"└—————┴—————┴——————┴——————┴—————┘"<}
void print() //通用查看学生信息
{
if (n==0) cout<<"无学生资料."< cout<<"┌—————┬—————┬——————┬——————┬—————┐"< cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"< cout<<"├—————┼—————┼——————┼——————┼—————┤"< for(int i=1;i {
cout<<"│"< <<" │"< <<" │ "< <<" │"< <<" │"< <<" │"< if(i==n) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"< }
cout<<"└—————┴—————┴——————┴——————┴—————┘"< cin.get();cin.get();
}
void print1(int l,int *p) // 输出要删除的学生的信息
{
if (l==0) cout<<"无学生资料."< int m(0);
cout<<"┌—————┬—————┬——————┬——————┬—————┐"< cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"< cout<<"├—————┼—————┼——————┼——————┼—————┤"< for(int i=1;i {
cout<<"│ "< <<" │ "< <<" │"< <<" │"< <<" │"< <<" │"< if(i==l) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"< }
cout<<"└—————┴—————┴——————┴——————┴—————┘"<}

回答(2):

这个东西还是自己写比较好,对你入门很有帮助的,可以稍微理解下数据的存储,以后学习数据库可以对比下。

回答(3):

过几天我考完专业课再帮你解答,如果你还没有答案的话

回答(4):

这个,
还真得自己写。