学生管理系统
我现在是大一新生!这个系统我写了一个月。但是还是不是很好。但是我想着是我的第一个系统。我在写的时候发现我的删除功能不是很好的。还有就是在这个过程中我学会了再这里我学到了如何使用类中的函数的多个成员的方法。下面是我的源代码。
#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
using namespace std;
class score
{
friend class student;
private:
string no;
string kcnum; //课程编号
string kcname; //课程名称
float kcxf; //课程学分
float ydxf; //应得学分
float pscj; //平时成绩
float sycj; //实验成绩
float jmcj; //卷面成绩
float zhcj; //综合成绩
public:
friend void readfilescore(score s[],int &num);
friend void saveinforscore(score s[],int &num);
};
void readfilescore(score s[],int &num)
{
ifstream f1;
f1.open("d:\\学生管理系统.txt");
int i=0;
while(!f1.eof())
{
f1>>s[i].no>>s[i].kcnum>>s[i].kcname>>s[i].kcxf>>s[i].ydxf
>>s[i].pscj>>s[i].sycj>>s[i].jmcj>>s[i].zhcj;
if(s[i].sycj==-1)
s[i].zhcj=s[i].pscj*0.3+s[i].jmcj*0.7;
else
s[i].zhcj=s[i].pscj*0.15+s[i].sycj*0.15+s[i].jmcj*0.7;
if(s[i].zhcj>=60)
s[i].ydxf=s[i].kcxf;
else
s[i].ydxf=0;
i++;
}
num=i;
f1.close();
}
void saveinforscore(score s[],int &num)
{
ofstream f2;
f2.open("d:\\学生管理系统2.txt");
for(int i=0;i<num;i++)
f2<<s[i].no<<s[i].kcnum<<s[i].kcname<<s[i].kcxf<<s[i].ydxf
<<s[i].pscj<<s[i].sycj<<s[i].jmcj<<s[i].zhcj;
f2.close();
}
class student
{
string sno; //学生学号
string name; //学生姓名
string sex; //学生性别
string department;//宿舍
string phone; //联系方式
float score1;
public:
bool operator<(student &t);
friend void readfile(student s2[],int &num);
friend void saveinfor(student s2[],int &num);
friend void delete1(student s1[],score s2[],int &num1,int &num2);
friend void searchno(student s[],int &num);
friend void searchname(student s[],int &num);
friend void search(student s2[],int &num);
friend void sort(student s2[],int &num);
};
bool student::operator<(student &t)
{
if(score1<t.score1)
return true;
else
return false;
}
void readfile(student s2[],int &num)
{
ifstream f2;
f2.open("d:\\学生管理系统.txt");
int i=0;
while(!f2.eof())
{
f2>>s2[i].sno>>s2[i].name>>s2[i].sex>>s2[i].department>>s2[i].phone;
i++;
}
num=i;
f2.close();
}
void saveinfor(student s2[],int &num)
{
ofstream f3;
f3.open("d:\\学生管理系统2.txt");
for(int i=0;i<num;i++)
f3<<s2[i].sno<<s2[i].name<<s2[i].sex<<s2[i].department<<s2[i].phone;
f3.close();
}
void delete1(student s1[],score s2[],int &num1,int &num2)
{
int x,y;
string z;
cout<<"请输入您要删除的学生的学号:";
cin>>z;
for(int i=0;i<num1;i++)
if(z==s1[i].sno)
{
x=i;//break;
for(i=x;i<num1-1;i++)
{s1[i]=s1[i+1];
s2[i]=s2[i+1];
}
}
}
void searchno(student s[],int &num)
{
string z;
int x;
cout<<"请输入您要查询的学生的学号:"<<endl;
cin>>z;
for(int i=0;i<num;i++)
if(z==s[i].sno)
{ x=i;break;}
cout<<s[x].sno<<s[x].name<<s[x].sex<<s[x].department<<s[x].phone;
}
void searchname(student s[],int &num)
{
string t;
int x;
cout<<"请输入您要查询的学生的姓名:"<<endl;
cin>>t;
for(int i=0;i<num;i++)
if(t==s[i].name)
{x=i;break;}
cout<<s[x].sno<<s[x].name<<s[x].sex<<s[x].department<<s[x].phone;
}
void search(student s2[],int &num)
{
int a;
string x,y,z;
cout<<"请选择您是选通过哪种方式查询信息:"<<endl;
cout<<"1-通过学号查询,2-通过姓名查询:"<<endl;
cin>>a;
switch(a)
{
case 1:searchno(s2,num);break;
case 2:searchname(s2,num);break;
}
}
void main ()
{
score s[10];
score s1;
int num1=0;
student ss[10];
student ss1;
int num2=0;
cout<<"*************淮阴师范学院学生信息管理系统*************"<<endl;
cout<<"1-学生信息录入 2-学生信息查询 3-学生信息的删除 4-学生信息的排序"<<endl;
int x;
cout<<"请输入您要选择的功能:"<<endl;
cin>>x;
switch(x)
{
case 1:cout<<"请输入学生信息(学号 成绩 性别 宿舍 联系方式等信息):"<<endl;readfilescore(s,num1);readfile(ss,num2);break;
case 2:search(ss,num2);break;
case 3:delete1(ss,s,num1,num2);break;
//case 4:sort(ss,num2);break;
case 5:cout<<"退出系统!!!:"<<endl;
}
}