本文目录一览:
- 1、vc学生信息管理系统
- 2、vc++学生信息管理系统
- 3、vc++ 学生基本信息管理系统
- 4、vc++6.0 学生信息管理系统(含教师端 学生端密码登陆)代码 或则文档
- 5、学生信息管理系统模拟 编程语言为C语言,编程环境为VC++ 6.0
- 6、用VC编写一个
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);
}
}
}
还凑合着吧,这两个星期我们就做这个。正好做完了,就发上来了
发布于 2022-10-09 01:35:22 回复
发布于 2022-10-09 01:53:29 回复
发布于 2022-10-08 23:03:11 回复