学生信息管理系统vc-学生信息管理系统vs

本文目录一览:

vc学生信息管理系统

#include iostream.h

#include iomanip.h

#include fstream

#include vector

#include malloc.h

#include stdlib.h

#include string

#include process.h

#include stdio.h

//#define NULL 0

int const Q=20;

#define LEN sizeof(struct student)

using namespace std;

int n=0; //定义一个全局变量统计学生人数

//——---------定义一个学生考试信息的结构体

struct student

{

char name[Q]; //用来存放姓名的

char sex[Q]; //用来存放性别的

long int id; //用来存放准考证号的

int score[4]; //用来存放分数的

int total; //用来存放总分数的

struct student *next;

};

//student向量容器

vector student stu;

//--------------学生类

class Information

{

public:

Information() ; //构造函数.

~Information() ; //析构函数.

student *creat();//建立链表函数。

void output(student *head);

int count(student *head);//定义函数count()统计考生总数

student *insert(student*head);//指针函数*insert()用来添加考生信息.

student *cancel(student *head,long int num);//指针函数*cancel()用来删除考生信息.

student *find(student *head,long int num); //指针函数*find()用来查找考生信息.

void inorder(student *head);//定义inorder()函数将考生的总分从大到小排列并输出

void average( student *head);//求学生成绩的平均分的函数

void save(student *head);//保存函数

student *Read();//读取函数

private:

student *p1,*p2,*p3,*head,st;

};

Information::Information()

{

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

cout" ------------------------欢迎您使用学生成绩管理系统------------------------\n";

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

}

Information::~Information()

{

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

cout" ------------------------谢谢您使用学生成绩管理系统------------------------\n";

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

}

student *Information::creat(void)

{//定义一个指向struct student的结构体指针函数*creat()用来增加考生信息.

char ch[Q];n=0; //用来存放姓名的

p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元

cout" -------------请建立学生考试信息表,在姓名处键以 ! 结束输入。--------------"endl;

cout" 姓名:";

cinch;

head=NULL; //给指针head赋初值

while (strcmp(ch,"!")!=0)

{//调用字符比较函数strcmp()用来判断是否继续输入

char str[10];

int flag=0;

p1=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元

strcpy(p1-name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中

cout" 性别:";

cinp1-sex;

cout" 准考证号(8位):";

do{

cinstr;

if(atol(str)99999999 || atol(str)1)

cout"对不起,请正确输入!!!\n";

else

{

p1-id=atol(str); flag=1;

}

}while(flag==0);

flag=0;

cout" 计算机组成原理成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{

p1-score[0]=atoi(str); flag=1;

}

}while(flag==0);

flag=0;

cout" 概率统计成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[1]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout" 英语成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[2]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout" C++成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[3]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];//计算总分

if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head

else p2-next=p1;//否则将p1赋给p2所指结构体的next指针

p2=p1;//将指针p1赋给指针p2

n++; //将n的值加1

cout" 姓名:";

cinch;//将输入的姓名存放到字符数组ch中

}

p2-next=NULL;//将p2所指结构体的next指针重新赋空值

return (head);//将输入的第一组学生考试信息返回

}

//---------------定义output()函数将考生的信息从头指针所指内容开始输出

void Information::output(student *head)

{

if(head==NULL) cout" 这是一个空表,请先输入考生成绩.\n";

else{

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

cout" *学生考试成绩信息表*\n";

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

cout"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分\n";

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

p1=head;//将头指针赋给p

do

{

coutsetw(8)p1-id

setw(9)p1-name

setw(8)p1-sex

setw(13)p1-score[0]

setw(16)p1-score[1]

setw(10)p1-score[2]

setw(9)p1-score[3]

setw(6)p1-total/4.0

setw(11)p1-totalendl;

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

p1=p1-next;//将下一组考生信息的next指针赋给p

}while(p1!=NULL);//若指针p非空则继续,目的是把所有的考生信息都传给指针p然后输出.

}

}

//------------统计学生人数的函数

int Information::count(struct student *head)//定义函数count()统计考生总数

{

if(head==NULL)

return(0);//若指针head为空返回值为0

else return(1+count(head-next));//函数的递归调用

}

//-----------插入学生的成绩的函数

student *Information::insert( student *head)

//插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加考生信息.

{

char str[10];

int flag=0;

cout"\t----------------请输入新增学生成绩信息----------------\n"endl;

p1=(student *)malloc(LEN); //使p1指向插入的新结点

cout" 姓名:";

cinp1-name; //将输入的姓名存放到结构体名为p1的数组name中

cout" 性别:";

cinp1-sex;

cout" 准考证号(8位):";

do{

cinstr;

if(atol(str)99999999 || atol(str)1)

cout"对不起,请请正确输入!!!\n";

else

{p1-id=atol(str); flag=1; }

}while(flag==0);

flag=0;

cout" 计算机组成原理成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[0]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout" 概率统计成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[1]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout" 英语成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[2]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

cout" C++成绩:";

do{

cinstr;

if(atoi(str)100 || atoi(str)1)

cout"对不起,请输入1-100之间的数字!!\n";

else

{ p1-score[3]=atoi(str); flag=1;}

}while(flag==0);

flag=0;

p1-total=p1-score[0]+p1-score[1]+p1-score[2]+p1-score[3];//计算总分

p2=head;//将头指针赋给p2

if(head==NULL) //若没调用次函数以前的头指针head为空

{

head=p1;p1-next=NULL;

}//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值

else

{

while((p1-idp2-id)(p2-next!=NULL))

{

p3=p2;//p3指向原p2指向的结点

p2=p2-next;

}//p2后移一个结点

if(p1-id=p2-id)

{

if(head==p2)

{

p1-next=head;

head=p1;

} //插入到第一个结点之前

else

{

p3-next=p1;

p1-next=p2;

} //插入到p3所指结点之后

}

else

{

p2-next=p1;

p1-next=NULL;

} //插入到尾结点之后

}

n++;//将学生人数加1

cout"\t你输入的学生信息已经成功插入"endl;

return (head);

}

//------------删除函数

student *Information::cancel(student *head,long int num)//定义一个指向struct student的结构体指针函数*delete()用来删除考生信息.

{

if(head==NULL)//若调用次函数以前的头指针head为空

{

return(head);

}

else

{

p1=head;//否则将头指针赋给p1

while(num!=p1-idp1-next!=NULL)//寻找要删除的结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空

{

p2=p1;

p1=p1-next;

}//p2指向原p1指向的结点p1后移一个结点

if(num==p1-id)//如果输入的学生准考证号是p1所指的学生准考证号//结点找到后删除

{

if(p1==head) head=p1-next;//如果head指针和p1指针相等则将下一个结点赋给指针head

else

p2-next=p1-next;//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去

cout" 删除准考证号为"num"的学生\n";

n--;//将学生人数减1

}

return(head);//将头指针返回

}

}

//------------查找函数

student *Information::find(student *head,long int num)

//定义一个指向struct student的结构体指针函数*find()用来查找考生信息.

{

if(head==NULL)//若调用次函数以前的头指针head为空

{

cout" 这是一个空表,请先输入考生成绩.\n";

return(head);

}

else

{

p1=head;//否则将头指针赋给p1

while(num!=p1-idp1-next!=NULL)

//寻找结点当p1所指的学生准考证号不是输入的学生准考证号并且p1所指的next指针不为空

{

p1=p1-next;

}//p2指向原p1指向的结点p1后移一个结点

if(num==p1-id)//如果要查找的学生准考证号是p1所指的学生准考证号

{

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

cout"准考证号 姓名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 \n";

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

coutsetw(8)p1-id

setw(9)p1-name

setw(8)p1-sex

setw(13)p1-score[0]

setw(16)p1-score[1]

setw(10)p1-score[2]

setw(9)p1-score[3]

setw(6)p1-total/4.0

setw(11)p1-totalendl;

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

}

else

cout" 没找到准考证号为"num"的学生.\n"; //结点没找到

return(head);

}

}

//------------定义inorder()函数将考生的总分从大到小排列并输出

void Information::inorder(student *head)

{

int i,k,m=0,j;

student *p[Q];//定义一个指向struct student的结构体指针数组p

if(head!=NULL)//如果头指针是空则继续

{ m=count(head);

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

cout"学生考试成绩统计表\n";

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

cout"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 名次\n";

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

p1=head;

for(k=0;km;k++)

{

p[k]=p1;

p1=p1-next;

}

for(k=0;km-1;k++) //选择排序法

for(j=k+1;jm;j++)

if(p[k]-totalp[j]-total)

{

p2=p[k];

p[k]=p[j];

p[j]=p2;

} //从大到小排列的指针

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

{

coutsetw(8)p1-id

setw(9)p1-name

setw(8)p1-sex

setw(13)p1-score[0]

setw(16)p1-score[1]

setw(10)p1-score[2]

setw(9)p1-score[3]

setw(6)p1-total/4.0

setw(11)p1-totalendl;

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

}

}

}

//------------求各科平均分成绩的函数

void Information::average(student *head)

{

int k,m;

float arg1=0,arg2=0,arg3=0,arg4=0;

if(head==NULL)//如果头指针是空则继续

{

cout" 这是一个空表,请先输入考生成绩.\n";

}

else

{

m=count(head);

p1=head;

for(k=0;km;k++)

{

arg1+=p1-score[0];

arg2+=p1-score[1];

arg3+=p1-score[2];

arg4+=p1-score[3];

p1=p1-next;

}

arg1/=m;arg2/=m;arg3/=m;arg4/=m;

cout"全班单科成绩平均分\n";

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

cout" 计算机组成原理平均分:"setw(7)arg1

" 概率统计平均分:"setw(7)arg2

" 英语平均分:"setw(7)arg3

" C++平均分:"setw(7)arg4endl;

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

}

}

//-------------------保存函数.

void Information::save(student *head)

{

ofstream out("data.txt",ios::out);

outcount(head)endl;

while(head!=NULL)

{ outhead-name"\t"

head-id"\t""\t"

head-sex"\t"

head-score[0]"\t"

head-score[1]"\t"

head-score[2]"\t"

head-score[3]"\t"

head-totalendl;

head=head-next;

}

}

//———————————读取函数的实现

student *Information::Read()

{ int i=0;

p1=p2=( student *)malloc(LEN);

head=NULL;

ifstream in("data.txt",ios::out);

ini;

if(i==0){cout" data.txt 文件中的数据为空,请先输入数据。"endl; return 0;}

else {

cout" …………………………………………………………………………………………"endl;

for(;i0;i--)

{ p1=(student *)malloc(LEN);

cinst.namest.idst.sex

st.score[0]st.score[1]st.score[2]st.score[3]

st.total;

strcpy(p1-name,st.name);

p1-id=st.id;

strcpy(p1-sex,st.sex);

p1-score[0]=st.score[0];

p1-score[1]=st.score[1];

p1-score[2]=st.score[2];

p1-score[3]=st.score[3];

p1-total=st.total;

if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head

else p2-next=p1;//否则将p1赋给p2所指结构体的next指针

p2=p1;//将指针p1赋给指针p2

n++; //将n的值加1

//显示读入数据

cout" "p1-name"\t"

p1-id"\t""\t"

p1-sex"\t"

p1-score[0]"\t"

p1-score[1]"\t"

p1-score[2]"\t"

p1-score[3]"\t"

p1-totalendl;

cout" …………………………………………………………………………………………"endl;

//

}

cout" 数据已经成功读取完毕。"endl;

p2-next=NULL;

return (head);

}

}

//------------------------------主函数.

int main(void)

{

Information person;

student *head=NULL;

char str[10];

int flag=0;

int choice;

long int i;

head=person.Read();

do{

cout"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"endl;

cout"┃ 学生成绩管理系统主菜单界面 ┃"endl ;

cout"┃ 读取数据请输入数字零 ┃"endl;

cout"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫"endl;

cout"┃ ①.输入学生成绩 ┃"endl;

cout"┃ ②.显示学生成绩 ┃"endl;

cout"┃ ③.排序统计成绩 ┃"endl;

cout"┃ ④.查找学生成绩 ┃"endl;

cout"┃ ⑤.增加学生成绩 ┃"endl;

cout"┃ ⑥.删除学生成绩 ┃"endl;

cout"┃ ⑦.保存退出系统 ┃"endl;

cout"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"endl;

cout"请输入您的选择(1--7):( )\b\b";

cinstr;

if(atoi(str)7 || atoi(str)1)

cout"对不起,请输入1-7这几个数字!!\n";

else

{

choice=atoi(str);

switch(choice)

{

case 1:

head=person.creat();

break;

case 2:

person.output(head);

break;

case 3:

person.inorder(head);

person.average(head);

cout" 参加考试的学生人数为:"person.count(head)"人\n";

break;

case 4:

cout" 请输入要查找的准考证号(8位):";

do{

cinstr;

if(atol(str)99999999 || atol(str)1)

cout"对不起,请输入正确输入!!!\n";

else

{i=atol(str); flag=1; }

}while(flag==0);

flag=0;

person.find(head,i);

break;

case 5:

head=person.insert(head);

person.output(head);

break;

case 6:

cout" 请输入要删除的准考证号(8位):";

do{

cinstr;

if(atol(str)99999999 || atol(str)1)

cout"对不起,请输入正确输入!!!h\n";

else

{i=atol(str); flag=1; }

}while(flag==0);

flag=0;

head=person.cancel(head,i);

person.output(head);

break;

case 7:

person.save(head);

cout"文件已保存!可以安全退出!!!"endl;

break;

default :cout" 对不起,您的输入有误,请重新输入。\n";

break;

}

}

}while(choice!=7);

return 0;

}

vc++学生信息管理系统

我做过一个类似的程序,看看行不行。

#includeiostream

#includefstream

#includestring

using namespace std;

class StudBase

{

public:

StudBase(){}

void enter();

void show();

protected:

string number;

string name;

char* sex;

int age;

string major;

};

void StudBase::enter()

{

cout"请输入学生基本信息:";

coutendl"number:";

cinnumber;

cout"name:";

cinname;

cout"sex:";

sex=new char[10];

cinsex;

cout"age:";

cinage;

cout"major:";

cinmajor;

return;

}

void StudBase::show()

{

cout"学生基本信息为:"endl;

cout"number""\t""name""\t""sex""\t""age""\t""major"endl;

coutnumber"\t"name"\t"sex"\t"age"\t"majorendl;

return;

}

class Major:virtual public StudBase

{

public:

void gmajsco();

void pmajsco();

float majaverage(){return (majave=(Maj_score[0]+Maj_score[1]+Maj_score[2])/3);} //求主修平均分

protected:

float Maj_score[3];

float majave;

};

void Major::gmajsco()

{

cout"请输入主修的三门成绩:";

for(int i=0;i3;i++){

cinMaj_score[i];

}

return;

}

void Major::pmajsco()

{

cout"主修三门成绩为:"endl;

cout"major 1""\t""major 2""\t""major 3"endl;

coutMaj_score[0]"\t"Maj_score[1]"\t"Maj_score[2]endl;

return;

}

class Minor:virtual public StudBase

{

public:

void gminsco();

void pminsco();

float minaverage(){return (minave=(Min_score[0]+Min_score[1])/2);} //求辅修平均分

protected:

float Min_score[2];

float minave;

};

void Minor::gminsco()

{

cout"请输入辅修的两门成绩:";

cinMin_score[0]Min_score[1];

return;

}

void Minor::pminsco()

{

cout"辅修的两门成绩为:"endl;

cout"minor 1""\t""minor 2"endl;

coutMin_score[0]"\t"Min_score[1]endl;

return;

}

class Student:public Major,public Minor

{

public:

Student(){};

void average(); //求总平均分

void find(string);

void get_from_file(); //从文件提取信息

void save_to_file(); //保存到文件

float reave(){return ave;} //返回总平均值

friend ostream operator (ostream,Student);

private:

float ave;

};

ostream operator (ostream out,Student obj)

{

obj.show();

obj.pmajsco();

obj.pminsco();

obj.average();

return out;

}

Student stud[10];

Student* ptr[10];

ifstream infile;

void Student::save_to_file()

{

ofstream outfile("file.dat",ios::out|ios::app);

if(!outfile)

{

cerr"open file.dat error!"endl;

exit(1);

}

cout"number:"; cinnumber;

outfilenumberendl;

cout"name:"; cinname;

outfilenameendl;

cout"sex:";

sex=new char[10];

cinsex;

outfilesexendl;

cout"age:"; cinage;

outfileageendl;

cout"major:"; cinmajor;

outfilemajorendl;

cout"请输入主修的三门成绩:";

for(int s=0;s3;s++){

cinMaj_score[s];

outfileMaj_score[s]" ";

}

outfileendl;

cout"请输入辅修的两门成绩:";

for(int g=0;g2;g++){

cinMin_score[g];

outfileMin_score[g]" ";

}

outfileendl;

outfile.close();

return;

}

void Student::get_from_file()

{

if(!infile)

{

cerr"open error!"endl;

exit(1);

}

infilenumber;

infilename;

sex=new char[10];

infilesex;

infileage;

infilemajor;

for(int a=0;a3;a++){infileMaj_score[a];}

for(int b=0;b2;b++){infileMin_score[b];}

return;

}

void Student::average()

{

ave=(Maj_score[0]+Maj_score[1]+Maj_score[2]+Min_score[0]+Min_score[1])/5;

cout"平均成绩为:"aveendl;

return;

}

int flag=0;

void Student::find(string str)

{

if((str==name)||(str==number)){

cout(*this);

flag=1;

}

return;

}

void bubble1(Student* p[],int length)

{

int segment;

int loop;

Student* temp;

for(segment=0;segment=length-2;segment=segment+1){

for(loop=length-2;loop=segment;loop=loop-1){

if((*p[loop]).majaverage()(*p[loop+1]).majaverage()){

temp=p[loop];

p[loop]=p[loop+1];

p[loop+1]=temp;

}

}

}

return;

}

void bubble2(Student* p[],int length)

{

int segment;

int loop;

Student* temp;

for(segment=0;segment=length-2;segment=segment+1){

for(loop=length-2;loop=segment;loop=loop-1){

if((*p[loop]).minaverage()(*p[loop+1]).minaverage()){

temp=p[loop];

p[loop]=p[loop+1];

p[loop+1]=temp;

}

}

}

return;

}

void bubble3(Student* p[],int length)

{

int segment;

int loop;

Student* temp;

for(segment=0;segment=length-2;segment=segment+1){

for(loop=length-2;loop=segment;loop=loop-1){

if((*p[loop]).reave()(*p[loop+1]).reave()){

temp=p[loop];

p[loop]=p[loop+1];

p[loop+1]=temp;

}

}

}

return;

}

int main()

{

int n=0,j=0;

int choice;

for(int r=0;r10;r++){

ptr[r]=stud[r];

}

cout"选择要进行的操作:"endl;

cout"1.输入学生信息"endl;

cout"2.输出学生信息"endl;

cout"3.保存到文件file"endl;

cout"4.输出文件信息"endl;

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

cout"6.统计学生成绩"endl;

cout"7.学生成绩排序(从高至低)"endl;

cout"0.退出."endl;

while(cinchoice,choice!=0)

{

switch(choice){

case 1:

while(1){

stud[n].enter();

stud[n].gmajsco();

stud[n].gminsco();

n++;

cout"输入成功!"endl;

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 2:

while(1){

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

stud[i].show();

stud[i].pmajsco();

stud[i].pminsco();

stud[i].average();

}

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 3:

while(1){

stud[j].save_to_file();

j++;

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 4:

while(1){

int f;

cout"请输入需要从文件输出对象信息的个数: ";

cinf;

infile.open("file.dat",ios::in);

for(int k=0;kf;k++){

stud[k].get_from_file();

coutendlstud[k];

n++;

}

infile.close();

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag=='n') break;

}

break;

case 5:

while(1){

cout"请输入需要查询的学生姓名或学号:"endl;

string st;

cinst;

cout"查询结果为:"endl;

for(int p=0;pn;p++){

stud[p].find(st);

}

if(flag==0){

cout"查无此人!"endl;

}

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 6:

while(1){

float sum=0.0;

cout"所有学生平均分为:"endl;

for(int w=0;wn;w++){

sum=sum+stud[w].reave();

}

cout(sum/n)endl;

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 7:

while(1){

int choice2;

cout"1.按主修平均成绩"endl;

cout"2.按辅修平均成绩"endl;

cout"3.按总平均成绩"endl;

cinchoice2;

switch(choice2){

case 1:

bubble1(ptr,n);

for(int b=0;bn;b++){

cout(*ptr[b])endl;

}

break;

case 2:

bubble2(ptr,n);

for(int b=0;bn;b++){

cout(*ptr[b])endl;

}

break;

case 3:

bubble3(ptr,n);

for(int b=0;bn;b++){

cout(*ptr[b])endl;

}

}

char flag;

cout"是否继续?(y/n): ";

cinflag;

if(flag!='y') break;

}

break;

case 0:

break;

}

coutendl"1.输入学生信息"endl;

cout"2.输出学生信息"endl;

cout"3.保存到文件file"endl;

cout"4.输出文件信息"endl;

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

cout"6.统计学生成绩"endl;

cout"7.学生成绩排序(从高至低)"endl;

cout"0.退出."endl;

}

return 0;

}

vc++ 学生基本信息管理系统

需要为你提供一份适用于初学者的学生基本信息管理系统代码么,

请与我们联系进一步需求,,带着你的问题和Email来找我,有时间可以帮你,绝对救急,使用百度_Hi给我留言,

此回复对于所有需求和和来访者有效,

ES:\\741D71037DEFFA2B6C8BA9C7CA33A1F1

vc++6.0 学生信息管理系统(含教师端 学生端密码登陆)代码 或则文档

有一个,你自己稍微修改一下就可以的了:

#includeiostream.h /*引用库函数*/

#includestdlib.h

#includectype.h

#includestdio.h

#includestring.h

typedef struct

{

char class_0[20]; /*班级*/

int number; /*学号*/

char name[20]; /*姓名*/

float electrics; /*电子技术成绩*/

float c_program; /*C++语言成绩*/

float multimedia; /*多媒体技术成绩*/

float english; /*大学英语成绩*/

float math; /*高等数学成绩*/

float sport; /*体育成绩*/

float polity; /*马克思主义政治经济学*/

float summary; /*总分*/

float average; /*平均分*/

}Student;

Student stu[100]; /*结构体数组变量*/

int menu() /*菜单函数*/

{

char c;

do

{

system("cls"); /*运行前清屏*/

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;

cout"【9】将所有记录写入文件"endl;

cout"【0】退出本系统\n"endl;

cout"**********************作者:07 网络一班 3207001349************************"endl;

cout"请你选择操作(0-9):"endl;

c=getchar(); /*读入选择*/

}

while(c'0'||c'9');

return(c-'0'); /*返回选择*/

}

int Input(Student stud[],int n) /*输入若干条记录*/

{

int i=0;

char sign,x[10]; /*x[10]为清除多余的数据所用*/

while(sign!='n'sign!='N') /*判断*/

{

cout"请输入学生的班别:"; /*交互输入*/

cinstud[n+i].class_0;

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

cinstud[n+i].number;

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

cinstud[n+i].name;

cout"请输入该学生『电子技术』的成绩:";

cinstud[n+i].electrics;

cout"请输入该学生『C++程序设计』的成绩:";

cinstud[n+i].c_program;

cout"请输入该学生『多媒体技术』的成绩:";

cinstud[n+i].multimedia;

cout"请输入该学生『大学英语』的成绩:";

cinstud[n+i].english;

cout"请输入该学生『高等数学』的成绩:";

cinstud[n+i].math;

cout"请输入该学生『大学体育』的成绩:";

cinstud[n+i].sport;

cout"请输入该学生『马克思主义政治经济学』的成绩:";

cinstud[n+i].polity;

stud[n+i].summary=stud[n+i].electrics+stud[n+i].c_program+stud[n+i].multimedia+stud[n+i].english+stud[n+i].math+stud[n+i].sport+stud[n+i].polity;

stud[n+i].average=stud[n+i].summary/7;

cout"该学生的总分为:"stud[n+i].summary"平均分为:"stud[n+i].averageendl;

gets(x); /*清除多余的输入*/

cout"=====提示:继续写入成绩?(Y/N)";

cinsign; /*输入判断*/

i++;

}

return(n+i);

}

void Display(Student stud[],int n) /*显示所有记录*/

{

int i;

if(!stud)cout"没有记录";

else{

cout"--------------------------------------------------------------------------------"endl; /*格式头*/

cout" 班别 学号 姓名 电子 C++ 多媒体 英语 数学 体育 政治 总分 平均分"endl;

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

for(i=1;in+1;i++) /*循环输入*/

{

stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].english+

stud[i-1].math+stud[i-1].sport+stud[i-1].polity;

stud[i-1].average=stud[i-1].summary/7;

coutstud[i-1].class_0" "stud[i-1].number" "stud[i-1].name" "stud[i-1].electrics" "stud[i-1].c_program" "stud[i-1].multimedia" "stud[i-1].english" "

stud[i-1].math" "stud[i-1].sport" "stud[i-1].polity" "stud[i-1].summary" "stud[i-1].averageendl;

}

cout"\t\t\t"endl; }

system("pause");

}

void Sort(Student stud[],int n) /*按平均分排序*/

{

int i,j,k;

float s;

char t[20];

for(i=0;in-1;i++) /*冒泡法排序*/

for(j=0;jn-1-i;j++)

if(stud[j].averagestud[j+1].average)

{

strcpy(t,stud[j+1].class_0);

strcpy(stud[j+1].class_0,stud[j].class_0);

strcpy(stud[j].class_0,t);

k=stud[j+1].number;

stud[j+1].number=stud[j].number;

stud[j].number=k;

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

s=stud[j+1].electrics;

stud[j+1].electrics=stud[j].electrics;

stud[j].electrics=s;

s=stud[j+1].c_program;

stud[j+1].c_program=stud[j].c_program;

stud[j].c_program=s;

s=stud[j+1].multimedia;

stud[j+1].multimedia=stud[j].multimedia;

stud[j].multimedia=s;

s=stud[j+1].english;

stud[j+1].english=stud[j].english;

stud[j].english=s;

s=stud[j+1].math;

stud[j+1].math=stud[j].math;

stud[j].math=s;

s=stud[j+1].sport;

stud[j+1].sport=stud[j].sport;

stud[j].sport=s;

s=stud[j+1].polity;

stud[j+1].polity=stud[j].polity;

stud[j].polity=s;

s=stud[j+1].summary;

stud[j+1].summary=stud[j].summary;

stud[j].summary=s;

s=stud[j+1].average;

stud[j+1].average=stud[j].average;

stud[j].average=s;

}

cout"--------------------------------------------------------------------------------"endl; /*格式头*/

cout" 班别 学号 姓名 电子 C++ 多媒体 英语 数学 体育 政治 总分 平均分"endl;

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

for(i=1;in+1;i++) /*循环输入*/

{

stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].english+

stud[i-1].math+stud[i-1].sport+stud[i-1].polity;

stud[i-1].average=stud[i-1].summary/7;

coutstud[i-1].class_0stud[i-1].numberstud[i-1].namestud[i-1].electricsstud[i-1].c_programstud[i-1].multimediastud[i-1].english

stud[i-1].mathstud[i-1].sportstud[i-1].politystud[i-1].summarystud[i-1].averageendl;

}

}

int Insert(Student stud[],int n) /*插入一条记录*/

{

char x[10]; /*清除多余输入所用*/

cout"请输入学生的班别:"endl; /*交互输入*/

cinstud[n].class_0;

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

cinstud[n].number;

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

cinstud[n].name;

cout"请输入该学生『电子技术』的成绩:";

cinstud[n].electrics;

cout"请输入该学生『C++程序设计』的成绩:";

cinstud[n].c_program;

cout"请输入该学生『多媒体技术』的成绩:";

cinstud[n].multimedia;

cout"请输入该学生『大学英语』的成绩:";

cinstud[n].english;

cout"请输入该学生『高等数学』的成绩:";

cinstud[n].math;

cout"请输入该学生『大学体育』的成绩:";

cinstud[n].sport;

cout"请输入该学生『马克思主义政治经济学』的成绩:";

cinstud[n].polity;

stud[n].summary=stud[n].electrics+stud[n].c_program+stud[n].multimedia+stud[n].english+

stud[n].math+stud[n].sport+stud[n].polity;

stud[n].average=stud[n].summary/7;

gets(x);

n++;

Sort(stu,n); /*调用排序函数*/

cout"=====提示:插入成功!"endl; /*返回成功信息*/

return(n);

}

int Delete(Student stud[],int n) /*按学号查找,删除一条记录*/

{

int s;

int i=0,j;

cout"输入需要删除学生的学号:"endl; /*交互式问寻*/

cins;

while((stud[i].number-s)!=0in) i++; /*查找判断*/

if(i==n)

{

cout"=====提示:对不起,无法找到改学号……"endl; /*返回失败信息*/

return(n);

}

for(j=i;jn-1;j++) /*删除操作*/

{

strcpy(stud[j].class_0,stud[j+1].class_0);

stud[j].number=stud[j+1].number;

strcpy(stud[j].name,stud[j+1].name);

stud[j].electrics=stud[j+1].electrics;

stud[j].c_program=stud[j+1].c_program;

stud[j].multimedia=stud[j+1].multimedia;

stud[j].english=stud[j+1].english;

stud[j].math=stud[j+1].math;

stud[j].sport=stud[j+1].sport;

stud[j].polity=stud[j+1].polity;

}

cout"=====提示:已成功删除!"endl; /*返回成功信息*/

return(n-1);

}

void Search(Student stud[],int n) /*查找并显示一个记录*/

{

int s;

int i=0;

cout"输入需要查找学生的学号:"endl;

cins;

while((stud[i].number-s)!=0in) i++; /*查找判断*/

if(i==n)

{

cout"=====提示:对不起,无法找到该学生的信息!"endl; /*输入失败信息*/

return;

}

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

cout"班别:"stud[i].class_0endl; /*输出该学生信息*/

cout"学号:"stud[i].numberendl;

cout"姓名:"stud[i].nameendl;

cout"电子技术:"stud[i].electricsendl;

cout"C++程序设计:"stud[i].c_programendl;

cout"多媒体技术:"stud[i].multimediaendl;

cout"大学英语:"stud[i].englishendl;

cout"高等数学:"stud[i].mathendl;

cout"大学体育:"stud[i].sportendl;

cout"马克思主义政治经济学:"stud[i].polityendl;

cout"总分:"stud[i].summaryendl;

cout"平均分:"stud[i].averageendl;

}

void Modify(Student stud[],int n)

{

int s;

int i=0;

cout"输入需要修改成绩学生的学号:"endl;

cins;

while((stud[i].number-s)!=0in) i++; /*查找判断*/

if(i==n)

{

cout"=====提示:对不起,无该学生的成绩……"endl; /*输入失败信息*/

return;

}

coutendl"==== 谢谢您的使用! ===="endl; /*结束程序*/

cout"\t\t\t";

system("pause");

exit(0);

}

}

}

学生信息管理系统模拟 编程语言为C语言,编程环境为VC++ 6.0

/*

***这个是我写的,你可以参考下,我的编译器用的是devC++,可以说我的代码效率是非常之高,同时界面精工细作的,很完美,得到老师的高度赞扬,只是没用到数据库,唯一的缺憾,vc下运行编译可能会报错,主要是两个编译器对于循环的变量声明,限制是不一致的,具体细节你可以改改就好,程序是非常对的,就是变量的声明先后,或者位置在vc下会报错,往注意,如果好的好,请及时散分。哥也很忙,这个没时间来细看了,抱歉。

*

/

#include stdio.h

#include stdlib.h

#include string.h

#includeconio.h

int shoudsave=0; /* */

struct student

{

char num[10];/*学号*/

char name[20];

int cgrade;

int mgrade;

int egrade;

int totle;

int ave;

};

typedef struct node

{

struct student data;

struct node *next;

} Node,*Link;

void menu()

{

printf("\t\t\t\t学生成绩管理系统\n\t\t\t-------------------------------\n");

printf("********************************************************************************");

printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");

printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");

printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n");

printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n");

printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n");

printf("********************************************************************************\n");

}

void printstart()

{

printf("-----------------------------------------------------------------------\n");

}

void Wrong()

{

printf("\n=====提示:输入错误!\n");

}

void Nofind()

{

printf("\n=====提示:没有找到该学生!\n");

}

void printc() /* 本函数用于输出中文标题 */

{

printf("学号 姓名 英语成绩 数学成绩 C语言成绩 总分 平均分\n");

}

void printe(Node *p)/*本函数用于输出中文标题下的具体内容 */

{

printf("\t%s \t%s \t%d \t%d \t%d \t%d \t%d\n",p-data.num,p-data.name, p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);

}//少个名字的打印

Node *Locate(Link l,char findmess[],char nameornum[]) /*该函数用于定位连表中符合要求的接点,并返回该指针 */

{

Node *r;

if(strcmp(nameornum,"num")==0) /*按学号查询*/

{

r=l-next;

while(r)

{

if(strcmp(r-data.num,findmess)==0)

return r;

r=r-next;

}

}

else if(strcmp(nameornum,"name")==0) /*按姓名查询 */

{

r=l-next;

while(r)

{

if(strcmp(r-data.name,findmess)==0)

return r;

r=r-next;

}

}

return 0;

}

void Add(Link L) /*增加学生头指针用大写便于区分*/

{

system("cls");//清屏

Node *p,*r,*s;

char num[10];

while(1)

{

r=L;

s=L-next;

while(r-next!=NULL)

r=r-next;

printf("请你输入学号(以'0'返回上一级菜单:)");

scanf("%s",num);

getchar();

if(strcmp(num,"0")==0)

break;

while(s)

{

if(strcmp(s-data.num,num)==0)

{

system("cls");

printf("=====提示:学号为'%s'的学生已经存在,请重新添加!\n",num);//改动换行

printstart();

printc();

printe(s);

printstart();

printf("\n");

printf("请你输入学号(以'0'返回上一级菜单):");

scanf("%s",num);

getchar();

s=L-next;//返回重新查找,是否新的输入已经存在

}

else

s=s-next;//没有匹配的继续找。。。

}

p=(Node *)malloc(sizeof(Node));

strcpy(p-data.num,num);

printf("请你输入姓名:");

scanf("%s",p-data.name);

getchar();//程序暂停等待输入

printf("请你输入c语言成绩:");

scanf("%d",p-data.cgrade);

getchar();

printf("请你输入数学成绩:");

scanf("%d",p-data.mgrade);

getchar();

printf("请你输入英语成绩:");

scanf("%d",p-data.egrade);

getchar();

p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;

p-data.ave=p-data.totle / 3;/*信息输入已经完成*/

p-next=NULL;

r-next=p;

//r=p;此处多余

shoudsave=1;

}

printf("按任意键返回!");

getch();

}

void Qur(Link l) /*查询学生*/

{

int sel;

char findmess[20];

Node *p;

char choice;

while(1){

system("cls");

if(!l-next)

{

printf("\n=====提示:没有资料可以查询!\n");

//不用返回return;

printf("请先添加一个数据吧,亲。。。\n");

break;

}

printf("\n=====1按学号查找\n=====2按姓名查找\n");

scanf("%d",sel);

if(sel==1)/*学号*/

{

printf("请你输入要查找的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("\t\t\t\t查找结果\n");

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

else if(sel==2) /*姓名*/

{

printf("请你输入要查找的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

printf("\t\t\t\t查找结果\n");

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

else

Wrong();

printf("\n是否继续查询(y/n):");//选择是否继续查询

getchar();

scanf("%c",choice);

if(choice=='n'){

printf("按任意键返回!亲");

getch();

break;}

}

}

void Del(Link l) /*删除*/

{

int sel;

Node *p,*r;

char choice;

char findmess[20];

while(1){

system("cls");

if(!l-next)

{

printf("\n=====提示:没有资料可以删除!\n");

printf("返回重新选择吧,亲。。。");//return;

break;

}

printf("\n=====1按学号删除\n=====2按姓名删除\n");

scanf("%d",sel);

if(sel==1)

{

printf("请你输入要删除的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

r=l;

while(r-next!=p)

r=r-next;

r-next=p-next;

free(p);

printf("\n=====提示:该学生已经成功删除!\n");

shoudsave=1;

printf("\n是否继续删除(y/n):");//选择是否继续删除

getchar();

scanf("%c",choice);

if(choice=='n')

break;

}

else{

Nofind();

break;

}

}

else if(sel==2)

{

printf("请你输入要删除的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

r=l;

while(r-next!=p)

r=r-next;

r-next=p-next;

free(p);

printf("\n=====提示:该学生已经成功删除!\n");

shoudsave=1;

printf("\n是否继续删除(y/n):");//选择是否继续删除

getchar();

scanf("%c",choice);

if(choice=='n')

break;

}

else{

Nofind();

break;

}

}

else

Wrong();

system("pause");

}

printf("按任意键返回哦,亲");

getch();

}

void Modify(Link l)

{

system("cls");

Node *p,*s;

s=l-next;

char findmess[20];

int key=1;

while(1){

if(!l-next)

{

printf("\n=====提示:没有资料可以修改!\n");

break;

}

while(key){

system("cls");

getchar();

printf("请你输入要修改的学生学号:");

scanf("%s",findmess);

//添加一个检验是否有该学生号的函数

while(s)

{

if(strcmp(s-data.num,findmess)==0)

{

system("cls");

printf("=====提示:学号为'%s'的学生已经找到,请修改!\n",findmess);

printstart();

printc();

printe(s);

printstart();

printf("\n");

key=0;//跳出大循环

break;//跳出内循环

}

else

s=s-next;//没有匹配的继续找。。。

}

//如果扫描完,仍没有找到,则提示重新输入

if(!s)

printf("\n该学号不存在,请检查是否输入正确!\n");

system("pause");

}

p=Locate(l,findmess,"num");

if(p)

{

// printf("请你输入新的c语言成绩(原来是%d分):",p-data.cgrade);

// scanf("%d",p-data.cgrade);

printf("请你输入新的姓名:");

scanf("%s",p-data.name);

getchar();//程序暂停等待输入

printf("请你输入新的c语言成绩:");

scanf("%d",p-data.cgrade);

getchar();

printf("请你输入新的数学成绩:");

scanf("%d",p-data.mgrade);

getchar();

printf("请你输入新的英语成绩:");

scanf("%d",p-data.egrade);

getchar();

p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;//修改后总成绩以及平均成绩都要变化

p-data.ave=p-data.totle / 3;/*信息输入已经完成*/

printf("\n=====提示:资料修改成功!\n");

shoudsave=1;

}

else

Nofind();

break;

}

printf("请按任意键继续。。。");

getch();

}

void Disp(Link l)

{

system("cls");

int count=0;

Node *p;

p=l-next;

while(1){

if(!p)

{

printf("\n=====提示:没有资料可以显示!\n");

//回复毛啊return;

break;

}

printf("\t\t\t\t显示结果\n");

printstart();

printc();

printf("\n");

while(p)

{

printe(p);

p=p-next;

}

printstart();

printf("\n");

break;//修改过

}

printf("按任意键返回!");

getch();

}

//sort排序函数

int SortData(Link L)//采用最简单冒泡排序方法按总成绩排名

{

struct student temp;

Node *r=L-next,*p1,*p2;

int count=0,i,j;

while(r)

{r=r-next;

count++;

}//计算链表的长度

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.totler-next-data.totle)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}

printf("已排序成功!请返回主界面查询!");

getch();

return 0;

}

void StatisData(Link L)

{ system("cls");

struct student temp;

Node *r=L-next,*p1,*p2;

int count=0,i,j;

while(r)

{r=r-next;

count++;

}//计算链表的长度

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.aver-next-data.ave)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}

printf("\n平均分最高的是:\t%s,%d",L-next-data.name,L-next-data.ave);

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.cgrader-next-data.cgrade)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}

printf("\nc语言成绩最高的是:\t%s,%d",L-next-data.name,L-next-data.cgrade);

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.mgrader-next-data.mgrade)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}

printf("\n数学成绩最高的是:\t%s,%d",L-next-data.name,L-next-data.mgrade);

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.egrader-next-data.egrade)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}

printf("\n英语成绩最高的是:\t%s,%d",L-next-data.name,L-next-data.egrade);

for(i=1;i=count-1;i++){

for(r=L-next,j=1;j=count-i;r=r-next)

{

if(r-data.totler-next-data.totle)

{temp=r-data;

r-data=r-next-data;

r-next-data=temp;}

/*p1=r-next;

r-next=r-next-next;

p2=r-next-next-next;

r-next-next=p1;

r-next-next-next=p2;*/

j++;

}

}//

printf("\n总成绩最高的是:\t%s,%d",L-next-data.name,L-next-data.totle);

system("pause");

}

void Save(Link l)

{

system("cls");

FILE *fp;

Node *p;

int flag=1,count=0;

fp=fopen("c:\\student.txt","wb");

if(fp==NULL)

{

printf("\n=====提示:重新打开文件时发生错误!\n");

exit(1);

}

p=l-next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p-next;

count++;

}

else

{

flag=0;

break;

}

}

if(flag)

{

printf("\n=====提示:文件保存成功.(有%d条记录已经保存.)\n",count);

shoudsave=0;

}

fclose(fp);

system("pause");

}

int main()

{

Link l;/*连表*/

FILE *fp; /*文件指针*/

int sel;

char ch;

system("color 4f");

int count=0;

Node *p,*r;

//加入menu函数中了 printf("\t\t\t\t学生成绩管理系统\n\t\t\t-------------------------------\n");

l=(Node*)malloc(sizeof(Node));

l-next=NULL;

r=l;

fp=fopen("C:\\student.txt","ab+");

if(fp==NULL)

{

printf("\n=====提示:文件不能打开!\n");

exit(0);

}

printf("\n=====提示:文件已经打开,正在导入记录......\n");

while(!feof(fp))

{

p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp)==1) /*将文件的内容放入接点中 */

{

p-next=NULL;

r-next=p;

r=p; /*将该接点挂入连中*/

count++;

}

}

fclose(fp); /*关闭文件 */

while(1)

{

system("cls");

printf("\n=====提示:文件已经打开,正在导入记录......\n");

menu();//调入主循环

printf("请你选择操作:");

scanf("%d",sel);

if(sel==0)

{

if(shoudsave==1)

{ getchar();

printf("\n=====提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");

scanf("%c",ch);

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

Save(l);

}

printf("\n=====提示:你已经退出系统,再见!\n");

break;

}

switch(sel)

{

case 1:Add(l);break; /*增加学生*/

case 2:Del(l);break;/*删除学生*/

case 3:Qur(l);break;/*查询学生*/

case 4:Modify(l);break;/*修改学生*/

case 5:Disp(l);break;//显示信息

case 6:StatisData(l);break;//统计函数

case 7:SortData(l);break;//排序

case 8:Save(l);break;/*保存学生 */

case 9:printf("\t\t\t==========帮助信息==========\n");menu();system("pause");break;

default: Wrong();getchar();break;

}

}

while (l){ /*释放链表l(不是1)所占用的内存!*/

p = l;

l = l-next;

free(p);

}

getchar();

return 0;

}

用VC编写一个

#includestdio.h /*引用库函数*/

#includestdlib.h

#includectype.h

#includestring.h

typedef struct /*定义结构体数组*/

{

int num; /*学号*/

char name[20]; /*姓名*/

char born_place[20];//出生地

char sex[20];//性别

int score; /*成绩*/

}Student;

Student stu[80]; /*结构体数组变量*/

int menu_select() /*菜单函数*/

{

char c;

do

{

system("cls"); /*运行前清屏*/

printf("\t\t****学生信息管理系统****\n"); /*菜单选择*/

printf("\t\t | 1. 输入档案 |\n");

printf("\t\t | 2. 显示所有档案 |\n");

printf("\t\t | 3. 插入新档案 |\n");

printf("\t\t | 4. 删除档案 |\n");

printf("\t\t | 5. 查询 |\n");

printf("\t\t | 6. 排序 |\n");

printf("\t\t | 7. 修改 |\n");

printf("\t\t | 8. 查看最高分,最低分,平均值 |\n");

printf("\t\t | 0. 退出 |\n");

printf("\t\t*****************************************\n");

printf("\t\t\t输入你的选择(0-8):");

c=getchar(); /*读入选择*/

}while(c'0'||c'8');

return(c-'0'); /*返回选择*/

}

int Input(Student stud[],int n) /*输入若干条记录*/

{

int i=0;

char sign,x[10]; /*x[10]为清除多余的数据所用*/

while(sign!='n'sign!='N') /*判断*/

{

printf("\t\t\t学号:"); /*交互输入*/

scanf("\t\t\t%d",stud[n+i].num);

printf("\t\t\t姓名:");

scanf("\t\t\t%s",stud[n+i].name);

printf("\t\t\t出生地:");

scanf("\t\t\t%s",stud[n+i].born_place);

printf("\t\t\t性别:");

scanf("\t\t\t%s",stud[n+i].sex);

printf("\t\t\t成绩:");

scanf("\t\t\t%d",stud[n+i].score);

gets(x); /*清除多余的输入*/

printf("\t\t\t是否还要继续输入?(Y/N)");

scanf("\t\t\t%c",sign); /*输入判断*/

i++;

}

return(n+i);

}

int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/

{

char s[20];

int i=0,j;

int a=0,b=0;

printf("\t\t\t输入要删除的姓名:"); /*交互式问寻*/

scanf("%s",s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/

if(i==n)

{

printf("\t\t\t没有发现!\n"); /*返回失败信息*/

return(n);

}

for(j=i;jn-1;j++) /*删除操作*/

{

b=stud[j+1].num;

stud[j].num=b;

//strcpy(stud[j].num,stud[j+1].num);

strcpy(stud[j].name,stud[j+1].name);

strcpy(stud[j].born_place,stud[j+1].born_place);

strcpy(stud[j].sex,stud[j+1].sex);

a=stud[j+1].score ;

stud[j].score=a;

}

printf("\t\t\t删除成功!\n"); /*返回成功信息*/

return(n-1);

}

void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/

{

char s[20];

int i=0;

printf("\t\t\t请输入姓名:"); /*交互式输入*/

scanf("\t\t\t%s",s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/

if(i==n)

{

printf("\t\t\t没有发现!\n"); /*输入失败信息*/

return;

}

printf("\t\t学号:%d\n",stud[i].num);

printf("\t\t姓名:%s\n",stud[i].name);

printf("\t\t出生地:%s\n",stud[i].born_place);

printf("\t\t性别:%s\n",stud[i].sex); /*输出该学生信息*/

printf("\t\t成绩:%d\n",stud[i].score);

}

void Display(Student stud[],int n) /*显示所有记录*/

{

int i;

printf("\t\t\t-----------------------------------\n"); /*格式头*/

printf("\t\t\t学生信息\n");

printf("\t\t\t-----------------------------------\n");

printf("\t\t学号\t姓名\t出生地\t\t性别\t\t成绩\n");

printf("\t\t\t-----------------------------------\n");

for(i=1;in+1;i++) /*循环输入*/

{

printf("\t\t%-6d% -15s%-12s%-15s%-12d\n",stud[i-1].num,stud[i-1].name,stud[i-1].born_place,stud[i-1].sex,stud[i-1].score);

if(i1i%10==0) /*每十个暂停*/

{

printf("\t\t\t-----------------------------------\n"); /*格式*/

printf("\t\t\t");

system("pause");

printf("\t\t\t-----------------------------------\n");

}

}

printf("\t\t\t");

system("pause");

}

int Insert_a_record(Student stud[],int n) /*插入一条记录*/

{

int i=0;

char sign,x[10]; /*x[10]为清除多余的数据所用*/

while(sign!='n'sign!='N') /*判断*/

{

printf("\t\t\t学号:"); /*交互输入*/

scanf("\t\t\t%d",stud[n+i].num);

printf("\t\t\t姓名:");

scanf("\t\t\t%s",stud[n+i].name);

printf("\t\t\t出生地:");

scanf("\t\t\t%s",stud[n+i].born_place);

printf("\t\t\t性别:");

scanf("\t\t\t%s",stud[n+i].sex);

printf("\t\t\t成绩:");

scanf("\t\t\t%d",stud[n+i].score);

gets(x); /*清除多余的输入*/

printf("\t\t\t是否还要继续输入?(Y/N)");

scanf("\t\t\t%c",sign); /*输入判断*/

i++;

}

return(n+i);

}

void Sort_by_num(Student stud[],int n) /*按学号排序*/

{

int s=0;

int a=0,b=0;

printf("\t\t | 请选择你要的排序方式 |\n");

printf("\t\t | 1. 按学号排序 |\n");

printf("\t\t | 2. 按成绩排序 |\n");

printf("\t\t*****************************************\n");

printf("\t\t\t输入你的选择(1-2):");

scanf("%d",s);

int i=0,j=0;//,*p,*q,s;

int x=0;

char t[10];

//for(i=0;in-1;i++) /*冒泡法排序*/

//for(j=0;jn-1-i;j++)

for(i=0;in-1;i++) /*冒泡法排序*/

{

for(j=0;jn-1-i;j++)

{

if(s==1stud[j].num-stud[j+1].num0)

{

b=stud[j+1].num;

stud[j+1].num=stud[j].num;

stud[j].num=b;

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

strcpy(t,stud[j+1].born_place);

strcpy(stud[j+1].born_place,stud[j].born_place);

strcpy(stud[j].born_place,t);

strcpy(t,stud[j+1].sex);

strcpy(stud[j+1].sex,stud[j].sex);

strcpy(stud[j].sex,t);

// strcpy(t,stud[j+1].score);

a=stud[j+1].score;

// stud[j+1].score,stud[j].score;

stud[j+1].score=stud[j].score;

// strcpy(stud[j].score,t);

stud[j].score=a;

}

else if(s==2stud[j+1].score-stud[j].score0)

{

b=stud[j+1].num;

stud[j+1].num=stud[j].num;

stud[j].num=b;

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

strcpy(t,stud[j+1].born_place);

strcpy(stud[j+1].born_place,stud[j].born_place);

strcpy(stud[j].born_place,t);

strcpy(t,stud[j+1].sex);

strcpy(stud[j+1].sex,stud[j].sex);

strcpy(stud[j].sex,t);

// strcpy(t,stud[j+1].score);

a=stud[j+1].score;

// stud[j+1].score,stud[j].score;

stud[j+1].score=stud[j].score;

// strcpy(stud[j].score,t);

stud[j].score=a;

}

}

}

Display(stu,n);

}

void Xiugai_record(Student stud[],int n) /*修改信息*/

{

char s[20];

char t[500];

int i=0,a=0,x=0,b=0;

printf("\t\t\t请输入姓名:"); /*交互式输入*/

scanf("\t\t\t%s",s);

while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/

if(i==n)

{

printf("\t\t\t没有发现!\n"); /*输入失败信息*/

return;

}

printf("\t\t学号:%d\n",stud[i].num);

printf("\t\t姓名:%s\n",stud[i].name);

printf("\t\t出生地:%s\n",stud[i].born_place);

printf("\t\t性别:%s\n",stud[i].sex); /*输出该学生信息*/

printf("\t\t成绩:%d\n",stud[i].score);

printf("\t\t | 请选择你要修改的数据 |\n");

printf("\t\t | 1. 姓名 |\n");

printf("\t\t | 2. 学号 |\n");

printf("\t\t | 3. 出生地 |\n");

printf("\t\t | 4. 性别 |\n");

printf("\t\t | 5. 成绩 |\n");

printf("\t\t*****************************************\n");

printf("\t\t\t输入你的选择(1-5):");

scanf("%d",a);

if(a==1)

{

printf("\t\t\t请输入要修改的值");

scanf("%s",t);

strcpy(stud[i].name,t);

}

else if(a==2)

{

printf("\t\t\t请输入要修改的值\n");

scanf("%d",b);

stud[i].num=b;

}

else if(a==3)

{

printf("\t\t\t请输入要修改的值\n");

scanf("%s",t);

strcpy(stud[i].born_place,t);

}

else if(a==4)

{

printf("\t\t\t请输入要修改的值\n");

scanf("%s",t);

strcpy(stud[i].sex,t);

}

else if(a==5)

{

printf("\t\t\t请输入要修改的值\n");

scanf("%d",x);

stud[i].score=x;

}

}

void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/

{

int i,j=0,k=0,sum=0;

float aver; /*成绩平均值*/

for(i=0;in;i++) /*循环输入判断*/

{

sum+=stud[i].score;

if(stud[j].scorestud[i].score) j=i;

if(stud[k].scorestud[i].score) k=i;

}

aver=1.0F*sum/n;

printf("\t\t\t这里有 %d 数据\n",n); /*总共记录数*/

printf("\t\t\t最高分是:\n"); /*最高分*/

printf("\t\t\t学号:%d 姓名:%s 成绩:%d\n",stud[j].num,stud[j].name,stud[j].score);

printf("\t\t\t最低分是:\n"); /*最低分*/

printf("\t\t\t学号:%d 姓名:%s 成绩:%d\n",stud[k].num,stud[k].name,stud[k].score);

printf("\t\t\t平均分数是 %5.2f\n",aver); /*平均分*/

}

void main() /*主函数*/

{

int n=0;

for(;;)

{

switch(menu_select()) /*选择判断*/

{

case 1:

printf("\t\t\t输入信息\n"); /*输入若干条记录*/

n=Input(stu,n);

break;

case 2:

printf("\t\t\t显示所有信息\n"); /*显示所有记录*/

Display(stu,n);

break;

case 3:

//printf("\t\t\tSort\n");

//Insert_a_record(stu,n); /*按学号排序*/

n=Insert_a_record(stu,n);

printf("\t\t\t插入成功!\n");

printf("\t\t\t");

system("pause");

break;

case 4:

printf("\t\t\t删除信息\n");

n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/

printf("\t\t\t");

system("pause");

break;

case 5:

printf("\t\t\t查找\n");

Query_a_record(stu,n); /*查找并显示一个记录*/

printf("\t\t\t");

system("pause");

break;

case 6:

printf("\t\t\t查找\n");

Sort_by_num(stu,n); /*按学号排序*/

printf("\t\t\t");

system("pause");

break;

case 7:

printf("\t\t\t修改\n");

Xiugai_record(stu,n); /*按学号排序*/

printf("\t\t\t");

system("pause");

break;

case 8:

printf("\t\t\t平均值\n");

Statistic(stu,n); /*按学号排序*/

printf("\t\t\t");

system("pause");

break;

case 0:

printf("\t\t\t再见!\n"); /*结束程序*/

printf("\t\t\t");

system("pause");

exit(0);

}

}

}

还凑合着吧,这两个星期我们就做这个。正好做完了,就发上来了


原文链接:https://527256.com/40891.html

相关文章

访客
访客
发布于 2022-10-09 01:35:22  回复
---------------------------------------------------------\n"; cout"准考证号 姓 名 性别 计算机组成原理 概率统计 英语 C++ 平均分 总分 名次\n"; c
访客
访客
发布于 2022-10-09 01:53:29  回复
-------------------------------------------------------------\n"; cout"准考证号 姓 名 性别 计算机组成原理 概率统计
访客
访客
发布于 2022-10-08 23:03:11  回复
准考证号(8位):"; do{ cinstr; if(atol(str)99999999 || atol(str)1) cout"对不起,请正确输入!!!\n"; else

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部