学生管理系统源码C++

舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。

下面是一段C++的学生管理系统源码,可直接运行在软件上。

#include<iostream>
#define N 20
using namespace std;
struct student{
int number;
int age;
int score;
char sex[8];
char name[20];};
struct student xx[N];
void main(){
int select;
select=1;
cout<<"                 姓名**  ***********学号  ***班"<<endl;
cout<<endl<<endl;
cout<<"                  ________________________________"<<endl;
cout<<"                  **                            **"<<endl;
cout<<"                  **欢迎进入学生管理系统**"<<endl;
cout<<"                  **                            **"<<endl;
cout<<"                  ________________________________"<<endl;
while(select){
          cout<<endl<<endl;
          cout<<"             请选择您的操作;"<<endl<<endl;
          cout<<"             1.输入学生信息;"<<endl;
          cout<<"             2.查找学生信息;"<<endl;
          cout<<"             3.修改学生信息;"<<endl;
          cout<<"             4.删除学生信息;"<<endl;
          cout<<"             5.增加学生信息;"<<endl;
          cout<<"             6.按学号小到大排序;"<<endl;
          cout<<"             7.对学生信息分页列表;"<<endl;
          cout<<"             0.退出;"<<endl;
          cout<<"             请选择按键(0~7)";
          cin>>select;
          cout<<endl;
             if(select>=0&&select<=7)
			 {
                switch (select)
				{
     case 1:           //输入学生信息
        int i;
        for( i=0;i<N;i++)
		{
           cout<<"请输入学号";
           cin>>xx[i].number;
           cout<<"请输入年龄";
           cin>>xx[i].age;
           cout<<"请输入成绩";
           cin>>xx[i].score;
           cout<<"请输入性别";
           cin>>xx[i].sex;
           cout<<"请输入姓名";
           cin>>xx[i].name;
           char tem;
           cout<<"是否退出,按n退出,其他任意键继续";
           cin>>tem;
           if(tem=='n')
           break;
           if(tem!='n') 
           continue;
		}
          break;
    case 2:             //查找学生信息
         int searchN;
         cout<<"请输入要查找的学号:";
         cin>>searchN;
         for(i=0;i<N;i++)
		 {
           if(searchN==xx[i].number)
		   {
         cout<<"学号:"<<xx[i].number;
         cout<<"\t年龄:"<<xx[i].age;
         cout<<"\t成绩:"<<xx[i].score;
         cout<<"\t性别:"<<xx[i].sex;
         cout<<"\t姓名:"<<xx[i].name<<endl;
		   }
		 }
         if(searchN==N)
         cout<<"没有找到";
         break;
    case 3:              //修改学生信息
       int moD;
       cout<<"请输入要修改的学号:"<<endl;
       cin>>moD;
       for(i=0;i<N;i++)
    {
       if(moD==xx[i].number)
    {  
          cout<<"请输入改正后的学生学号:"; 
          cin>>xx[i].number;
          cout<<"\t请输入改正后的学生年龄:";     
          cin>>xx[i].age;
          cout<<"\t请输入改正后的学生成绩:";
          cin>>xx[i].score;
          cout<<"\t请输入改正后的学生性别:"; 
          cin>>xx[i].sex;
          cout<<"\t请输入改正后的学生姓名:"<<endl; 
          cin>>xx[i].name;
          cout<<"修改成功"<<endl;
              break;
	   }
          else  
          cout<<"没有找到:"<<endl;   
	   }
           break;
    case 4:            //删除学生信息
        int delM;
        cout<<"请输入要删除的学号:"<<endl;
        cin>>delM;
        for(i=0;i<N;i++)
		{
           if(delM==xx[i].number)
		   { 
              for(int j=i;j<N;j++)
			  {
              xx[j]=xx[j+1]; 
			  }
                cout<<"已成功删除该学生信息."<<endl;  
                break; 
		   }
            if(delM!=xx[i].number)
               cout<<"没有该学生信息."<<endl;
             break;
		}
          break;
    case 5:            //增加学生信息
                for(i=0;i<N;i++)
    {
                   xx[i+1]=xx[i]; 
           cout<<"请输入要添加的学号";
           cin>>xx[i].number;
           cout<<"请输入要添加的年龄";
           cin>>xx[i].age;
           cout<<"请输入要添加的成绩";
           cin>>xx[i].score;
           cout<<"请输入要添加的性别";
           cin>>xx[i].sex;
           cout<<"请输入要添加的姓名";
           cin>>xx[i].name;
           cout<<"已成功增加该学生信息."<<endl;
       break;
             }
           break;
    case 6:             //按学号小到大排序
       struct student t;
       for(i=1;i<N;i++)
       for(int j=0;j<N-i;j++)
    { 
           if(xx[j].number>xx[j+1].number)
		   {
               t=xx[j];
               xx[j]=xx[j+1];
               xx[j+1]=t;
		   }
	   }
               for(i=0;i<N;i++)
			   {
                 cout<<"学号:"<<xx[i].number;
                 cout<<"\t年龄:"<<xx[i].age;
                 cout<<"\t成绩:"<<xx[i].score;
                 cout<<"\t性别:"<<xx[i].sex;
                 cout<<"\t姓名:"<<xx[i].name<<endl;
			   }
               break;
     case 7:            //对学生信息分页列表
                for(i=0;i<N;i=i+5){
                  for(int j=i;j<i+5;j++)
				  {
                        if(xx[j].number==0)
						{
                     break;
						}
                 cout<<"学号:"<<xx[j].number;
                 cout<<"\t年龄:"<<xx[j].age;
                 cout<<"\t成绩:"<<xx[j].score;
                 cout<<"\t性别:"<<xx[j].sex;
                 cout<<"\t姓名:"<<xx[j].name<<endl;
				  }
   
             cout<<"按数字'1'翻到下页,按数字'2'退出";
             int x;
             cin>>x;
             if(x==1)
             continue;
             if(x==2)
             break;
             if(x!=1&&x!=2)
             cout<<"输入错误"<<endl;
             break;
				}
     case 0:         //退出
       break;
         }
       } 
      else
	  {
              cout<<"输入有误"<<endl;
                continue;
	  }
  }
}

运行效果图如下:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
学生管理系统程序 #include <iostream> using namespace std; #include <stdlib.h> double avg=0;//统计总分和加平均分权 const int mathp=4;//数学学分 const int cppp=5;//C++学分 const sum=70;//设置总学分 class Student { private: int num; char *name; char *sex; char *phone; char *rphone; double math; double cpp; Student* next; public: Student() {next=NULL;} ~Student(); void Push(Student **refhead,int num,char *name,char *sex,char *phone,char *rphone,double math,double cpp); void Delete(Student *head,int data); Student* Find(Student* head,int data); void Display(Student* head); int Length(Student* head); void Math(Student* head,int data); void Update(Student* head,int data); void Insert(); }; Student* head=new Student;//带头结点的头指针 void Student::Push(Student **refhead,int num,char *name,char *sex,char *phone,char *rphone,double math,double cpp) { Student* newnode=new Student;//新增加结点 newnode->num=num; newnode->name=name; newnode->sex=sex; newnode->phone=phone; newnode->rphone=rphone; newnode->math=math; newnode->cpp=cpp; newnode->next=*refhead; *refhead=newnode;//重置表头 } //遍历 void Student::Display(Student* head) { Student* temp; temp=head; if(temp->next==NULL)//判断空表 cout<<"没有学生!"; else {while(temp!=NULL)// { cout<<"学号:"<<temp->num<<"姓名:"<<temp->name<<"性别:"<<temp->sex<<"手机:"<<temp->phone<<"宿舍电话:"<<temp->rphone<<"数学成绩:"<<temp->math<<"C++成绩:"<<temp->cpp<<endl; temp=temp->next; } } return; } //人数 int Student::Length(Student* head) { Student* cur; cur=head; int count=0; while(cur!=NULL) { count++;//通过累加统计人数 cur=cur->next; } return count; } //查找 Student* Student::Find(Student* head,int data) { Student* cur=head; bool bo=false; while(cur!=NULL) { if(cur->num=data) { bo=true;//如果找到则改变bo的值 cout<<"学号:"<<cur->num<<"姓名:"<<cur->name<<"性别:"<<cur->sex<<"手机:"<<cur->phone<<"宿舍电话:"<<cur->rphone<<"数学成绩:"<<cur->math<<"C++成绩:"<<cur->cpp<<endl; break; } cur=cur->next; } if(bo==false)//通过判断bo的值判断找到与否 cout<<"没有这个人!"<<endl; return cur; } //删除 void Student::Delete(Student* head,int data) { Student *bef,*cur; bef=cur=head; while(cur!=NULL) { if(cur->num==data) break; else {bef=cur;cur=cur->next;} } if(cur==head)//如果是头结点则删除头结点 { head=cur->next; delete cur; } else { bef->next=cur->next; delete cur; } } //修改 void Student::Update(Student* head,int data) { Student* cur=head; bool bo=false; while(cur!=NULL) { if(cur->num==data) { bo=true; int a,b; char *c; double d; for(;;) //找到后提供各字段的修改 { cout<<"1修改学号|2修改姓名|3修改性别|4修改手机号|5修改宿舍电话号|6修改数学成绩|7修改C++成绩|8退出\n"; cin>>a; switch(a) { case 1:cout<<"输入新学号:"; cin>>b; cur->num=a; break; case 2:cout<<"输入新姓名:"; cin>>c; cur->name=c; break; case 3:cout<<"输入新性别:"; cin>>c; cur->sex=c; break; case 4:cout<<"输入新手机号:"; cin>>c; cur->phone=c; break; case 5:cout<<"输入新宿舍电话号:"; cin>>c; cur->rphone=c; break; case 6:cout<<"输入新数学成绩:"; cin>>d; cur->math=d; break; case 7:cout<<"输入C++成绩:"; cin>>d; cur->cpp=d; break; case 8:exit(1); break; default:cout<<"操作错误"; break; } } break; } } if(bo==false) cout<<"没有这个人!"<<endl; return; } //统计 void Student::Math(Student* head,int data) { Student* cur=head; bool bo=false; while(cur!=NULL) { if(cur->num=data) { bo=true; avg=cur->math*(mathp/sum)+cur->cpp*(cppp/sum);//计算总分和加平均分权的公式 break; } cur=cur->next; } if(bo==false){ cout<<"没有这个人!"<<endl; return; } cout<<"该生的总分和加平均分权="<<avg<<endl; return; } //录入 void Student::Insert() { head=NULL; int num; char name[8]; char sex[4]; char phone[11]; char rphone[7]; double math; double cpp; cout<<"请输入基本信息:\n"; cout<<"学号:"; cin>>num; cout<<"姓名:"; cin>>name; cout<<"性别:"; cin>>sex; cout<<"手机号:"; cin>>phone; cout<<"宿舍电话:"; cin>>rphone; cout<<"数学成绩:"; cin>>math; cout<<"C++成绩:"; cin>>cpp; Push(&head,num,name,sex,phone,rphone,math,cpp);//调用函数Push建立有序链表 } //用释构函数逐个释放空间 Student::~Student() { while(head!=NULL) { delete head; head=head->next; } } //程序主入口 void main() { for(;;) { head=NULL; Student s; int x; int data; cout<<"|1录入|2查找|3删除|4修改|5统计|6退出|\n"; cout<<"请作选择:\n"; cin>>x; switch(x) { case 1: start: s.Insert(); cout<<"继续吗?[Y/N]"; char ch; cin>>ch; if(ch=='y' || ch=='Y') goto start; s.Display(head); int l; l=s.Length(head); cout<<"一共有"<<l<<"个学生。"<<endl; break; case 2: cout<<"请输入你要查找的学生的学号:"; cin>>data; s.Find(head,data); break; case 3: cout<<"请输入你要删除的学生的学号:"; cin>>data; s.Delete(head,data); break; case 4: cout<<"请输入你要修改的学生的学号:"; cin>>data; s.Update(head,data); break; case 5: cout<<"请输入你要统计的学生的学号:"; cin>>data; s.Math(head,data); break; case 6: exit(1); break; default:cout<<"操作错误!"<<endl; break; } }}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码~小~哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值