用C++编写一个学生信息管理系统 用C++语言编写一个学生信息管理系统

作者&投稿:茆卷 (若有异议请与网页底部的电邮联系)
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//输入/输出文件流类
using namespace std;
class Student //定义类

private:
int tag; //删除标记 1:已删 0:未删
char name[10]; //姓名
int grade;//成绩
int ID;
public:
Student() {}//构造函数
int gettag() {return tag;} //获取删除标记
char* getname() {return name;} //获取驾驶员编号
int getID(){ return ID; }
int getgrade(){
 return grade;
}
void setname(char*na){ strcpy_s(name, na); }
void setgrade(int n){ grade = n; }
void deldrive(){ tag = 1; }//设置删除标记 1:已删 0:未删
void addstudent(char* nname, int ngrade, int nID)//增加
{
 tag = 0;
 grade = ngrade;
 ID = nID;
 strcpy_s(name, nname);
}
void show()//显示信息

 cout << "      学号:     " << ID << endl;
 cout << "      姓名:     " << name << endl;
 cout <<"       成绩:      " << grade << endl;
}
};
//学生类库
class Studentlist

private:
int top; //记录指针与学号
Student student[100];//记录
public:
Studentlist() //构造函数,将txt读到程序
{
Student s;
top=-1;
fstream file("student.txt",ios::in);//打开一个输入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
student[top] = s;//循环逐个读入
}
file.close(); //关闭txt
}
int add(char* nname, int ngrade)//添加时先查找是否存在
{
top++;
student[top].addstudent(nname,ngrade,top);//调用类增加函数
return 1;
}
Student *findname(char*  name)//按姓名查找
{
for (int i=0;i<=top;i++)
if (strcmp(student[i].getname(),name)==0 &&
 student[i].gettag() == 0)//判断是否已经存在
{
 return &student[i];
}
return NULL;
}
Student *findID(int ID)//按学号查找
{
 for (int i = 0; i <= top; i++)
 if (student[i].getID()== ID&&
  student[i].gettag() == 0)//判断是否已经存在
 {
  return &student[i];
 }
 return NULL;
}
void show() //输出所有信息
{
for (int i=0;i<=top;i++)
student[i].show();
}
void tongji(){//统计函数
 cout << "                   优秀与及格人数" << endl;
 cout << "      及格人数如下:";
 for (int i = 0; i <= top; i++)
 if (student[i].getgrade() >= 60)
  student[i].show();
 cout << "


";
 cout << "      优秀人数如下:";
 for (int i = 0; i <= top; i++)
  if (student[i].getgrade() >= 80)
   student[i].show();
  
}
void studentlist();//维护
~Studentlist() //析构函数,将写到txt文件中
{
fstream file("student.txt",ios::out);
for (int i=0;i<=top;i++)
if (student[i].gettag() == 0)//循环输出信息到文本中
file.write((char *)&student[i], sizeof(student[i]));
file.close();
}
};
void Studentlist::studentlist()//维护函数实现
{
 int choice = 1;//先行定义,避免choice未定义使用
 char name[10]; //姓名
 int grade;//成绩
 int ID;
 Student *r;//指针
 while (choice != 6)
 {
  cout << "************************************
学生成绩管理系统 ***********************************************************************
***1--输入数据**********************
***2--查询成绩**********************
***3--修改成绩**********************
***4--输出所有学生成绩**************
***5--统计及格和优秀人数************
***6--退出系统****************************
*******************************" << endl;
  cin >> choice;
  switch (choice)
  {
  case 1://新增
   cout << "输入姓名:";
   cin >> name;
   cout << "输入成绩:";
   cin >> grade;
   add(name, grade);
   cout << "完成" << endl;;
   break;
  case 2://显示
   int a;
   while (a){
    cout << "搜 索 菜 单     1 学 号      2 姓 名       0 退 出" << endl;
    cin >> a;
    switch (a){
    case 1:
     cout << "输入学号:";
     cin >> ID;
     r = findID(ID);
     if (r == NULL)
     {
      cout << "该学生不存在" << endl;
      system("pause");
      break;
     }
     r->show();
     system("pause");
     break;
    case 2:
     cout << "输入姓名:";
     cin >> name;
     r = findname(name);
     if (r == NULL)
     {
      cout << "该学生不存在" << endl;
      system("pause");
      break;
     }
     r->show();
     system("pause");
     break;
    case 0:break;
    default:cout << "输入错误,请重新输入"; break;
    }
   }; break;
  case 3://更改
   int b;
   while (b){
    cout << "更 改 菜 单     1 学 号      2 姓 名       0 退 出"<<endl;
    switch (b){
    case 1:
     cout << "输入学号:";
     cin >> ID;
     r = findID(ID);
     if (r == NULL)
     {
      cout << "该学生不存在" << endl;
      system("pause");
      break;
     }
     cout << "成绩:";
     cin >> grade;
     r->setgrade(grade);
     system("pause");
     break;
    case 2:
     cout << "输入姓名:";
     cin >> name;
     r = findname(name);
     if (r == NULL)
     {
      cout << "该学生不存在" << endl;
      system("pause");
      break;
     }
     cout << "成绩:";
     cin >> grade;
     r->setgrade(grade);
     system("pause");
     break;
    case 0:break;
    default:cout << "输入错误,请重新输入"; break;
    }
   };
   break;
  case 4://全显
   show();
   system("pause");
   break;
  case 5://全删
   tongji();
   system("pause");
   break;
  case 6://退出
   break;
  default:cout << "输入错误,请重新输入"; break;
  };
 }
}
//main() 函数的实现,程序的主界面的引导
int main(void)

 Studentlist a;
 a.studentlist();
return 0;
}


用C++编写一个学生信息管理系统~

刚好以前写过,捡个便宜了(就是项目是姓名、学号和各课成绩,要改的话不难)

#include
#include
#include

using namespace std;
int num;
const int MAX_NUM_OF_STUDENTS=1000;
struct Student
{ int no;
char name [20];
int computer;
int math;
int english;
int physics;
};
Student students[MAX_NUM_OF_STUDENTS];
Student name_students[MAX_NUM_OF_STUDENTS];
char choose;
extern int Input_project();
extern int Search_project();
extern int Delete_project();
extern int Modify_project();





int Face()//主界面
{
cout<<"~*~*~欢迎使用学生信息管理系统~*~*~"<<endl<<endl;
cout<<"◇ 录入(I),"<<endl<<"◇ 查询(S),"<<endl<<"◇ 删除(D),"<<endl
<<"◇ 修改(M),"<<endl<<"◇ 退出(E),"<<endl;
cout<<"☆ 请输入您的选择(I,S,D,E):";
cin>>choose;
switch(choose)
{ case 'I':
case 'i': system("cls");Input_project();break;
case 'S':
case 's': system("cls");Search_project();break;
case 'D':
case 'd': system("cls");Delete_project();break;
case 'M':
case 'm': system("cls");Modify_project();break;
case 'E':
case 'e': system("cls");return -1;break;
default: cout<<" 输入错误!"<<endl;
}
return 0;
}









int Input_project()//输入功能
{ choose='C';
for( ;choose=='C'||choose=='c';num++)
{ cout<<"Ο 学号:";
cin>>students[num].no;
cout<<"Ο 姓名:";
cin>>students[num].name;
cout<<"Ο 数学:";
cin>>students[num].math;
cout<<"Ο 英语:";
cin>>students[num].english;
cout<<"Ο 物理:";
cin>>students[num].physics;
cout<<"Ο 计算机:";
cin>>students[num].computer;
cout<<"☆ 继续或返回主菜单(C/E):";
cin>>choose;
if(choose=='E'||choose=='e') break;
}
num+=1;//num为总人数
int i=num;//以下是按no冒泡排序
bool exchange;
while(i>1)
{ exchange=false;
for( int k=0;k<i-1;k++)
{ if(students[k].no>students[k+1].no)
{ Student temp=students[k];
students[k]=students[k+1];
students[k+1]=temp;
exchange=true;
}
}
if (!exchange) break;
i--;
}
for (int t=0;t<num;t++)//结构体数组各项一一复制
{ name_students[t].no=students[t].no;
*strcpy(name_students[t].name,students[t].name);
name_students[t].math=students[t].math;
name_students[t].english=students[t].english;
name_students[t].computer=students[t].computer;
name_students[t].physics=students[t].physics;
}
while(i>1)//以下是按name冒泡排序
{ exchange=false;
for( int k=0;k<i-1;k++)
{ if(strcmp(name_students[k].name,name_students[k+1].name)>0)
{ Student temp=name_students[k];
name_students[k]=name_students[k+1];
name_students[k+1]=temp;
exchange=true;
}
}
if (!exchange) break;
i--;
}

FILE *fp=fopen("c:\
ame.txt","a+");//存储两结构体数组
FILE *fp1=fopen("c:\
umber.txt","a+");
if (fp == NULL||fp1 == NULL)//判断文件打开是否成功
{ cout<<"打开文件失败!"<<endl;
return -1;
}
for(i=0;i<num;i++)
{ fwrite(&students[i],sizeof(Student),1,fp);
fwrite(&name_students[i],sizeof(Student),1,fp1);
}
fclose(fp);
fclose(fp1);
system("cls");return 0;
}






int Search_project()//查询功能
{ FILE *fp=fopen("c:\
ame.txt","r");
FILE *fp1=fopen("c:\
umber.txt","r");
if (fp == NULL||fp1 == NULL)//判断文件打开是否成功
{ cout<<"打开文件失败!"<<endl;
return -1;
}
num=0;
fread(&students[num],sizeof(Student),1,fp);
fread(&name_students[num],sizeof(Student),1,fp1);
while((!feof(fp))&&(!feof(fp1)))
{ num++;//计算已存储的资料的人数num
fread(&students[num],sizeof(Student),1,fp);
fread(&name_students[num],sizeof(Student),1,fp1);
}
fclose(fp);
fclose(fp1);

cout<<''<<"按学号查询(A)"<<''<<"按姓名查询(B)"<<''<<"返回主菜单(E)"<<endl;
cout<<"Ο 请选择:";
char input;
cin>>input;
switch(input)
{ case 'A':
case 'a':
{ cout<<"Ο 输入学号:";
int number;
cin>>number;//以下是折半查询:
int low=0;
int high=num-1;
while (low<=high)
{ int mid=(low+high)/2;
if (students[mid].no==number)
{ cout<<"Ο 学号:"<<students[mid].no<<endl;
cout<<"Ο 姓名:"<<students[mid].name<<endl;
cout<<"Ο 数学: "<<students[mid].math<<endl;
cout<<"Ο 英语: "<<students[mid].english<<endl;
cout<<"Ο 物理: "<<students[mid].physics<<endl;
cout<<"Ο 计算机: "<<students[mid].computer<<endl;
break;
}
else if (number>students[mid].no)
low=mid+1;
else high=mid-1;
}
if(low>high) cout<<" 无相关资料!"<<endl;
}break;
case 'B':
case 'b':
{ cout<<"Ο 输入姓名:";
char name[20];
cin>>name;
int low=0;int high=num-1;//以下是折半查询:
while (low<=high)
{ int mid=(low+high)/2;
if (strcmp(name_students[mid].name,name)==0)
{ cout<<"Ο 学号:"<<name_students[mid].no<<endl;
cout<<"Ο 姓名:"<<name_students[mid].name<<endl;
cout<<"Ο 数学: "<<name_students[mid].math<<endl;
cout<<"Ο 英语: "<<name_students[mid].english<<endl;
cout<<"Ο 物理: "<<name_students[mid].physics<<endl;
cout<<"Ο 计算机: "<<name_students[mid].computer<<endl;
break;
}
else if (strcmp(name_students[mid].name,name)<0)
low=mid+1;
else high=mid-1;
}
if(low>high) cout<<" 无相关资料!"<<endl;
}break;
case 'E':
case 'e':system("cls");return -1;break;
}
cout<<"☆ 继续或返回主菜单(C/E):";
cin>>choose;
if(choose=='C'||choose=='c') {system("cls");Search_project();}
else {system("cls");return -1;}
return 0;
}






int Delete_project()
{ cout<<"Ο 需删除的学生的学号是:";
int number;
cin>>number;
for(int i=0;i<num;i++)
{ if( students[i].no==number)
break;
}
for(;i<num;i++)//将要删除的学生调至数组最后一位,前num-1位仍按no排列
{ Student temp =students[i];
students[i]=students[i+1];
students[i+1]=temp;
}
for(int t=0;t<num;t++)
{ if( name_students[t].no==number)
break;
}
for(;t<num;t++)//将要删除的学生调至数组最后一位,前num-1位仍按name排列
{ Student temp =name_students[t];
name_students[t]=name_students[t+1];
name_students[t+1]=temp;
}
num-=1;//总人数减一,即删除最后一位
FILE *fp=fopen("c:\
ame.txt","w");
FILE *fp1=fopen("c:\
umber.txt","w");
if (fp == NULL||fp1 == NULL)//判断文件打开是否成功
{ cout<<"打开文件失败!"<<endl;
return -1;
}
for(i=0;i<num;i++)
{ fwrite(&students[i],sizeof(Student),1,fp);
fwrite(&name_students[i],sizeof(Student),1,fp1);
}
fclose(fp);
fclose(fp1);
bool p=true;//以下查找并判断删除是否成功
int low=0;
int high=num-1;
while (low<=high)
{ int mid=(low+high)/2;
if (students[mid].no==number||name_students[mid].no==number)
{ cout<<" 删除失败!"<<endl;
p=false;
break;
}
else if (number>students[mid].no)
low=mid+1;
else high=mid-1;
}
if(p) cout<<" 删除成功!"<<endl;
cout<<"☆ 继续或返回主菜单(C/E):";
cin>>choose;
if(choose=='C'||choose=='c') {system("cls");Delete_project();}
else {system("cls");return -1;}
return 0;
}






int Modify_project()
{ FILE *fp=fopen("c:\
ame.txt","r");
FILE *fp1=fopen("c:\
umber.txt","r");
if (fp == NULL||fp1 == NULL)//判断文件打开是否成功
{ cout<<"打开文件失败!"<<endl;
return -1;
}
num=0;
fread(&students[num],sizeof(Student),1,fp);
fread(&name_students[num],sizeof(Student),1,fp1);
while((!feof(fp))&&(!feof(fp1)))
{ num++;//计算已存储的资料的人数num
fread(&students[num],sizeof(Student),1,fp);
fread(&name_students[num],sizeof(Student),1,fp1);
}
fclose(fp);
fclose(fp1);

cout<<"Ο 需修改的学生的学号是:";
int number;
cin>>number;
int t,math,english,physics,computer;
cout<<"Ο 输入修改结果:"<<endl;
cout<<"Ο 数学:";
cin>>math;
cout<<"Ο 英语:";
cin>>english;
cout<<"Ο 物理:";
cin>>physics;
cout<<"Ο 计算机:";
cin>>computer;
for(int i=0;i<num;i++)
{ if( students[i].no==number)
break;
}
students[i].math=math;
students[i].english=english;
students[i].physics=physics;
students[i].computer=computer;

i=num;//以下是按no冒泡排序
bool exchange;
while(i>1)
{ exchange=false;
for( int k=0;k<i-1;k++)
{ if(students[k].no>students[k+1].no)
{ Student temp=students[k];
students[k]=students[k+1];
students[k+1]=temp;
exchange=true;
}
}
if (!exchange) break;
i--;
}
for (t=0;t<num;t++)//结构体数组各项一一复制
{ name_students[t].no=students[t].no;
*strcpy(name_students[t].name,students[t].name);
name_students[t].math=students[t].math;
name_students[t].english=students[t].english;
name_students[t].computer=students[t].computer;
name_students[t].physics=students[t].physics;
}
while(i>1)//以下是按name冒泡排序
{ exchange=false;
for( int k=0;k<i-1;k++)
{ if(strcmp(name_students[k].name,name_students[k+1].name)>0)
{ Student temp=name_students[k];
name_students[k]=name_students[k+1];
name_students[k+1]=temp;
exchange=true;
}
}
if (!exchange) break;
i--;
}



fp=fopen("c:\
ame.txt","w+");//存储两结构体数组,w+表示清空已有文件的内容
fp1=fopen("c:\
umber.txt","w+");
if (fp == NULL||fp1 == NULL)//判断文件打开是否成功
{ cout<<"打开文件失败!"<<endl;
return -1;
}
for(i=0;i<num;i++)
{ fwrite(&students[i],sizeof(Student),1,fp);
fwrite(&name_students[i],sizeof(Student),1,fp1);
}
fclose(fp);
fclose(fp1);
cout<<"☆ 继续或返回主菜单(C/E):";
cin>>choose;
if(choose=='C'||choose=='c') {system("cls");Delete_project();}
else {system("cls");return -1;}
return 0;
}








int main()
{ system("cls");
do
{Face();}
while (choose=='e'||choose=='E');
return 0;
}

让我们帮忙做吗?

...帮小弟用C解决下。。编写一个学生信息管理系统,主要实现下列功能...
答:编写一个学生信息管理系统,主要实现下列功能: 很急~!!1)录入功能:提供学生基本信息和某学期各科成绩的录入功能,学生信息要齐全。(2)查询功能,可以按照姓名或班级关键字查询学生基本信息。(3)修改功能,修改学生的信息和... 很急~!!1)录入功能:提供学生基本信息和某学期各科成绩的录入功能,学生信息要齐全。(2)...

C++设计一个学生信息管理系统
答:C++设计一个学生信息管理系统 5 1、类1)Student类,即学生类;基本信息包含:学生学号(唯一)、学生姓名、学生年龄、学生性别、学生班级等;要求设置多个构造函数(缺省无参构造、带参数的构造);2)U... 1、类1)Student类,即学生类;基本信息包含:学生学号(唯一)、学生姓名、学生年龄、学生性别、学生班级等;要求设置...

学生信息管理系统最简单源代码。
答:6、然后用switch函数对操作进行判断。再执行数据结构的增删改查功能。这样一个学生管理系统的基本框架就完成了。方法二:1、新建一个学生实体类,用于存放学生的各项信息。2、新建一个链表节点类,每个节点存放一个学生信息及下一个节点的引用。3、添加一个主操作类,并添加本系统的菜单方法。4、定义链表...

C语言设计一个学生学籍管理系统,要求文件形式保存,且用到链表
答:float score1; float score2; float score3; char filename[] = "D:\\编程学习\\编程实践\\c语言课程设计1 学生信息管理\\data.txt"; //文件名,此处为简化编程,采用固定地址名称,未作输入 FILE *fp; pstu head,ptr; //创建带表头结点的空单链表head,用来存放载入信息 head = (pstu)malloc(SIZE)...

c语言学生管理系统
答:2013-06-16 用C语言编写一个学生管理系统。 197 2014-05-22 c语言学生信息管理系统代码 406 2019-01-01 c语言学生管理系统 2 2010-06-21 怎样用C语言制作学生信息管理系统 37 2011-12-09 用C语言编写学生管理系统界面 1 2019-12-27 C语言学生成绩管理系统? 2011-08-03 用C语言设计一个学生成绩...

C语言 学生信息管理系统设计
答:l试设计一学生信息管理系统,使之能提供以下功能:a)系统以菜单方式工作b)学生信息录入功能(学生信息用文... l学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。l试设计一学生信息管理系统,使之能提供以下功能:a)系统以菜单方式工作b)学生信息录入功能(学生信息用文件保存)---输入c)学生信息...

C语言程序设计 学生成绩管理信息系统
答:C语言程序设计 学生成绩管理信息系统 5 问题描述:通过开发一个学生成绩管理信息系统,掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。基... 问题描述:通过开发一个学生成绩管理信息系统,掌握与数组有关的算法、函数的调用、结构体类型...

用C语言编写学生管理系统界面
答:其他类似问题 2013-06-16 用C语言编写一个学生管理系统。 208 2018-04-15 怎样用c语言编写学生管理系统? 2 2011-01-04 如何用C语言程序编写一个学生成绩管理系统,界面用菜单进行设计... 42 2014-05-22 c语言学生信息管理系统代码 425 2018-01-05 ...

学生信息管理系统C语言编程
答:一、学生信息管理系统1设计内容1、用户界面2、同学信息的插入3、同学信息的删除4、同学信息的查询5、同学信息的显示6、最终的同学信息写入到文件7、退出数据要求:同学信息包括:学号... 一、学生信息管理系统1 设计内容 1、用户界面2、同学信息的插入3、同学信息的删除4、同学信息的查询5、同学信息的显示6、最终的...

用C语言程序书写学生信息管理系统
答:2015-07-18 用C语言编程学生信息管理系统! 15 2015-04-11 学生成绩管理系统,使用c语言程序编写。 71 2010-07-13 c语言编写学生信息管理系统 174 2011-06-13 用C语言编写学生信息管理系统(带说明,每句说明) 14 2011-01-04 如何用C语言程序编写一个学生成绩管理系统,界面用菜单进行设计... 41 2009...