C++设计一个学生信息管理系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++设计一个学生信息管理系统相关的知识,希望对你有一定的参考价值。

1、类
1)Student类,即学生类;
基本信息包含:学生学号(唯一)、学生姓名、学生年龄、学生性别、学生班级等;
要求设置多个构造函数(缺省无参构造、带参数的构造);
2)Undergraduate类,即本科生类;Undergraduate类继承Student类,此外新增属性有:成绩1,成绩2,成绩3,成绩4,总分,平均分,班长等。
要求设置多个构造函数(缺省无参构造、带参数的构造);
其中:
班长为Student类的对象。
3)Graduate类,即研究生类;Graduate类继承Student类,此外新增属性有:成绩A,成绩B,班长,研究方向、研究导师、工资等。
要求设置多个构造函数(缺省无参构造、带参数的构造);
其中:
班长为Student类的对象。

2、基本功能
本科生成绩的键盘录入,磁盘导入,显示,删除,修改,添加,查询、计算个人成绩总分和平均分、排序等并磁盘保存;
研究生信息的键盘录入,磁盘导入,显示,删除,修改,添加,查询和磁盘保存;
(基本功能完成后可自行扩展其他功能)
其中:
显示:显示学生的信息(包括其班长信息);
删除:输入学生学号,可以删除该学生的信息;
修改:输入学生学号,可以编辑修改该学生的信息;
添加:可以追加新来的学生的信息并保存至磁盘
查询:输入学生学号,可以显示该学生的信息
排序:对本科生按照个人平均分排序;
4门课程平均分高于85分,并且单科成绩不低于80分的前3名本科生,保送研究生(即将其学号和姓名等信息录入研究生类中,并将其在本科生类中的信息删除)。必须要用对象数组,以上个别功能用到虚函数实现的可以加分。
将研究生按导师归类显示:即对同属于一个导师的研究生一起显示。
如显示为:
董方老师的研究生为:
姓名 年龄 性别 班级 成绩A 成绩B 班长 研究方向 研究导师 工资
张鹏 22 男 自动化2013-1 78 86 徐文 智能控制 董方 500
…… …… … …….. … ….. …. ………. ….. ……..
王跃老师的研究生为:

姓名 年龄 性别 班级 成绩A 成绩B 班长 研究方向 研究导师 工资
…… …… … …….. … ….. …. ………. ….. ……..
…… …… … …….. … ….. …. ………. ….. ……..

#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
using namespace std;

class Student //学生类
private:
string number; //学号
string name; //姓名
int age; //年龄
char sex; //性别
string grade; //班级
public:
Student(); //无参构造
Student(string Num,string Nam,int Age,char Sex,string Gra):number(Num),name(Nam),age(Age),sex(Sex),grade(Gra)//有参构造
~Student() //析构
virtual void Display(); //显示学生信息
virtual void Add(); //声明新增学生对象的函数
virtual int FindRevise(string str) if(str==number) return 1;else return 0;
void Setname(string str) name=str; //修改姓名
void SetGrade(string str) grade=str; //修改班级
;
Student::Student() //定义学生类无参构造函数
number="001";
name="Zhangsan";
age=18;
sex='M';
grade="One";

void Student::Display() //定义显示学生信息函数
cout<<"学号:"<<number<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"年级:"<<grade<<endl;

void Student::Add() //定义增加学生信息函数
cout<<"请输入"<<endl;
cout<<"学号:";cin>>number;
cout<<"姓名:";cin>>name;
cout<<"年龄:";cin>>age;
cout<<"性别:";cin>>sex;
cout<<"年级:";cin>>grade;


class Undergrade:public Student //本科生类,继承了学生类
private:
double score1; //成绩1
double score2; //成绩2
double score3; //成绩3
double score4; //成绩4
Student monitor; //班长(学生类)
public:
Undergrade(); //无参构造
Undergrade(string Num,string Nam,int Age,char Sex,string Gra,double s1,double s2,double s3,double s4,Student Mon):Student(Num,Nam,Age,Sex,Gra)
score1=s1;
score2=s2;
score3=s3;
score4=s4;
monitor=Mon;
//有参构造
virtual void Display_monitor();//定义显示班长信息函数
~Undergrade() //析构
void Display();//声明显示本科生类学生信息函数
void Add(); //声明新增本科类学生的函数
virtual void AddMon();//声明增加班长信息的函数
int FindRevise(string str); //用于查找判断该学号是否为该学生 str为学号
void Revise(int n); //修改学生信息,n为需要修改的信息(详细见ReviseMenu)
;
Undergrade::Undergrade() //定义本科生类学生无参构造函数
score1=100;
score2=100;
score3=100;
score4=100;
Student t;
monitor=t;

void Undergrade::Display_monitor() //定义显示本科生信息函数
monitor.Display();

void Undergrade::Display() //定义显示本科生信息函数
Student::Display();
cout<<"成绩1:"<<score1<<endl;
cout<<"成绩2:"<<score2<<endl;
cout<<"成绩3:"<<score3<<endl;
cout<<"成绩4:"<<score4<<endl;
cout<<"班长:"<<endl;
Display_monitor();

void Undergrade::AddMon() //定义增加班长信息的函数
monitor.Add();

void Undergrade::Add() //定义增加本科生信息函数
Student::Add();
cout<<"成绩1:";cin>>score1;
cout<<"成绩2:";cin>>score2;
cout<<"成绩3:";cin>>score3;
cout<<"成绩4:";cin>>score4;
cout<<"班长:"<<endl;
AddMon();

int Undergrade::FindRevise(string str)//用于查找判断该学号是否为该学生 str为学号
if(Student::FindRevise(str)) return 1;
else return 0;

void Undergrade::Revise(int n) //修改学生信息 n为修改的具体类型(详情见ReviseMenu)
string str;
switch(n)
case 1:
cout<<"请输入新姓名:";cin>>str;
Student::Setname(str);
break;

case 2:
cout<<"请输入新班级:";cin>>str;
Student::SetGrade(str);
break;



class Graduate:public Student//研究生类
private:
double scoreA; //成绩a
double scoreB; //成绩b
Student monitor; //班长(学生类)
string res_direction;//研究方向
string res_teacher; //研究导师
double pay;//工资

public:
Graduate(); //无参构造
Graduate(string Num,string Nam,int Age,char Sex,string Gra,double A,double B,Student Mon,string Dir,string Tea,double Pay):Student(Num,Nam,Age,Sex,Gra)
scoreA=A;
scoreB=B;
monitor=Mon;
res_direction=Dir;
res_teacher=Tea;
pay=Pay;
//有参构造
void Display_monitor();//声明显示班长信息函数
~Graduate() //析构
void Display();//声明显示研究生类学生信息函数
void Add();//新增学生信息
void AddMon();//新增班长信息
int FindRevise(string str);//用于查找判断该学号是否为该学生 str为学号
void Revise(int n);//修改学生信息 n为修改的具体类型(详情见ReviseMenu)
;
Graduate::Graduate() //定义研究生类学生无参构造函数
scoreA=100;
scoreB=100;
Student t;
monitor=t;
res_direction="Zhang";
res_teacher="Zhang";
pay=999;

void Graduate::Display_monitor() //定义显示班长信息函数
monitor.Display();


void Graduate::Display() //定义显示研究生信息函数
Student::Display();
cout<<"成绩A:"<<scoreA<<endl;
cout<<"成绩B:"<<scoreB<<endl;
cout<<"班长:"<<endl;
Display_monitor();
cout<<"研究方向:"<<res_direction<<endl;
cout<<"研究导师:"<<res_teacher<<endl;
cout<<"工资:"<<pay<<endl;

void Graduate::AddMon()//定义增加班长信息的函数
monitor.Add();

void Graduate::Add() //定义增加研究生信息函数
Student::Add();
cout<<"成绩A:";cin>>scoreA;
cout<<"成绩B:";cin>>scoreB;
cout<<"班长:"<<endl;
AddMon();
cout<<"研究方向:";cin>>res_direction;
cout<<"研究导师:";cin>>res_teacher;
cout<<"工资:";cin>>pay;

int Graduate::FindRevise(string str)//用于查找判断该学号是否为该学生 str为学号
if(Student::FindRevise(str)) return 1;
else return 0;

void Graduate::Revise(int n) //修改学生信息 n为修改的具体类型(详情见ReviseMenu)
string str;
switch(n)
case 1:
cout<<"请输入新姓名:";cin>>str;
Student::Setname(str);
break;

case 2:
cout<<"请输入新班级:";cin>>str;
Student::SetGrade(str);
break;




void MainMenu() //主菜单

cout<<"\n\t学 生 管 理 系 统";
cout<<"\n*******************************\n";
cout<<" \t1.添加新本科类学生\n";
cout<<" \t2.添加新研究生类学生\n";
cout<<" \t3.显示本科类学生信息\n";
cout<<" \t4.显示研究生类学生信息\n";
cout<<" \t5.修改本科类学生信息\n";
cout<<" \t6.修改研究生类学生信息\n";
cout<<" \t7.删除本科类学生信息\n";
cout<<" \t8.删除研究生类学生信息\n";
cout<<" \t9.\n";
cout<<" \t10.\n";

cout<<"\n*******************************\n";
cout<<"请选择:";

void ReviseMenu() //定义修改学生信息的函数

cout<<"\n***************************\n";
cout<<"1.修改姓名\n";
cout<<"2.修改班级";
cout<<"\n***************************\n";
cout<<"请选择:";


int main()

Undergrade UndGra[100]; //定义本科生对象数组
int UndGraVis[100];//用于判断本科生是否存在
Graduate Gra[100]; //定义研究生对象数组
int GraVis[100];//用于判断研究生是否存在
int i,UndGraPeo=1,GraPeo=1,a[2];
memset(UndGraVis,1,sizeof(UndGraVis));
memset(GraVis,1,sizeof(GraVis));

while(1)

MainMenu();
int c;
cin>>c;
cout<<endl;
switch(c)

case 1://新增本科生
UndGra[UndGraPeo].Add();
cout<<"已成功添加!"<<endl;
UndGraPeo++;
break;

case 2://新增研究生
Gra[GraPeo].Add();
cout<<"已成功添加!"<<endl;
GraPeo++;
break;

case 3://显示本科生
if(UndGraPeo==1) cout<<"无记录!\n";
else
for(i=1;i<UndGraPeo;i++)
if(!UndGraVis[i]) continue;
UndGra[i].Display();
cout<<endl;


break;

case 4://显示研究生
if(GraPeo==1) cout<<"无记录!\n";
else
for(i=1;i<GraPeo;i++)
if(!GraVis[i]) continue;
Gra[i].Display();
cout<<endl;


break;

case 5://修改本科生信息
ReviseMenu();
int n; cin>>n;
string str;
int num=0;
cout<<"请输入该学生学号:";cin>>str;
for(i=1;i<UndGraPeo;i++)
if(UndGra[i].FindRevise(str)) num=i;break;

if(num==0||!UndGraVis[num]) cout<<"输入错误!"<<endl;break; //未找到该学生
else UndGra[num].Revise(n);
cout<<"修改成功!"<<endl;
break;

case 6://修改研究生信息
ReviseMenu();
int n; cin>>n;
string str;
int num=0;
cout<<"请输入该学生学号:";cin>>str;
for(i=1;i<GraPeo;i++)
if(Gra[i].FindRevise(str)) num=i;break;

if(num==0||!GraVis[num]) cout<<"输入错误!"<<endl;break;
else Gra[num].Revise(n);
cout<<"修改成功!"<<endl;
break;

case 7://删除本科生信息
string str;
int num=0;
cout<<"请输入该学生学号:";cin>>str;
for(i=1;i<UndGraPeo;i++)
if(UndGra[i].FindRevise(str)) num=i;break;

if(num==0||!UndGraVis[num]) cout<<"输入错误!"<<endl;break; //未找到该学生
else UndGraVis[num]=0;
cout<<"已删除!"<<endl;
break;

case 8://删除研究生信息
string str;
int num=0;
cout<<"请输入该学生学号:";cin>>str;
for(i=1;i<GraPeo;i++)
if(Gra[i].FindRevise(str)) num=i;break;

if(num==0||!GraVis[num]) cout<<"输入错误!"<<endl;break; //未找到该学生
else GraVis[num]=0;
cout<<"已删除!"<<endl;
break;

default:cout<<"输入错误!\n";


return 0;


这可绝对可用 我们刚刚 做完这个
参考技术A 本书是《程序设计基础——C++》一书的配套用书,主要包含3部分内容:实验指导、课程设计和《程序设计基础——C++》的习题参考答案。
 
  在课程设计部分,包含1O个课程设计题目,选材丰富,趣味性强,知识点覆盖面宽,在实际项目的设计中具有较强的指导性,提供设计步骤和部分代码,并提出改进建议,引导读者在此基础上进一步改进和完善功能。
 在习题参考答案部分,提供《程序设计基础——C++》一书的全部习题答案,并对某些难度较大的习题给出分析或注释。
 本书可作为高等院校计算机专业本科教材。由于本书具有较强的指导性和实用性,也可作为计算机爱好者的自学用书。
目录:
第1部分 实验指导 
实验1 简单编程练习 
  1.1 实验目的与要求   
  1.2 实验内容 
  1.3 实验步骤 
  1.4 实验提示信息 
  1.5 思考题 
 实验2 控制结构编程练习 
  2.1 实验目的与要求 
  2.2 实验内容 
  2.3 实验步骤 
  2.4 实验提示信息 
  2.5 思考题 
 实验3 数组 
  3.1 实验目的与要求 
  3.2 实验内容 
  3.3 实验步骤 
  3.4 实验提示信息 
  3.5 思考题 
 实验4 函数 
  4.1 实验目的与要求 
  4.2 实验内容 
  4.3 实验步骤 
  4.4 实验提示信息 
  4.5 思考题 
 实验5 指针与字符串 
  5.1 实验目的与要求 
  5.2 实验内容 
  5.3 实验步骤 
  5.4 实验提示信息 
  5.5 思考题 
 实验6 结构及其他 
  6.1 实验目的与要求 
  6.2 实验内容 
  6.3 实验步骤 
  6.4 实验提示信息 
  6.5 思考题 
 实验7 类与对象 
  7.1 实验目的与要求 
  7.2 实验内容 
  7.3 实验步骤 
  7.4 实验提示信息 
  7.5 思考题 
 实验8 继承与派生 
  8.1 实验目的与要求 
  8.2 实验内容 
  8.3 实验步骤 
  8.4 实验提示信息 
  8.5 思考题 
 实验9 多态性 
  9.1 实验目的与要求 
  9.2 实验内容 
  9.3 实验步骤 
  9.4 实验提示信息 
  9.5 思考题 
 实验10 模板与异常 
  10.1 实验目的与要求 
  10.2 实验内容 
  10.3 实验步骤 
  10.4 实验提示信息 
  10.5 思考题 
 实验11 C++流与文件流 
  11.1 实验目的与要求 
  11.2 实验内容 
  11.3 实验步骤 
  11.4 实验提示信息 
  11.5 思考题 
第2部分 课程设计 
 项目1 简单计算器 
  1.1 目标与要求 
  1.2 分析 
  1.3 实现步骤 
  1.4 测试与思考 
 项目2 多项式相加问题 
  2.1 目标与要求 
  2.2 分析 
  2.3 实现步骤 
  2.4 测试与思考 
 项目3 平面游戏——陨石撞飞机 
  3.1 目标与要求  
  3.2 分析 
  3.3 实现步骤 
  3.4 测试与思考 
 项目4 基于OpenGL的三维动画设计——荡秋千 
  4.1 目标与要求 
  4.2 分析 
  4.3 实现步骤 
  4.4 测试与思考 
 项目5 电话号码簿 
  5.1 目标与要求 
  5.2 分析 
  5.3 实现步骤 
  5.4 测试与思考 
 项目6 纸牌游戏——“21点” 
  6.1 目标与要求 
  6.2 分析 
  6.3 实现步骤 
  6.4 测试与思考 
 项目7 音像店 
  7.1 目标与要求 
  7.2 分析 
  7.3 实现步骤 
  7.4 测试与思考 
 项目8 小小图书馆 
  8.1 目标与要求 
  8.2 分析 
  8.3 实现步骤 
  8.4 测试与思考 
 项目9 图像编辑器 
  9.1 目标与要求 
  9.2 分析 
  9.3 实现步骤 
  9.4 总结与思考 
 项目10 学生信息管理系统 
  10.1 目标与要求 
  10.2 分析 
  10.3 实现步骤 
  10.4 测试与思考 
第3部分 习题参考答案 
参考技术B 本书是《程序设计基础——C++》一书的配套用书,主要包含3部分内容:实验指导、课程设计和《程序设计基础——C++》的习题参考答案。
 
  在课程设计部分,包含1O个课程设计题目,选材丰富,趣味性强,知识点覆盖面宽,在实际项目的设计中具有较强的指导性,提供设计步骤和部分代码,并提出改进建议,引导读者在此基础上进一步改进和完善功能。
 在习题参考答案部分,提供《程序设计基础——C++》一书的全部习题答案,并对某些难度较大的习题给出分析或注释。
 本书可作为高等院校计算机专业本科教材。由于本书具有较强的指导性和实用性,也可作为计算机爱好者的自学用书。
目录:
第1部分 实验指导 
实验1 简单编程练习 
  1.1 实验目的与要求   
  1.2 实验内容 
  1.3 实验步骤 
  1.4 实验提示信息 
  1.5 思考题 
 实验2 控制结构编程练习 
  2.1 实验目的与要求 
  2.2 实验内容 
  2.3 实验步骤 
  2.4 实验提示信息 
  2.5 思考题 
 实验3 数组 
  3.1 实验目的与要求 
  3.2 实验内容 
  3.3 实验步骤 
  3.4 实验提示信息 
  3.5 思考题 
 实验4 函数 
  4.1 实验目的与要求 
  4.2 实验内容 
  4.3 实验步骤 
  4.4 实验提示信息 
  4.5 思考题 
 实验5 指针与字符串 
  5.1 实验目的与要求 
  5.2 实验内容 
  5.3 实验步骤 
  5.4 实验提示信息 
  5.5 思考题 
 实验6 结构及其他 
  6.1 实验目的与要求 
  6.2 实验内容 
  6.3 实验步骤 
  6.4 实验提示信息 
  6.5 思考题 
 实验7 类与对象 
  7.1 实验目的与要求 
  7.2 实验内容 
  7.3 实验步骤 
  7.4 实验提示信息 
  7.5 思考题 
 实验8 继承与派生 
  8.1 实验目的与要求 
  8.2 实验内容 
  8.3 实验步骤 
  8.4 实验提示信息 
  8.5 思考题 
 实验9 多态性 
  9.1 实验目的与要求 
  9.2 实验内容 
  9.3 实验步骤 
  9.4 实验提示信息 
  9.5 思考题 
 实验10 模板与异常 
  10.1 实验目的与要求 
  10.2 实验内容 
  10.3 实验步骤 
  10.4 实验提示信息 
  10.5 思考题 
 实验11 C++流与文件流 
  11.1 实验目的与要求 
  11.2 实验内容 
  11.3 实验步骤 
  11.4 实验提示信息 
  11.5 思考题 
第2部分 课程设计 
 项目1 简单计算器 
  1.1 目标与要求 
  1.2 分析 
  1.3 实现步骤 
  1.4 测试与思考 
 项目2 多项式相加问题 
  2.1 目标与要求 
  2.2 分析 
  2.3 实现步骤 
  2.4 测试与思考 
 项目3 平面游戏——陨石撞飞机 
  3.1 目标与要求  
  3.2 分析 
  3.3 实现步骤 
  3.4 测试与思考 
 项目4 基于OpenGL的三维动画设计——荡秋千 
  4.1 目标与要求 
  4.2 分析 
  4.3 实现步骤 
  4.4 测试与思考 
 项目5 电话号码簿 
  5.1 目标与要求 
  5.2 分析 
  5.3 实现步骤 
  5.4 测试与思考 
 项目6 纸牌游戏——“21点” 
  6.1 目标与要求 
  6.2 分析 
  6.3 实现步骤 
  6.4 测试与思考 
 项目7 音像店 
  7.1 目标与要求 
  7.2 分析 
  7.3 实现步骤 
  7.4 测试与思考 
 项目8 小小图书馆 
  8.1 目标与要求 
  8.2 分析 
  8.3 实现步骤 
  8.4 测试与思考 
 项目9 图像编辑器 
  9.1 目标与要求 
  9.2 分析 
  9.3 实现步骤 
  9.4 总结与思考 
 项目10 学生信息管理系统 
  10.1 目标与要求 
  10.2 分析 
  10.3 实现步骤 
  10.4 测试与思考 
第3部分 习题参考答案 
是否可以解决您的问题?
参考技术C 本书是《程序设计基础——C++》一书的配套用书,主要包含3部分内容:实验指导、课程设计和《程序设计基础——C++》的习题参考答案。
 
  在课程设计部分,包含1O个课程设计题目,选材丰富,趣味性强,知识点覆盖面宽,在实际项目的设计中具有较强的指导性,提供设计步骤和部分代码,并提出改进建议,引导读者在此基础上进一步改进和完善功能。
 在习题参考答案部分,提供《程序设计基础——C++》一书的全部习题答案,并对某些难度较大的习题给出分析或注释。
 本书可作为高等院校计算机专业本科教材。由于本书具有较强的指导性和实用性,也可作为计算机爱好者的自学用书。
目录:
第1部分 实验指导 
实验1 简单编程练习 
  1.1 实验目的与要求   
  1.2 实验内容 
  1.3 实验步骤 
  1.4 实验提示信息 
  1.5 思考题 
 实验2 控制结构编程练习 
  2.1 实验目的与要求 
  2.2 实验内容 
  2.3 实验步骤 
  2.4 实验提示信息 
  2.5 思考题 
 实验3 数组 
  3.1 实验目的与要求 
  3.2 实验内容 
  3.3 实验步骤 
  3.4 实验提示信息 
  3.5 思考题 
 实验4 函数 
  4.1 实验目的与要求 
  4.2 实验内容 
  4.3 实验步骤 
  4.4 实验提示信息 
  4.5 思考题 
 实验5 指针与字符串 
  5.1 实验目的与要求 
  5.2 实验内容 
  5.3 实验步骤 
  5.4 实验提示信息 
  5.5 思考题 
 实验6 结构及其他 
  6.1 实验目的与要求 
  6.2 实验内容 
  6.3 实验步骤 
  6.4 实验提示信息 
  6.5 思考题 
 实验7 类与对象 
  7.1 实验目的与要求 
  7.2 实验内容 
  7.3 实验步骤 
  7.4 实验提示信息 
  7.5 思考题 
 实验8 继承与派生 
  8.1 实验目的与要求 
  8.2 实验内容 
  8.3 实验步骤 
  8.4 实验提示信息 
  8.5 思考题 
 实验9 多态性 
  9.1 实验目的与要求 
  9.2 实验内容 
  9.3 实验步骤 
  9.4 实验提示信息 
  9.5 思考题 
 实验10 模板与异常 
  10.1 实验目的与要求 
  10.2 实验内容 
  10.3 实验步骤 
  10.4 实验提示信息 
  10.5 思考题 
 实验11 C++流与文件流 
  11.1 实验目的与要求 
  11.2 实验内容 
  11.3 实验步骤 
  11.4 实验提示信息 
  11.5 思考题 
第2部分 课程设计 
 项目1 简单计算器 
  1.1 目标与要求 
  1.2 分析 
  1.3 实现步骤 
  1.4 测试与思考 
 项目2 多项式相加问题 
  2.1 目标与要求 
  2.2 分析 
  2.3 实现步骤 
  2.4 测试与思考 
 项目3 平面游戏——陨石撞飞机 
  3.1 目标与要求  
  3.2 分析 
  3.3 实现步骤 
  3.4 测试与思考 
 项目4 基于OpenGL的三维动画设计——荡秋千 
  4.1 目标与要求 
  4.2 分析 
  4.3 实现步骤 
  4.4 测试与思考 
 项目5 电话号码簿 
  5.1 目标与要求 
  5.2 分析 
  5.3 实现步骤 
  5.4 测试与思考 
 项目6 纸牌游戏——“21点” 
  6.1 目标与要求 
  6.2 分析 
  6.3 实现步骤 
  6.4 测试与思考 
 项目7 音像店 
  7.1 目标与要求 
  7.2 分析 
  7.3 实现步骤 
  7.4 测试与思考 
 项目8 小小图书馆 
  8.1 目标与要求 
  8.2 分析 
  8.3 实现步骤 
  8.4 测试与思考 
 项目9 图像编辑器 
  9.1 目标与要求 
  9.2 分析 
  9.3 实现步骤 
  9.4 总结与思考 
 项目10 学生信息管理系统 
  10.1 目标与要求 
  10.2 分析 
  10.3 实现步骤 
  10.4 测试与思考 
第3部分 习题参考答案 

通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:

1、 系统以菜单方式工作。

2、 学生信息录入功能——输入。

3、 学生信息浏览功能——输出。

4、 学生信息查询功能——算法。

按学号查询;

按姓名查询。

     5、  学生信息的删除与修改


设计一个能实现学生信息管理系统,让它来运行和管理学生信息。它在现实生活中运用方便的、管理方便。它能输入学生学号、年龄、性别、出生年月、地址电话E-mail。系统以菜单的方式进行工作,进入子菜单后,还可以返回主菜单。在子菜单中的各种操作都有中文说明,操作简单、易懂。只要我们正确的操作系统,系统就无异常现在,当然系统也能对一些基本的错误做出提示,并能让使用者重新进行操作。

对各个操作的成功,如:添加学生信息、修改学生信息、删除学

生信息,系统都输出“…….的成功”的字样。系统对删除和修改前,还进行“确定”和“取消”。系统对不存在的学号和姓名系统能判断是否存在。对已存在的学号,操作者不能添加和这个学号一样的学生信息,同时系统还提示已有此学号。对于修改、删除和查询,系统遇到不存在的学生能提示没有这个信息。

#include<stdio.h>

struct student /*结构体*/

   {int num;

    char name[20];   //学号

    char sex[5];      //姓名

    int age;          //性别

    char bro[15];     //年龄

    char add[30];     //住址

    char phone[13];   //手机号

    char em[20];      //E-mail

    }stu[100];        //结构体名

 

 int looknum(int num) /*查看是否有这个学号的函数*/

 { int i;

   for(i=0;i<=100;i++)

   if(stu[i].num==num) return(num);

 }

 

tiaojia() /*添加信息函数*/

{ int num,num2,i,x;

G:printf("\t请输入学号:");

H:scanf("%d",&num);

V:if(num>100)

  {printf("\n这个学号太大了!\n请输入1--100 的学号:");

   scanf("%d",&num);

   if(num>100)goto V;

   printf("\n");

  }

  num2=looknum(num);

  if(num==num2)    /*判断这个学号是否存在*/

  {printf("\n这个学号已经存在,请重新输入另一个学号。");

   goto H;

  }

  i=num-1;

   stu[i].num=num;

  printf("\t请输入姓名:");

   scanf("%s",stu[i].name);

  printf("\t请输入性别:");

   scanf("%s",stu[i].sex);

  printf("\t请输入年龄:");

   scanf("%d",&stu[i].age);

  printf("\t请输入出生日期:");

   scanf("%s",stu[i].bro);

  printf("\t请输入住址:");

   scanf("%s",stu[i].add);

  printf("\t请输入手机号:");

   scanf("%s",stu[i].phone);

  printf("\t请输入E-maill");

   scanf("%s",stu[i].em);

  printf("\n\t<*添加信息成功*>\n\n");

  printf("\t1.继续添加\n");

  printf("\t2.退出添加\n");

  scanf("%d",&x);

  switch(x)

  {case 1:goto G;

   default:break;}

}

 

quanbu()/*输出全部信息函数*/

{int i;

 printf("\t\t全部学生信息如下\n\n");

 printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-mail\n");

 for(i=0;i<=100;i++) if(stu[i].num!=0)printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);

}

 

xiugai()/*修改信息函数*/

{ int x,y,num,num2;

K:printf("\t请输入要修改的学号:");

  scanf("%d",&num);

  num2=looknum(num);

  if(num==num2)     /*判断这个学号是否存在*/

  { printf("\n\t这个学号信息如下\n\n");

    printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-mail\n");

    printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em);

    printf("\n\t1.确认修改");

    printf("\n\t2.取消修改\n");

    scanf("%d",&x);

    if(x==1)

   {stu[num-1].num=num;

    printf("\t请输入姓名:");

     scanf("%s",stu[num-1].name);

    printf("\t请输入性别:");

     scanf("%s",stu[num-1].sex);

   printf("\t请输入年龄:");

     scanf("%d",&stu[num-1].age);

printf("\t请输入出生日期:");

     scanf("%s",stu[num-1].bro);

printf("\t请输入住址:");

     scanf("%s",stu[num-1].add);

printf("\t请输入手机号:");

     scanf("%s",stu[num-1].phone);

printf("\t请输入E-maill");

     scanf("%s",stu[num-1].em);

    printf("\n\t<*修改信息成功*>\n");

goto P;

}

else goto P;

  }

  else

  {printf("\n\t没有这个学号,你可能记错了!\n");

 P:printf("\n\t1.继续修改\n");

   printf("\t2.退出修改\n");

   scanf("%d",&y);

   switch(y)

   {case 1:goto K;

default:break;

   }

  }

}

 

void shanchu()/*删除信息函数*/

{int x=2,y=2,num,num2;

L:printf("\t请输入要删除的学号:");

  scanf("%d",&num);

  num2=looknum(num);

  if(num==num2)    /*判断这个学号是否存在*/

  {printf("\n\t这个学号信息如下\n\n");

   printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-mail\n");

   printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em);

   printf("\n\t1.确认删除");

   printf("\n\t2.取消删除\n");

   scanf("%d",&x);

   switch(x)

   {case 1:{stu[num-1].num=0;

        printf("\t<*删除信息成功*>\n");}

default:break;

   }

   goto D;

  }

  else

  {printf("\n\t没有这个学号,你可能记错了!\n");

  D:printf("\n\t1.继续删除\n");

   printf("\t2.退出删除\n");

   scanf("%d",&y);

   switch(y)

   {case 1:goto L;

    default:break;}

  }

}

 

 void chakan()/*查看信息函数*/

 {

   int x=1,y=2,z=2,i,num,num2;

   char name,name2;

   printf("\t1.按学号查询\n\t2.按姓名查询\n");

   scanf("%d",&x);      /*输入查看方式*/

   if(x==1)             /*学号查询*/

   {

 M:printf("\t请输入查看的学号:");

   scanf("%d",&num);

   num2=looknum(num);

   if(num==num2)    /*判断这个学号是否存在*/

   {printf("\t这个学号信息如下\n\n");

    printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-mail\n");

    printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,stu[num-1].name,stu[num-1].sex,stu[num-1].age,stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em);

    goto J;

   }

   else

   {printf("\n\t没有这个学号,你可能记错了!\n");

 J: printf("\n\t1.继续查看\n");

    printf("\t2.退出查看\n");

    scanf("%d",&y);

    switch(y)

{case 1:goto M;

     default:break;

}

  }

 }

 if(x==2)              /*姓名查询*/

 {

U:printf("\t请输入查看的姓名:");

  scanf("%s",&name);

  for(i=0;i<=100;i++)

  {if(strcmp(&stu[i].name,&name)==0)/*字符串比较*/

   if(stu[i].num!=0)     /*判断这个学号是否存在*/

   {printf("\t这个姓名信息如下\n\n");

    printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-mail\n");

    printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);

    goto Q;

   }

  }

  if(i==101)

  {printf("\n\t没有这个姓名,你可能记错了!\n");

Q: printf("\n\t1.继续查看\n");

   printf("\t2.退出查看\n");

   scanf("%d",&z);

   switch(z)

   {case 1:goto U;

    default:break;}

  }

 }

}

 

main()/*主函数*/

{ int a;

  printf("\n\t*编辑系统--XXXX*\n\n");

  printf("\t 未经允许,不得使用\n");

  printf("\t\n");

T:printf("\n\n\t 1.添加学生信息\n\t 2.全部学生信息\n\t 3.修改学生信息\n\t 4.删除学生信息\n\t 5.查看学生信息\n\t 6.退出系统\n");

  scanf("%d",&a);

  switch(a)

  {case 1:tiaojia();goto T;

   case 2:quanbu();goto T;

   case 3:xiugai();goto T;

   case 4:shanchu();goto T;

   case 5:chakan();goto T;

   case 6:break;

   default: printf("\t你的输入不正确,请再次输入:\n");goto T;

  }

  printf("\t谢谢您对本系统的支持和使用\n\n");

  

  printf("\t2012429\n\n\n\n\n\n\n\n\n\n\n\n\n");

 }




以上是关于C++设计一个学生信息管理系统的主要内容,如果未能解决你的问题,请参考以下文章

求用C语言编写一个简单的学生信息管理程序【 C++】网上之前有C 的好像

学生信息管理系统C语言编程

学生信息管理系统(C语言)

C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。

C# 设计一个学生信息管理程序(控制台程序)

JAVA课程设计,设计一个学生基本信息管理系统,有没有大佬可以帮我,急!!!!