用c++ 写一个学生管理系统,不要那种低级的哦~~~谢谢 用C++编写一个学生管理系统

作者&投稿:燕枝 (若有异议请与网页底部的电邮联系)
/*好吧,其实你可以上网看看,那么多的,你可以自己修改下*/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student   
{
 char name[20];
 long int num;
 char sex[4];
 int age;
 char address[30];
 double tele_num;
 char aihao[20];
 struct student *next;
};//定义一个结构题
int TOTAL_NUM = 0;//学生总数
struct student *head = NULL;
void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct student *stu); //插入数据
void display(struct student *stu); //显示一个学生的信息
void displayAll (); //显示所有学生的信息
void query_by_num (); //按学号查询学生信息
void readData (); //读取文件里学生的信息
void writeData (); //向文件写入学生信息
void freeAll (); //清空链表内容
void del (); //删除学生信息
void change (); //更改学生信息
void devise (struct student *p); //选择更改内容
int main (void)
{
    welcome ();
 //显示主菜单
    mainmenu ();
 return 0;
}
//显示欢迎信息
void welcome ()
{
    printf ("+----------------------------------------------------+
");
    printf ("|                                                    |
");
    printf ("|  欢迎使用网络工程学院信息安全092班学生信息管理系统 |
");
    printf ("|                                                    |
");
    printf ("+----------------------------------------------------+
");
}
//系统主菜单
void mainmenu ()
{
    int choice;
    choice = -1;
    readData ();
 printf ("
温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^
");
    do
    {
        printf ("


");
        printf ("--------------------------------------------
");
  printf ("+        信息安全092班学生信息管理系统      |
");  
  printf ("--------------------------------------------
");               
  printf ("+        [1]----录入学生信息                |
");
  printf ("+        [2]----浏览学生信息                |
");
  printf ("+        [3]----查询学生信息                |
");
  printf ("+        [4]----删除学生信息                |
");
  printf ("+        [5]----修改学生信息                |
");
  printf ("+        [0]----退出系统                    |
");
  printf ("+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|
");
  printf ("--------------------------------------------
");
        printf ("请输入您的选择:");
        scanf ("%d", &choice);
        switch (choice)
        {
            case 0:
    writeData ();
    freeAll ();
                exit (0);
   case 1:
                record ();
                break;
   case 2:
                displayAll ();
                break;
   case 3:
                query_by_num ();
                break;  
   case 4:
                del ();
                break; 
   case 5:
                change ();
                break; 
            default:
                printf ("
无效选项!");
                break;
        }
    }
    while (choice != 0);
}
//录入学生信息
void record ()

 struct student *p0;   
 
 p0 = (struct student *)malloc(LEN);
 printf ("请输入学生的姓名:");
 scanf ("%s",p0->name);    
 printf ("请输入学生的学号:");
 scanf ("%ld",&p0->num);
 printf ("请输入学生的性别:");
 scanf ("%s",p0->sex);
 printf ("请输入学生的年龄:");
 scanf ("%d",&p0->age);
 printf ("请输入学生的地址:");
 scanf ("%s",p0->address);
 printf ("请输入学生的电话:");
 scanf ("%lf",&p0->tele_num);
  printf ("请输入学生的爱好:");
 scanf ("%s",p0->aihao);
    
 insert (p0);
 printf ("该学生的信息为:
");
  printf ("-------------------------------------------------------------------------------
");
 printf ("姓名学号年龄性别地址电话爱好
");
 display (p0);
}
void insert (struct student *stu)
{
 struct student *p0, *p1, *p2;
 
 p1 = head;
 p0 = stu;
 
 if (head == NULL)
 {
  head = p0;
  p0->next = NULL;
 }
 else
 {
  while ((p0->num > p1->num)&&(p1->next != NULL))
  {
   p2 = p1;
   p1 = p1->next;
  }
  if (p0->num <= p1->num)
  {
   if (head == p1)
   head = p0;
   else
   p2->next = p0;
   p0->next = p1;
  }
  else
  {
   p1->next = p0;
   p0->next = NULL;
  }  
 } 
 TOTAL_NUM++;
}
void display (struct student *p)
{
 printf ("%s%ld%d%s%s%.0f%s
", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->aihao);
}
//浏览学生信息
void displayAll()
{
 struct student *p;
 printf("学生总数:%d
", TOTAL_NUM);
 p = head; 
 if (head != NULL)
 { 
  printf("
姓名学号年龄性别地址电话爱好
");
  printf("-------------------------------------------------------------------------------
");
  do
  {
   display(p);
   p = p->next;
  }
  while(p != NULL);
 } 
 printf ("
");
}
//按学号查询学生信息
void query_by_num ()
{
 int num;
 struct student *p1;
 printf("请输入学生的学号:");
 scanf("%ld", &num);
 if(head==NULL)
 {
  printf("无学生记录!
");
  return;
 } 
 p1 = head;
 while (num!=p1->num && p1->next!=NULL)
 p1 = p1->next; 
 if (num == p1->num)
 { 
  printf ("姓名学号年龄性别地址电话爱好
");
  printf ("-------------------------------------------------------------------------------
");
  display (p1);
 } 
 else
 printf ("没有该学生记录,请核对!");
}
//写入文件
void writeData ()
{
 FILE*  fp;//文件指针 
 struct student *p;
    fp = fopen("1.txt", "w");
    if (!fp)
    {
  printf("文件打开错误!");
  return;
    }
 fprintf(fp,"%d
", TOTAL_NUM);
    for(p = head; p!= NULL; p= p->next)
    {
        fprintf(fp,"%s%ld%s%d%s%.0f%s
", p->name, p->num, p->sex, p->age, p->address, p->tele_num, p->aihao);
    }
    fclose (fp); 
}
void freeAll ()
{
 struct student *p1, *p2;
 p1 = p2=head; 
 while(p1)
 {
  p2=p1->next;
  free (p1);
  p1 = p2;
 } 
}
//读取文件
void readData ()
{
 FILE*  fp;//文件指针 
 struct student *p1, *p2; 
    fp = fopen("1.txt", "r");
    if (!fp)
    {
  printf("文件打开错误!");
        return;
    }
 
 fscanf(fp,"%d
", &TOTAL_NUM);
 head = p1 = p2 = (struct student *)malloc(LEN);
 fscanf(fp,"%s%ld%s%d%s%lf%s
", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
 while(!feof(fp))
 {
  p1 = (struct student *)malloc(LEN);
  fscanf(fp,"%s%ld%s%d%s%lf%s
", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
  p2->next = p1;
  p2 = p1;
 }
 p2->next = NULL;
 fclose(fp);
}
//删除学生信息
void del ()
{
 struct student *p1, *p2;
 long int num;
 
 if (head == NULL)
 {
  printf("无学生记录!
");
  return;
 }
 printf("请输入您要删除的学生的学号:");
 scanf("%ld", &num);
 p1 = head;
 
 while (num != p1->num && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;  
 }
 if(num == p1->num)
 {
  if(p1 == head)
  head = p1->next;
  else p2->next = p1->next;
  free(p1);
  TOTAL_NUM--;
 }
 else
 printf("没有该学生记录,请核对!
");
}
//修改学生信息
void change ()
{
 struct student *p1, *p2;
 long int num;
 if (head == NULL)
 {
  printf ("无学生记录!
");
  return;
 }
 printf ("请输入您要修改的学生的学号:");
 scanf ("%ld", &num);
 p1 = head; 
 while (num != p1->num && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;  
 }
 if(num == p1->num)
 devise (p1); 
 else
 printf("没有该学生记录,请核对!
");
}
void devise (struct student *p)
{
 int choice;
    choice = -1;
    do
    {
        printf("请选择您要修改的学生的信息内容:
");
        printf("+----------------------+
");        
        printf("| 姓名          请按 1 |
");
        printf("| 学号          请按 2 |
");
  printf("| 性别          请按 3 |
");
  printf("| 年龄  请按 4 |
");
  printf("| 地址          请按 5 |
");
  printf("| 电话          请按 6 |
");
  printf("| 爱好  请按 7 |
");
  printf("| 取消          请按 0 |
");
        printf("+----------------------+
");
        printf("请输入您的选择:");
        scanf("%d", &choice);
       
        switch (choice)
        {
            case 0:
    return;
            case 1:
                printf("请输入新姓名:");
    scanf("%s", p->name);
                break;
            case 2:
                printf("请输入新学号:");
    scanf("%d", &p->num);
                break; 
   case 3:
                printf("请输入新性别:");
    scanf("%s", p->sex);
                break;
   case 4:
                printf("请输入新年龄:");
    scanf("%s", &p->age);
                break; 
   case 5:
                printf("请输入新地址:");
    scanf("%s", p->address);
                break; 
   case 6:
                printf("请输入新电话:");
    scanf("%lf", &p->tele_num);
                break; 
   case 7:
                printf("请输入新爱好:");
    scanf("%s", p->aihao);
                break; 
            default:
                printf("
无效选项!");
                break;
        }
    }
    while(choice != 0);
}


急求!用C++编写一个学生管理系统~

我是计算机学生,不急的话可以让我试试
#include
#include
#include
#include //输入/输出文件流类
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;
}

第一次写,不要报酬了,我是雷锋

今天卧病在家,抽时间写的这么个简单的管理系统,完全是命令行界面的,对于一些异常的内容考虑的还不是很周到。不知道你具体用于做什么。不过希望对你有帮助,你可以基于源码进行修改。如下内容在VC2005上编译并测试通过基本场景。如果你需要图形界面,你可以尝试用MFC或者C#等包装,时间有限,只能先做到这些了。good luck!
// mytest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
#include
#include
#include

class Student
{
public:
Student(std::string name,
unsigned long id,
std::string sex,
std::string political,
std::string address)
:
m_name(name),
m_id(id),
m_sex(sex),
m_political(political),
m_address(address)
{
}
public:
unsigned long m_id;
std::string m_name;
std::string m_sex;
std::string m_political;
std::string m_address;
};

typedef std::map StudentCont;

class StudentMgr
{
public:
StudentMgr()
:
m_num(0)
{
}
void add()
{
std::cin.clear();
std::cin.sync();
std::string name("");
std::cout << "please input student's name: ";
std::getline(std::cin, name);

std::string sex("");
std::cout << "please input student's sex: ";
std::getline(std::cin,sex);

std::string political("");
std::cout << "please input student's political apperance: ";
std::getline(std::cin,political);

std::string address("");
std::cout << "please input student's address: ";
std::getline(std::cin,address);
m_num++;
Student student(name, m_num, sex, political, address);
m_students.insert(std::make_pair(m_num, student));
std::cout << "Student " << m_num << " " << name << " " << sex << " " << political << " " << address << " add successfully!" << std::endl;
}
void del()
{
unsigned long id;
std::cout << "Please input the student's id:";
std::cin >> id;
StudentCont::iterator iter = m_students.find(id);
if(iter != m_students.end())
{
m_students.erase(id);
std::cout << "Id number: " << id << " was deleted successfully!" << std::endl;
}
else
{
std::cout << "Id number: " << id << " doesn't exist in the system!" << std::endl;
}
}
void mod()
{
unsigned long id;
std::cout << "Please input the student's id:";
std::cin >> id;
StudentCont::iterator iter = m_students.find(id);
if(iter != m_students.end())
{
std::cout << "Id number: " << id << " is found, please input the information you want to change!" << std::endl;
std::cout << "please input your choice number:" << std::endl;
std::cout << "--------------------------------" << std::endl;
std::cout << "-[1] name. -" << std::endl;
std::cout << "-[2] sex. -" << std::endl;
std::cout << "-[3] political apperance. -" << std::endl;
std::cout << "-[4] address. -" << std::endl;
std::cout << "-[5] Quit! -" << std::endl;
std::cout << "--------------------------------" << std::endl;
unsigned long choiceNum;
std::cin >> choiceNum;
switch(choiceNum)
{
case 1:
{
std::string name;
std::cin.clear();
std::cin.sync();
std::cout << "please input new student's name: "<< std::endl;
std::getline(std::cin,name);
(*iter).second.m_name = name;
break;
}
case 2:
{
std::string sex;
std::cin.clear();
std::cin.sync();
std::cout << "please input correct student's sex: "<< std::endl;
std::getline(std::cin,sex);
(*iter).second.m_sex = sex;
break;
}
case 3:
{
std::string political;
std::cin.clear();
std::cin.sync();
std::cout << "please input student's new political apperance: "<< std::endl;
std::getline(std::cin,political);
(*iter).second.m_political = political;
break;
}
case 4:
{
std::string address;
std::cin.clear();
std::cin.sync();
std::cout << "please input student's new address: "<< std::endl;
std::getline(std::cin,address);
(*iter).second.m_address = address;
break;
}
case 5:
break;
default:
{
std::cerr << "Input choice number:" << choiceNum << " is wrong!" << std::endl;
break;
}
}
}
else
{
std::cout << "Id number: " << id << " doesn't exist in the system, return to the menu!" << std::endl;
}
std::cout << "modify sucessfull!" << std::endl;
}
void query()
{
unsigned long id;
std::cout << "Please input the student's id:";
std::cin >> id;
StudentCont::iterator iter = m_students.find(id);
if(iter != m_students.end())
{
std::cout << "The student's information is: "
<< (*iter).second.m_id << " "
<< (*iter).second.m_name << " "
<< (*iter).second.m_address << " "
<< (*iter).second.m_political << " "
<< (*iter).second.m_sex << std::endl;
}
else
{
std::cout << "Id number: " << id << " doesn't exist in the system, return to the menu!" << std::endl;
}
}
private:
unsigned long m_num;
StudentCont m_students;
};

void printMenu()
{
std::cout << "please input your choice number:" << std::endl;
std::cout << "--------------------------------" << std::endl;
std::cout << "-[1] Add a student. -" << std::endl;
std::cout << "-[2] Delete a student. -" << std::endl;
std::cout << "-[3] Modify a student. -" << std::endl;
std::cout << "-[4] Query students. -" << std::endl;
std::cout << "-[5] Quit! -" << std::endl;
std::cout << "--------------------------------" << std::endl;
}

void startstudentManagement()
{
std::cout << "Thank you for using this simple student management system, Welcome!" << std::endl;
printMenu();
std::auto_ptr studentMgr(new StudentMgr);
bool stop = false;
do
{
unsigned long choiceNum = 0;
std::cout << "Your choice number is: ";
std::cin.clear();
std::cin.sync();
std::cin >> choiceNum;
switch(choiceNum)
{
case 1:
studentMgr->add();
break;
case 2:
studentMgr->del();
break;
case 3:
studentMgr->mod();
break;
case 4:
studentMgr->query();
break;
case 5:
stop = true;
break;
default:
std::cerr << "The input number is none of the choice, please try again." << std::endl;
stop = true;
break;
}
}
while(!stop);
}

void stopstudentManagement()
{
std::cout << "Thank you for using this simple student management system, Bye!" << std::endl;
}

int main(void)
{
startstudentManagement();
stopstudentManagement();
return 0;
}