IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 学生学籍系统 按班级查找按学号查找 -> 正文阅读

[C++知识库]学生学籍系统 按班级查找按学号查找

#include<iostream>
#include<fstream>
#include<iomanip>
#include<stdlib.h>
#include<Windows.h>
#include<conio.h>
using namespace std ;
#define HEADER1 " ? ? ?--------------------------------学生成绩---------------------------- \n"
#define HEADER2 " ? ? | ? 学号 ? | ?班级 ?| ? 姓名 ? | ? 性别 ? | ? 年龄 ? | ? 系别 ? | ?要求完成学分 ?| ?已完成学分 ?| 入学日期 |\n"
#define HEADER3 " ? ? |----------|----------|----------|----------|----------|----------|----------|----------|----------|\n"
int num; //学生总数
class Student ? ? ? ? ? ? //定义学生类
{
public:
? ? ?char id[20];//学号 ? ? ?
? ? ?char group[20];//班级
? ? ?char name[20] ;//名字
? ? ?char sex[5] ;//性别
? ? ?int age ;//年龄
? ? ?char xibie[20] ;//系别
? ? ?char score[5];//学分(要求完成)
?? ? char xuefen[5];//学分(已完成)
? ? ?char day[20];//入学日期
? ? ?Student *next ;
? ? ?void input() ;//输入函数
? ? ?void ReadFile(istream & in) ;//读取文件
? ? ?void show() ;//显示方法?
};
? ? ?
void Student::input() ? ? //输入学生信息函数
{
?? ?cout<<"\t\t学号:" ;
?? ?cin>>id ;
?? ?cout<<"\t\t班级: " ;
?? ?cin>>group ;
?? ?cout<<"\t\t姓名:" ;
?? ?cin>>name ;
?? ?cout<<"\t\t性别:" ;
?? ?cin>>sex ;
?? ?cout<<"\t\t年龄:" ;
?? ?cin>>age ;
?? ?cout<<"\t\t系别:" ;
?? ?cin>>xibie ;
?? ?cout<<"\t\t要求完成学分:";
?? ?cin>>score ;
?? ?cout<<"\t\t已完成学分:";
?? ?cin>>xuefen ;
?? ?cout<<"\t\t入学日期(格式:xxxx-xx-xx)";
?? ?cin>>day ;
}
? ? ?
void Student::ReadFile(istream & in) ? ? ? ?//读取文件
{
?? ?in>>id>>group>>name>>sex>>age>>xibie >>score>>xuefen>>day;
}
? ??

void Student::show() ? ? ? ? ?//输出学生信息
{
?? ?cout<<" ? ? |"<<setw(5)<<id<<" ? ? |"<<setw(5)<<group
?? ??? ?<<" ? |"<<setw(5)<<name<<" ? ? |"<<setw(8)<<sex
?? ??? ?<<" ?|"<<setw(6)<<age<<" ? ?|"<<setw(6)<<xibie
?? ??? ?<<" ? ?|"<<setw(5)<<score<<"|"<<setw(5)<<xuefen
?? ??? ?<<"|"<<setw(10)<<day<<"|"<<endl ;
?? ?cout<<" ? ? |----------|----------|----------|----------|----------|----------|----------|----------|----------|\n" ;
}

class StudentMassage ? ? ?//定义学生信息类,包含各项处理功能
{
public:
?? ?StudentMassage() ;
?? ?~StudentMassage() ;
?? ?void ShowMenu() ;
?? ?void Display() ;
?? ?void AddItem() ;
?? ?void Find() ;
?? ?void save() ;
?? ?void ModifyItem() ;
?? ?void RemoveItem() ;
?? ?void Swap(Student *p1 , Student *p2) ;
?? ?void Sort() ;
?? ?int ListCount() ;
?? ?int Count() ;
private:
?? ?Student *Head , *End ;
?? ?ifstream in ;
?? ?ofstream out ;
?? ?Student *FindItem(char *id) ;//查找(按学号查询)?? ?
?? ?int FindId(char *group) ;//查找(按班级查询)
};

Student *StudentMassage::FindItem(char *id)//(查学号)
{
?? ?Student *p ;
?? ?for(p = Head ; p->next != End ; p = p->next)
?? ??? ?if(!strcmp(p->next->id ,id))
?? ??? ??? ?return p ;
?? ?return NULL ;
}

int StudentMassage::FindId(char *group)//(查班级)
{
?? ?int t=0;
?? ?Student *p ;
?? ?for(p = Head ; p->next != End ; p = p->next)
?? ??? ?if(!strcmp(p->next->group ,group))
?? ??? ?{
?? ??? ??? ?p->next->show() ;
?? ??? ??? ?cout<<endl;
?? ??? ??? ?t++ ;
?? ??? ?}
?? ?return t ;
}

StudentMassage::StudentMassage() ? //构造函数
{
?? ?Head = new Student ;
?? ?Head->next = new Student ;
?? ?End = Head->next ;
?? ?in.open("学生成绩.txt") ;
?? ?if(!in)
?? ??? ?cout<<"\n\t\t这是一个新系统,目前无学生信息,请自行输入。"<<endl ;
?? ?else
?? ?{
?? ??? ?while(!in.eof())
?? ??? ?{
?? ??? ??? ?End->ReadFile(in) ;
?? ??? ??? ?if(End->name[0]=='\0')
?? ??? ??? ??? ?break ;
?? ??? ??? ?End->next = new Student ;
?? ??? ??? ?End = End->next ;
?? ??? ?}
?? ??? ?in.close() ;
?? ??? ?cout<<"\n\t\t读取学生信息成功!"<<endl ;
?? ?}
}

StudentMassage::~StudentMassage() ? ? ? //析构函数
{
?? ?Student *temp ;
?? ?save() ;
?? ?for(temp ; Head->next != End ; )
?? ?{
?? ??? ?temp = Head->next ;
?? ??? ?Head -> next = Head ->next->next ;
?? ??? ?delete temp ;
?? ?}
?? ?delete Head , End ;
}

void StudentMassage::ShowMenu() ? ? ? ? ? ? ? ? ? ? ?//显示菜单
{
?? ?cout<<"\n\n\t\t\t\t 主菜单"<<endl<<endl<<endl ;
?? ?cout<<"\t\t****************************************"<<endl<<endl ;
?? ?cout<<"\t\t1、增加学生信息 ? ? ? ? ?2、显示学生信息"<<endl<<endl ;
?? ?cout<<"\t\t3、删除学生信息 ? ? ? ? ?4、修改学生信息"<<endl<<endl ;
?? ?cout<<"\t\t5、保存学生信息 ? ? ? ? ?6、查询学生信息"<<endl<<endl ;
?? ?cout<<"\t\t0、系统安全退出 ? ? ? ? ? ? ? ? ? ? ? ? "<<endl<<endl ;
?? ?cout<<"\t\t****************************************"<<endl<<endl<<endl ;
?? ?cout<<"\t\t请选择:" ;
}

void StudentMassage::Display() ? ? ? ? ? ?//显示学生信息
{
?? ?Student *p ?;
?? ?cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;
?? ?for(p = Head->next ; p != End ; p = p->next)
?? ??? ?p->show() ;
?? ?cout<<"\n\n输入任意字符,继续......" ;
?? ?getch() ;
}

void StudentMassage::AddItem() ? ? ?//添加学生信息
{
?? ?End->input() ;
?? ?End->next = new Student ;
?? ?End = End->next ;
?? ?cout<<"\n\t\t添加成功!"<<endl ;
?? ?cout<<"\n输入任意字符,继续......" ;
?? ?getch() ;
}

void StudentMassage::Find() ? ?//查找函数
{
?? ?char id[20] , group[20] ;
?? ?int x ;
?? ?Student *p = NULL ;
?? ?cout<<"\n\t\t****************************************\n" ;
?? ?cout<<"\t\t\t ?1、按学生学号查询"<<endl ;
?? ?cout<<"\t\t\t ?2、按学生班级查询"<<endl ;
?? ?cout<<"\n\t\t****************************************\n\n\t\t请选择:" ;
?? ?cin>>x ;
?? ?switch(x)
?? ?{
?? ?case 1: ? ? ? ? ? ? ? ? ? ? //按学号查询?? ??? ?
?? ??? ?cout<<"\n\t\t请输入要查询的学生的学号:" ;
?? ??? ?cin>>id ;
?? ??? ?if(p = FindItem(id))
?? ??? ?{
?? ??? ??? ?cout<<endl<<HEADER1<<HEADER2<<HEADER3 ;
?? ??? ??? ?p->next->show() ;
?? ??? ??? ?cout<<"\n请输入任意字符,继续......" ;
?? ??? ??? ?getch() ;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?cout<<"\t\t没有找到该学号的学生!"<<endl<<endl ;
?? ??? ??? ?cout<<"请输入任意字符,继续......" ;
?? ??? ??? ?getch() ;
?? ??? ?}
?? ??? ?break ;
?? ?case 2: ? ? ? ? ? ? ? ? ? ? ?//按班级查询
?? ??? ?cout<<"\n\t\t请输入要查询的学生的班级:" ;
?? ??? ?cin>>group;?? ?
?? ??? ?if (!FindId(group))
?? ??? ?{
?? ??? ??? ?cout<<"\n\t\t没有找到该班级的学生!"<<endl<<endl ;
?? ??? ??? ?cout<<"请输入任意字符,继续......" ;
?? ??? ??? ?getch() ;?? ??? ??? ?
?? ??? ?}
?? ??? ?StudentMassage::ShowMenu() ;
?? ??? ?cout<<"\n请输入任意字符,继续......" ;
?? ??? ?getch() ;
?? ??? ?break ;
?? ?}
}

void StudentMassage::ModifyItem() ? ? //修改学生信息(指定学号)
{
?? ?char name[20] ;
?? ?Student *p = NULL ;
?? ?cout<<"\n\t\t请输入要修改的学生的学号:" ;
?? ?cin>>name ;
?? ?if(p = FindItem(name))
?? ?{
?? ??? ?cout<<"\n\t\t已找到该学生,请输入新的信息!"<<endl ;
?? ??? ?p->next->input() ;
?? ??? ?cout<<"\n\t\t修改成功!"<<endl ;
?? ??? ?Display() ;
?? ?}
?? ?else
?? ?{
?? ??? ?cout<<"\n\t\t没有找到!"<<endl ;
?? ??? ?cout<<"\n输入任意字符!继续......." ;
?? ??? ?getch() ;
?? ?}
}

void StudentMassage::RemoveItem() ? ? ?//删除学生信息
{
?? ?char name[20] ;
?? ?Student *p = NULL , *temp = NULL ;
?? ?cout<<"\n\t\t请输入要删除的学生的学号:" ;
?? ?cin>>name ;
?? ?if(p = FindItem(name))
?? ?{
?? ??? ?temp = p->next ;
?? ??? ?p->next = p->next->next ;
?? ??? ?delete temp ;
?? ??? ?cout<<"\n\t\t删除成功!"<<endl ;
?? ??? ?Display() ;
?? ?}
?? ?else
?? ?{
?? ??? ?cout<<"\t\t没有找到!"<<endl ;
?? ??? ?cout<<"输入任意字符!继续......" ;
?? ??? ?getch() ;
?? ?}
}

int StudentMassage::ListCount() ? //返回记录的学生总数
{
?? ?Student *p ;
?? ?int n = 0 ;
?? ?if(!Head)
?? ??? ?return 0 ;
?? ?for(p = Head->next ; p != End ; p = p->next)
?? ??? ?n ++ ;
?? ?num = n;
?? ?return num ;
}

int StudentMassage::Count() ? ? ? ? //成绩统计
{
?? ?Student *p ;
?? ?int x ,count = 0 ;
?? ?if(!Head)
?? ?{
?? ??? ?cout<<"\n\t\t没有资料可以统计!"<<endl ;
?? ??? ?return 0 ;
?? ?}
}

void StudentMassage::Swap(Student *p1 , Student *p2) ? ? ? //交p1,p2学生信息
{
?? ?Student *temp = new Student ;
?? ?strcpy(temp->name , p1->name) ;
?? ?strcpy(temp->id , p1->id) ;
?? ?strcpy(p1->name , p2->name) ;
?? ?strcpy(p1->id , p2->id) ;
?? ?strcpy(p2->name , temp->name) ;
?? ?strcpy(p2->id , temp->id) ;
}

void StudentMassage::save() ? ? ? ? ? ? ? ? ? ?//存入文件(学生成绩.txt)
{
?? ?out.open("学生成绩.txt");
?? ?for(Student *p=Head->next;p!=End;p=p->next)
?? ??? ?out<<p->id<<"\t"<<p->group<<"\t"<<p->name<<"\t"
?? ??? ?<<p->sex<<"\t"<<p->age<<"\t"<<p->xibie<<"\t"
?? ??? ?<<p->score<<"\t"<<p->xuefen<<"\t"<<p->day<<"\t"<<'\n';
?? ?out.close();
?? ?cout<<"\n\t\t学生成绩文件保存成功!"<<endl ;
?? ?cout<<"\n输入任意字符,继续......" ;
?? ?getch() ;
}

int main( )
{
?? ?int x ;
?? ?bool quit = false ;
?? ?cout<<"\n\n\n\n\n\n\n\n" ;
?? ?cout<<"\t\t********************************************"<<endl ;
?? ?cout<<"\t\t ? ? ? ? 欢迎使用学生信息管理系统!"<<endl ;
?? ?cout<<"\t\t********************************************"<<endl ;
?? ?StudentMassage Grade ;
?? ?Sleep(1000) ;
?? ?while(!quit)
?? ?{
?? ??? ?system("cls") ;
?? ??? ?Grade.ShowMenu() ;
?? ??? ?cin>>x ;
?? ??? ?switch(x)
?? ??? ?{
?? ??? ?case 0:quit = true ; break ;
?? ??? ?case 1:Grade.AddItem() ; break ;
?? ??? ?case 2:Grade.Display() ; break ;
?? ??? ?case 3:Grade.RemoveItem(); break ;
?? ??? ?case 4:Grade.ModifyItem(); break ;
?? ??? ?case 5:Grade.save() ; break ;
?? ??? ?case 6:Grade.Find() ; break ;
?? ??? ?}
?? ?}
?? ?return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-20 15:36:17  更:2021-09-20 15:37:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 14:07:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计