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

有键盘输入确认分配的空间,而不是用数组开辟一个很大的空间#include<iostream>#include"student.h"usingnamespacestd;in... 有键盘输入确认分配的空间,而不是用数组开辟一个很大的空间
#include <iostream>
#include "student.h"
using namespace std;
int main()
{
int n,i,num;
Stud stud[100];
// Stud *p=new Stud[n];
cout <<"请输入学生人数(n<100):";
cin >>n;
cout <<endl;
for(i=0;i<n;i++)
stud[i].set();
cout <<"请输入学号:";
cin >>num;
for(i=0;i<n;i++)
{
if(num==stud[i].num)
stud[i].display();
else
stud[i].display();
}
return 0;
}
不用数组限定大小,自己定义大小
展开
 我来答
哈强笑
推荐于2016-01-03 · TA获得超过223个赞
知道答主
回答量:302
采纳率:0%
帮助的人:115万
展开全部
#include <iostream>
#include<fstream>
#include<string>
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;
cin>>n;
student *p,*s;
int i;
for(i=0;i<n;i++)
{
p=new student;
cout<<"分别输入学生的年龄和姓名:";
cin>>p->age>>p->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;i<n;i++)
{
fout<<head->age<<" "<<head->name<<endl;
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())
{
fout1>>p->age>>p->name;
if(fout1.good())
cout<<p->age<<" "<<p->name<<endl;
}
fout1.close();
}
void student::chazhao()
{
string a;
int k=0;
cout<<"输入你要查找的学生的姓名:\n";
cin>>a;
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;
fout1>>p->age>>p->name;
if(p->name==a)
{
cout<<p->age<<" "<<p->name<<endl;
k=1;
break;
}
}
if(k==0) cout<<"你所查找的学生不存在!!!\n";
fout1.close();
}
void student::del()
{
student *p,*op;
string namea;
cout<<"输入你所要删除的学生的姓名:\n";
cin>>namea;
ifstream fout("d://program//test.txt",ios::in);
if(!fout){cout<<"cannot open file.";}
while(fout.good())
{
p=new student;
int i=0;
fout>>p->age>>p->name;
if(p->name==namea&&i==0)
{
delete p;
break;
}
else if(p->name==namea&&i!=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";
cin>>m;
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 请输入要删除人的姓名 : " ;
cin>>ch ;
addbook *p , *p1 ;
p1 = head ;

while( p1 )
{
// cout<<ch<<" "<<p1->name<<endl ; // 查找结点
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)
{
cin>>c ;
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)
{
cin>>c;
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 ;
}
}
*/
追问
只要输入学号可以输出学生信息即可,
追答
额,把除查找之外的功能删掉就行了,你能搞定不?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式