学生管理系统源码代码_C语言之学生管理系统代码完整

hacker|
117

文章目录:

学生信息管理系统,C++实现的源代码

#include iostream

#includefstream

#includestring

using namespace std;

class student

{

public:

void setdate();//录入

void chazhao();//查找

void showdate();//输出

//void change();//修改

void del();//删除

private:

student *next,*head;

string name;

int age;

};

void student::setdate()

{

int n;

cout"请输入所要录入的学生人数:"endl;

cinn;

student *p,*s;

int i;

for(i=0;in;i++)

{

p=new student;

cout"分别输入学生的年龄和姓名:";

cinp-agep-name;

if(i==0)

head=s=p;

else s-next=p;

p-next=NULL;

s=p;

}

ofstream fout("d://program//test.txt",ios::out);

if(!fout){cout"cannot open file.";}

for(i=0;in;i++)

{

fouthead-age" "head-nameendl;

head=head-next;

}

fout.close();

}

void student::showdate()

{

student *p;

ifstream fout1("d://program//test.txt",ios::in);

if(!fout1){cout"cannot open file.\n";exit(1);}

p=new student;

while(fout1.good())

{

fout1p-agep-name;

if(fout1.good())

coutp-age" "p-nameendl;

}

fout1.close();

}

void student::chazhao()

{

string a;

int k=0;

cout"输入你要查找的学生的姓名:\n";

cina;

student *p;

ifstream fout1("d://program//test.txt",ios::in);

if(!fout1){cout"cannot open file.\n";exit(1);}

while(fout1.good())

{

p=new student;

fout1p-agep-name;

if(p-name==a)

{

coutp-age" "p-nameendl;

k=1;

break;

}

}

if(k==0) cout"你所查找的学生不存在!!!\n";

fout1.close();

}

void student::del()

{

student *p,*op;

string namea;

cout"输入你所要删除的学生的姓名:\n";

cinnamea;

ifstream fout("d://program//test.txt",ios::in);

if(!fout){cout"cannot open file.";}

while(fout.good())

{

p=new student;

int i=0;

foutp-agep-name;

if(p-name==nameai==0)

{

delete p;

break;

}

else if(p-name==nameai!=0)

{

op-next=p-next;

delete p;

break;

}

else

{

op=p;

p=p-next;

}

i++;

}

cout"删除成功!!!\n";

fout.close();

}

int main()

{

student duixiang;

int m;

cout"-------------欢迎使用我的成绩管理系统!\n";

cout"--------------------1.录入学生信息\n";

cout"--------------------2.输出学生信息\n";

cout"--------------------3.查找学生信息\n";

cout"--------------------4.删除学生信息\n";

cout"--------------------5.退出系统\n";

cout"请选择所要执行的操作(1~4):\n";

cinm;

switch(m)

{

case 1:duixiang.setdate();

case 3:duixiang.chazhao();

//case 3:duixiang.change();break;

case 4:duixiang.del();break;

case 2:duixiang.showdate();

case 5:break;

}

return 0;

}

/*void menu::shanchu() {

system("cls") ;

char ch[10] ;

cout"\n *** 删除信息 ***\n"endl ;

cout"\n 请输入要删除人的姓名 : " ;

cinch ;

addbook *p , *p1 ;

p1 = head ;

while( p1 )

{

// coutch" "p1-nameendl ; // 查找结点

if(strcmp( p1-name , ch ) == 0 )

break ;

else {

p = p1 ; // 标记相连结点位置,删除后可连接

p1 = p1-next ;

}

}

if( p1!= NULL )

{ // 判断结点是否为空

cout"所要删除的名片的信息如下,请确认!:\n"endl ;

output(p1) ; // 函数输出名片信息

cout"请再次确认是否删除该信息!!!(Y/N) :" ;

char c[10] ;

while(1)

{

cinc ;

if( toupper(c[0]) == 'Y' c[1]=='\0' )

{

if( p1 == head )

{ // 判断是否是第一个结点

head = p1-next ;

delete p1 ;

}

else

{

p-next = p1-next ; // 已标记结点的连接

delete p1 ;

}

cout"\t\t *** 删除成功 *** \t\t\n" ;

system("cls") ;

cout"\n\n\n\n\n" ;

cout"\t\t *** 是否继续删除 *** \t\t\n" ;

cout"*** 请确认(Y/N) :" ;

while(1)

{

cinc;

if( toupper(c[0]) == 'Y' c[1]=='\0' )

shanchu() ;

else if( toupper(c[0]) == 'N' c[1]=='\0' )

return ;

else cout"输入错误 , 请重新输入(Y/N) :" ;

}

}

else if( toupper(c[0]) == 'N' c[1]=='\0' ) return ;

else cout"输入错误 , 请重新输入(Y/N) :" ;

}

}

else {

cout"\n\n\n未找到该信息!!!"endl ;

system("pause") ;

return ;

}

}

*/

学生信息管理系统C++源代码

#includeiostream

#includestdlib.h

#includestring.h

#includemalloc.h

#define INIT_SIZE 10

#define INCRE_SIZE 10

#define SUBJECT_NUM 3

#define LEN 3

void show_Start();

void show_Table();

void addRecord();

void Info_delete();

void deleteRecord();

void delete_Num(int);

void delete_Name(char tarName[]);

void Info_modify();

void modifyRecord();

void modify_Num(int);

void modify_Name(char[]);

void Info_query();

void queryRecord();

void query_Num(int);

void query_Name(char[]);

void display();

void quit();

void menu_CMD();

char *subject[SUBJECT_NUM] = {"高代","数分","C语言"};

struct STUDENT

{

int num;

char name[20];

char sex;

float score[SUBJECT_NUM];

};

//struct STUDENT stu[LEN + 1];

//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

int static stuNum = 0;

//先暂时定义三个学生吧...

STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);;

int main()

{

//record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

/*

record[1].num = 1001;

strcpy(record[1].name,"Jason");

record[1].sex = 'M';

record[1].score[0] = 85.0;

record[1].score[1] = 90.0;

record[1].score[2] = 95.0;

record[2].num = 1002;

strcpy(record[2].name,"Jerry");

record[2].sex = 'M';

record[2].score[0] = 85.0;

record[2].score[1] = 90.0;

record[2].score[2] = 95.0;

record[3].num = 1003;

strcpy(record[3].name,"Jessie");

record[3].sex = 'F';

record[3].score[0] = 85.0;

record[3].score[1] = 90.0;

record[3].score[2] = 95.0;

*/

/*

Info_modify();

int key;

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲修改的学生的学号 : ";

cintargetNum;

modify_Num(targetNum);

coutendl;

display();

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲修改学生的姓名 : ";

cintargetName;

modify_Name(targetName);

coutendl;

display();

}

if(key == 3)

{

exit(0);

}

*/

show_Start();

menu_CMD();

return 0;

}

//修改完后还应该显示

void show_Start()

{

//coutendl;

cout" **************************************** "endl;

cout" 这是一个 "endl;

cout" 学生成绩管理系统 "endl;

cout" 可以对学生成绩进行管理 "endl;

cout" 欢迎大家使用 "endl;

cout" Made by Jason "endl;

cout" **************************************** "endl;

}

// 显示表头信息,即是 : 学号,姓名,性别,高代,数分,C语言.

void show_Table()

{

cout"学号""\t""姓名""\t""性别";

cout"\t"subject[0]"\t"subject[1]"\t"subject[2];

coutendl;

}

void menu_CMD()

{

int key;

while(1)

{

cout"1. 增加学生信息"endl;

cout"2. 删除学生信息"endl;

cout"3. 修改学生信息"endl;

cout"4. 查询学生信息"endl;

cout"5. 显示学生信息"endl;

cout"6. 退出"endl;

cout"请输入您的选择 : ";

cinkey;

while(1)

{

if((key 1)||(key 6))

{

int key;

cout"您的输入有误,请重新输入!"endl;

cout"请选(1 - 5) : ";

cinkey;

}

else

{

break;

}

}

switch(key)

{

case 1:

addRecord();

break;

case 2:

deleteRecord();

break;

case 3:

modifyRecord();

break;

case 4:

queryRecord();

break;

case 5:

display();

break;

case 6:

quit();

break;

}

}

}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

//增加学生信息

void addRecord()

{

if(stuNum == 0)

{

cout"原来没有记录,现在建立新表!"endl;

stuNum++;

}

else

{

cout"现在在当前表的末尾添加新的信息!"endl;

stuNum++;

}

//如果数组空间不够,重新申请空间

if(stuNum INIT_SIZE)

{

cout"内存空间不够,现在重新申请新的内存空间!"endl;

record = (STUDENT*)realloc(record,(INIT_SIZE + INCRE_SIZE)*sizeof(STUDENT));

cout"空间申请完成!"endl;

}

cout"您现在要添加一组新的信息,您确定吗?"endl;

cout"请输入您的选择(Y/N) : ";

char choi;

cinchoi;

if((choi == 'Y')||(choi == 'y'))

{

cout"请输入学号 : ";

cinrecord[stuNum].num;

cout"请输入姓名 : ";

cinrecord[stuNum].name;

cout"请输入性别(M为男,F为女) : ";

cinrecord[stuNum].sex;

int i;

for(i = 0;i SUBJECT_NUM;i++)

{

cout"请输入"subject[i]"的成绩 : ";

cinrecord[stuNum].score[i];

}

}

if((choi == 'N')||(choi == 'n'))

{

cout"退出添加新学生信息!"endl;

coutendl;

}

cout"现在已经有"stuNum"条学生的信息了!"endl;

coutendl;

}

//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////

//删除信息 晚上完成...

//显示deleteRecord的表头信息

void Info_delete()

{

cout"请输入删除方式 : "endl;

cout"1. 按学号删除"endl;

cout"2. 按姓名删除"endl;

cout"3. 退出删除"endl;

}

//删除学生的信息,包含两个子函数

void deleteRecord()

{

int key;

coutendl;

Info_delete();

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲删除学生的学号 : ";

cintargetNum;

//按学号删除

delete_Num(targetNum);

coutendl;

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲删除学生的姓名 : ";

cintargetName;

//按姓名删除

delete_Name(targetName);

coutendl;

}

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号删除学生信息

//只用完成删除操作,而不必输出. 输出的操作可以在主菜单中进行

void delete_Num(int tarNum)

{

int i;

for(i = 1;i = stuNum;i++)

{

if(record[i].num == tarNum)

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//第一种情况,欲删除的学生是最后一位

if(i = stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]record[i].score[1]"\t"record[i].score[2];

coutendl;

coutendl"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum - 1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

//显示信息应该放在后面

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

//2.第二种情况,欲删除的学生不是最后一位

if(i != stuNum)

{

cout"您所要删除的学生信信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

//接着完成输出

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

stuNum--;

cout"现在还是剩下"stuNum"条学生的信息";

coutendl;

}

}

}

/*

//方法同上

void delete_Name(char tarName[])

{

int i;

for(i = 1;i = stuNum;i++)

{

if(strcmp(record[i].name,tarName) == 0)

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//第一种情况 : 欲删除学生是最后一位

if(i = stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]record[i].score[1]"\t"record[i].score[2];

coutendl;

coutendl"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum - 1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

}

//第二种情况 : 欲删除学生不是最后一位

if(i != stuNum)

{

cout"您所要删除的学生信信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

//整体往前 前移一位

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

coutendl;

//接着完成输出

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

coutendl;

}

}

}

}

*/

void delete_Name(char tarName[])

{

int i;

for(i = 1;i = stuNum;i++)

{

//删除还要分两种情况讨论

//1. 欲删除的学生信息是最后一位

//2. 欲删除的学生信息不是最后一位

//当欲删除的学生是最后一位,直接输出前面LEN-1位学生的信息

if(strcmp(record[i].name,tarName) == 0)

{

if(i == stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t"

record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

//当欲删的学生不是最后一位,整体往前前移一位

if(i != stuNum)

{

cout"您所要删除的学生信息是 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex"\t";

coutrecord[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

//整体往前前移一位

for(int j = i+1;j = stuNum;j++)

{

record[j-1] = record[j];

}

//然后输出

coutendl;

cout"删除后学生信息表为 : "endl;

show_Table();

for(int i = 1;i = stuNum-1;i++)

{

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(int j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

/*

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

*/

}

stuNum--;

cout"现在还剩下"stuNum"条学生的信息";

coutendl;

}

}

}

/*****************************************************************************

******************************************************************************/

//显示modifyRecord的表头信息

void Info_modify()

{

cout"请输入修改方式 : "endl;

cout"1. 按学号修改"endl;

cout"2. 按姓名修改"endl;

cout"3. 退出修改"endl;

}

//查询学生的成绩,当然里面包括两个子函数

void modifyRecord()

{

int key;

coutendl;

Info_modify();

cout"请输入您的选择 : ";

cinkey;

//按学号修改

if(key == 1)

{

int targetNum;

cout"请输入您欲修改的学生的学号 : ";

cintargetNum;

modify_Num(targetNum);

coutendl;

//display();

}

//按姓名修改

if(key == 2)

{

char targetName[20];

cout"请输入您欲修改学生的姓名 : ";

cintargetName;

modify_Name(targetName);

coutendl;

//display();

}

//退出修改

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号修改

void modify_Num(int tarNum)

{

int i;

for(i = 1;i = stuNum;i++)

{

if(record[i].num == tarNum)

{

coutendl"请修改该学生的信息"endl;

cout"请输入该学生的学号 : ";

cinrecord[i].num;

cout"请输入该学生的姓名 : ";

cinrecord[i].name;

cout"请输入该学生的性别 : ";

cinrecord[i].sex;

cout"请输入"subject[0]"的成绩 : ";

cinrecord[i].score[0];

cout"请输入"subject[1]"的成绩 : ";

cinrecord[i].score[1];

cout"请输入"subject[2]"的成绩 : ";

cinrecord[i].score[2];

}

}

}

//按姓名修改

void modify_Name(char tarName[])

{

int i;

for(i = 1;i = stuNum;i++)

{

if(strcmp(record[i].name,tarName) == 0)

{

coutendl"请修改该学生的信息 : "endl;

cout"请输入该学生的学号 : ";

cinrecord[i].num;

cout"请输入该学生的姓名 : ";

cinrecord[i].name;

cout"请输入该学生的性别 : ";

cinrecord[i].sex;

cout"请输入"subject[0]"的成绩 : ";

cinrecord[i].score[0];

cout"请输入"subject[1]"的成绩 : ";

cinrecord[i].score[1];

cout"请输入"subject[2]"的成绩 : ";

cinrecord[i].score[2];

}

}

}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

//显示queryRecord的表头信息

void Info_query()

{

cout"请输入查询方式 : "endl;

cout"1. 按学号查询"endl;

cout"2. 按姓名查询"endl;

cout"3. 退出查询"endl;

}

//查询学生信息queryRecord

void queryRecord()

{

int key;

coutendl;

Info_query();

cout"请输入您的选择 : ";

cinkey;

if(key == 1)

{

int targetNum;

cout"请输入您欲查询学生的学号 : ";

cintargetNum;

query_Num(targetNum);

coutendl;

}

if(key == 2)

{

char targetName[20];

cout"请输入您欲查询学生的学号 : ";

cintargetName;

query_Name(targetName);

coutendl;

}

//退出查询,退回到主菜单吧...

if(key == 3)

{

while(1)

{

menu_CMD();

}

}

}

//按学号查询

void query_Num(int tarNum)

{

int i;

for(i = 1;i = stuNum;i++)

{

if(record[i].num == tarNum)

{

//如果表中有该学生信息的话,仅用输出该学生的信息即可.

//输出该学生的信息

cout"该学生的信息如下 : "endl;

//显示表头信息

show_Table();

//显示该学生具体的信息

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

cout"\t"record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

}

}

}

//按姓名查询

void query_Name(char tarName[])

{

int i;

for(i = 1;i = stuNum;i++)

{

if(strcmp(record[i].name,tarName) == 0)

{

cout"该学生的信息如下 : "endl;

show_Table();

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

cout"\t"record[i].score[0]"\t"record[i].score[1]"\t"record[i].score[2];

coutendl;

}

}

}

///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////

//先显示所有学生的信息吧

//显示record里所有学生的成绩

void display()

{

show_Table();

int i,j;

for(i = 1;i = stuNum;i++)

{

//cout"学号""\t""姓名""\t""性别";

coutrecord[i].num"\t"record[i].name"\t"record[i].sex;

for(j = 0;j SUBJECT_NUM;j++)

{

cout"\t"record[i].score[j];

}

coutendl;

}

coutendl;

}

//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////

//退出

void quit()

{

char choi;

cout"您确定要退出吗?"endl;

cout"请输入您的选择(Y/N) : ";

cinchoi;

if((choi == 'Y')||(choi == 'y'))

{

cout"现在退出学生信息管理系统"endl;

exit(0);

}

//如果不是退出,则接着退回到主界面

else

{

coutendl;

menu_CMD();

}

}

这个是原创的... 在C-Free 4.0里跑过,可以正常运行

你可以试着跑一下,如果有什么问题可以和我联系

学生管理系统源代码c++

#include iostream.h

#include string.h

#include "h1.h"

void menu();

void clear()

{

cin.clear();

cin.ignore();

}

void stu::init_name_grade() //输入学生姓名、班级

{

cout"请输入学生姓名:";

cinname;

clear();

cout"请输入学生班级号:";

cingrade;

clear();

}

void stu::init_first() //输入学生第一学期成绩

{

cout"学生"name"第一学期成绩"endl;

cout"请输入英语成绩:";

cinfirst.english;

clear();

cout"请输入数学成绩:";

cinfirst.math;

clear();

first.total=first.english+first.math;

first.aver=first.total/2;

}

void stu::init_second() //输入学生第二学期成绩

{

cout"学生"name"第二学期成绩"endl;

cout"请输入英语成绩:";

cinsecond.english;

clear();

cout"请输入数学成绩:";

cinsecond.math;

clear();

second.total=second.english+second.math;

second.aver=second.total/2;

}

void stu::show_first() //显示学生第一学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第一学期英语成绩:"first.englishendl;

cout"学生第一学期数学成绩:"first.mathendl;

cout"学生第一学期总成绩:"first.totalendl;

cout"学生第一学期平均成绩:"first.averendl;

}

void stu::show_second() //显示学生第二学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第二学期英语成绩:"second.englishendl;

cout"学生第二学期数学成绩:"second.mathendl;

cout"学生第二学期总成绩:"second.totalendl;

cout"学生第二学期平均成绩:"second.averendl;

}

void stu::show_grade() //显示学生所有学期成绩

{

cout"学生姓名:"nameendl;

cout"学生班级:"gradeendl;

cout"学生第一学期英语成绩:"first.englishendl;

cout"学生第一学期数学成绩:"first.mathendl;

cout"学生第一学期总成绩:"first.totalendl;

cout"学生第一学期平均成绩:"first.averendl;

cout"学生第二学期英语成绩:"second.englishendl;

cout"学生第二学期数学成绩:"second.mathendl;

cout"学生第二学期总成绩:"second.totalendl;

cout"学生第二学期平均成绩:"second.averendl;

}

stu_info::stu_info() //stu_info的构造函数

{

num=0;

}

void stu_info::add_name_grade() //添加学生信息(班级、姓名)到数组中

{

int choose;

do

{

per[num].init_name_grade();

num++;

cout"继续输入学生信息吗?(0:退出,任意数字键继续...)";

cinchoose;

clear();

}while(choose!=0);

}

void stu_info::add_first(int gra) //添加第一学期成绩

{

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].init_first();

}

}

}

void stu_info::add_second(int gra) //添加第二学期成绩

{

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].init_second();

}

}

}

void stu_info::query_aver(int gra,int term) //按班级、学期及平均分排序显示学生成绩

{

stu temp[100];

stu t;

int sum=0;

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

temp[sum]=per[i];

sum++;

}

}

for(int j=0;jsum-1;j++)

{

for(int k=sum-1;kj;k--)

{

if(term==1)

{

if(temp[k].first.avertemp[k-1].first.aver)

{

t=temp[k];

temp[k]=temp[k-1];

temp[k-1]=t;

}

}

else if(term==2)

{

if(temp[k].second.avertemp[k-1].second.aver)

{

t=temp[k];

temp[k]=temp[k-1];

temp[k-1]=t;

}

}

else

{

cout"该学期不存在!"endl;

return;

}

}

}

for( i=0;isum;i++)

{

if(term==1)

{

temp[i].show_first();

}

else

{

temp[i].show_second();

}

}

}

void stu_info::modify(int gra,char name[10]) //按班级、姓名查询学生信息并修改学生信息

{

for(int i=0;inum;i++)

{

if(per[i].grade==grastrcmp(per[i].name,name)==0)

{

per[i].init_name_grade();

per[i].init_first();

per[i].init_second();

return;

}

else

{

cout"该学生不存在!"endl;

}

}

}

void stu_info::query(int gra,char name[10]) //按班级、姓名查询学生信息并输出

{

for(int i=0;inum;i++)

{

if(per[i].grade==grastrcmp(per[i].name,name)==0)

{

per[i].show_grade();

return;

}

else

{

cout"该学生不存在!"endl;

}

}

}

void stu_info::query_grade(int gra) //按班级输出该班全部学生成绩

{

coutgra"班级学生的成绩如下:"endl;

for(int i=0;inum;i++)

{

if(per[i].grade==gra)

{

per[i].show_grade();

}

}

}

void stu_info::show_fail(int grade,int term,int course)

{

cout"不及格名单如下:"endl;

for(int i=0;inum;i++)

{

if(per[i].grade==grade)

{

if(term==1)

{

if(course==1)

{

if(per[i].first.english60)

{

coutper[i].nameendl;

}

}else if(course==2)

{

if(per[i].first.math60)

{

coutper[i].nameendl;

}

}

}

else if(term==2)

{

if(course==1)

{

if(per[i].second.english60)

{

coutper[i].nameendl;

}

}else if(course==2)

{

if(per[i].second.math60)

{

coutper[i].nameendl;

}

}

}

else

{

cout"该学期不存在!"endl;

return;

}

}

}

}

void main()

{

stu_info people;

int grade;

int term;

int choose;

int course;

char name[10];

while(1)

{

menu();

cinchoose;

clear();

switch(choose)

{

case 1:

people.add_name_grade();break;

case 2:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

if(term==1)

people.add_first(grade);

else

people.add_second(grade);

break;

case 3:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学生姓名:";

cinname;

clear();

people.modify(grade,name);

break;

case 4:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

people.query_aver(grade,term);

break;

case 5:

cout"请输入班级号:";

cingrade;

clear();

people.query_grade(grade);

break;

case 6:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学期:";

cinterm;

clear();

cout"请输入课程号(1:english,2:math):";

cincourse;

people.show_fail(grade,term,course);

break;

case 7:

cout"请输入班级号:";

cingrade;

clear();

cout"请输入学生姓名:";

cinname;

clear();

people.query(grade,name);

break;

case 8:return;

default:cout"选择错误,请重新选择!"endl;

}

}

}

void menu()

{

cout" 请选择操作"endl;

cout"-------------------------------------------------------------"endl;

cout" 1、输入学生姓名、班级"endl;

cout" 2、按学期、班级录入学生成绩"endl;

cout" 3、修改学生成绩"endl;

cout" 4、按班级平均分对学生成绩排序"endl;

cout" 5、按班级输出学生的成绩单"endl;

cout" 6、按科目输出不及格学生名单"endl;

cout" 7、查询学生成绩单"endl;

cout" 8、退出系统"endl;

}

这上面是实现功能,下面是类的定义和声明 希望对你有用

struct term

{

int english;

int math;

int aver;

int total;

};

class stu

{

char name[10];

int grade;

struct term first;

struct term second;

public:

friend class stu_info;

void init_name_grade();

void init_first();

void init_second();

void show_grade();

void show_first();

void show_second();

};

class stu_info

{

stu per[100];

int num;

public:

stu_info();

void add_name_grade();

void add_first(int gra);

void add_second(int gra);

void query_aver(int gra,int term);

void modify(int gra,char name[10]);

void query(int gra,char name[10]);

void query_grade(int gra);

void show_fail(int grade,int term,int course);

};

c++学生信息管理系统源代码怎么写

#include iostream

#include iomanip

#include string

using namespace std;

typedef struct student {

unsigned m_id;

string m_name;

unsigned m_age;

string m_sex;

string m_address;

string m_contact;

string m_dormitory;

struct student *m_next;

}student;

class CStudent {

private :

student *head;

public :

CStudent() {

head = new student;

head-m_id = 0;

head-m_name = "noname";

head-m_next = NULL;

}

~CStudent() {

student *p = head,*q;

while(p) {

q = p;

p = q-m_next;

delete q;

}

}

student readdata(int model); // model = 1:不读取学号,2:不读取姓名,其他,读取所有信息

void entering();

bool insert(const student astu);

student *findid(unsigned id) const;

student *findname(const string name) const;

student *findsex(const string sex) const;

student *finddormitory(const string dormitory) const;

unsigned boys() const;

unsigned girls() const;

unsigned headcount() const;

bool eraseid();

bool erasename();

bool modifyid();

bool modifyname();

void Show() const;

void query() const;

void friend statistics(const CStudent aclss);

void friend erase(CStudent aclss);

void friend modify(CStudent aclss);

};

string readstring() {

string str;

while(cin.get() != '\n');

cin str;

return str;

}

student CStudent::readdata(int model) {

student tmp;

if(model != 1) { cout "学 号: "; cin tmp.m_id; }

if(model != 2) { cout "姓 名: "; tmp.m_name = readstring(); }

cin tmp.m_age;

cout "性 别: ";

tmp.m_sex = readstring();

cout "住 址: ";

tmp.m_address = readstring();

cout "联系方式: ";

tmp.m_contact =readstring();

cout "寝 室: ";

tmp.m_dormitory = readstring();

return tmp;

}

void CStudent::entering() {

student tmp;

cout "学号(0 to return): ";

cin tmp.m_id;

while(tmp.m_id) {

if(findid(tmp.m_id) == NULL) {

cout "姓 名: ";

tmp.m_name = readstring();

cout "年 龄: ";

cin tmp.m_age;

cout "性 别: ";

tmp.m_sex = readstring();

cout "住 址: ";

tmp.m_address = readstring();

cout "联系方式: ";

tmp.m_contact = readstring();

cout "寝 室: ";

tmp.m_dormitory = readstring();

insert(tmp);

}

else cout "重复的学号:" tmp.m_id endl;

cout "学号(0 to return): ";

cin tmp.m_id;

}

}

student *CStudent::findid(unsigned id) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_id == id) return p;

return NULL;

}

student *CStudent::findname(const string name) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_name == name) return p;

return NULL;

}

student *CStudent::findsex(const string sex) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_sex == sex) return p;

return NULL;

}

student *CStudent::finddormitory(const string dormitory) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_dormitory == dormitory) return p;

return NULL;

}

bool CStudent::insert(const student astu) {

student *newnode,*p = head;

if(p-m_next == NULL) {

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

while(p-m_next) {

if(p-m_next-m_id == astu.m_id) {

cout "重复的学号,插入失败!\n";

return false;

}

if(p-m_next-m_id astu.m_id) {

newnode = new student(astu);

newnode-m_next = p-m_next;

p-m_next = newnode;

return true;

}

p = p-m_next;

}

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

unsigned CStudent::boys() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "男") ++cnt;

return cnt;

}

unsigned CStudent::girls() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "女") ++cnt;

return cnt;

}

unsigned CStudent::headcount() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next,++cnt);

return cnt;

}

bool CStudent::eraseid() {

student *q,*p;

unsigned id;

cout "输入要删除的学号:";

cin id;

p = findid(id);

if(p == NULL) {

cout "没有找到学号是\"" id "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::erasename() {

student *q,*p;

string name;

cout "输入要删除人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout "没有找到姓名是\"" name "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::modifyid() {

student tmp,*p;

unsigned id;

cout "输入要修改的学号:";

cin id;

p = findid(id);

if(p == NULL) {

cout "没有找到学号是\"" id "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(1);

tmp.m_id = id;

*p = tmp;

return true;

}

bool CStudent::modifyname() {

student *p,tmp;

string name;

cout "输入要修改人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout "没有找到姓名是\"" name "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(2);

tmp.m_name = name;

*p = tmp;

return true;

}

int menu() {

int choice;

do {

system("cls");

cout "\t****************************\n";

cout "\t* 学生基本信息管理系统 *\n";

cout "\t*==========================*\n";

cout "\t* 1、录入学生信息 *\n";

cout "\t* 2、显示学生信息 *\n";

cout "\t* 3、查询学生信息 *\n";

cout "\t* 4、添加学生信息 *\n";

cout "\t* 5、统计学生信息 *\n";

cout "\t* 6、删除学生信息 *\n";

cout "\t* 7、修改学生信息 *\n";

cout "\t* 0、退出管理系统 *\n";

cout "\t****************************\n";

cout "\n\t请选择:";

cin choice;

}while(choice 0 || choice 7);

return choice;

}

void show(student *p) {

cout p-m_id " " p-m_name " " p-m_age " ";

cout p-m_sex " " p-m_address " ";

cout p-m_contact " " p-m_dormitory endl;

}

void CStudent::Show() const {

student *p;

cout "----------------------------------------------------------\n";

for(p = head-m_next; p; p = p-m_next) show(p);

cout "----------------------------------------------------------\n";

system("pause");

}

void CStudent::query() const {

int select;

unsigned id;

string name;

student *p;

cout "1、按学号查询\n2、按姓名查询\n0、返回\n";

cin select;

switch(select) {

case 1 : cout "请输入学号:"; cin id;

if(p = findid(id)) show(p-m_next);

break;

case 2 : cout "请输入姓名:"; name = readstring();

if(p = findname(name)) show(p-m_next);

break;

case 0 : return;

default : cout "选择错误。\n";

}

system("pause");

}

void statistics(const CStudent a) {

unsigned total = a.headcount();

unsigned boys = a.boys();

unsigned girls = a.girls();

cout "学生总数:" total "人。\n";

cout "其中,男生:" boys "名。";

cout "女生:" girls "名。\n";

system("pause");

}

void erase(CStudent a) {

int select;

unsigned id;

string name;

student *p,*q;

cout "1、按学号删除\n2、按姓名删除\n0、返回\n";

cin select;

switch(select) {

case 1 : cout "请输入学号:"; cin id;

if(p = a.findid(id)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout "成功删除 " id " 的信息。\n";

}

break;

case 2 : cout "请输入姓名:"; name = readstring();

if(p = a.findname(name)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout "成功删除 " name " 的信息。\n";

}

break;

case 0 : return;

default : cout "选择错误。\n";

}

system("pause");

}

void modify(CStudent a) {

int select;

cout "1、按学号修改\n2、按姓名修改\n0、返回\n";

cin select;

switch(select) {

case 1 : if(a.modifyid()) cout "修改成功。\n"; break;

case 2 : if(a.modifyname()) cout "修改成功。\n"; break;

case 0 : return;

default : cout "选择错误。\n";

}

system("pause");

}

int main() {

CStudent a;

int an;

do {

an = menu();

switch(an) {

case 1 : a.entering(); break;

case 2 : a.Show(); break;

case 3 : a.query(); break;

case 4 : a.entering(); break;

case 5 : statistics(a); break;

case 6 : erase(a); break;

case 7 : modify(a); break;

case 0 : break;

default : cout "选择错误。\n"; break;

}

}while(an);

return 0;

}

2条大神的评论

  • avatar
    访客 2022-07-02 上午 08:48:32

    ut); if(!fout){cout"cannot open file.";} for(i=0;in;i++) { fouthead-age" "head-nameendl; head=head-next; } fout.c

  • avatar
    访客 2022-07-02 上午 08:58:32

    { break; } } switch(key) { case 1: addRecord(); break; case 2: deleteRecord(); break; case 3: modifyRecord();

发表评论