急求C++高手帮忙改写程序,把源程序的功能调整一下,或者重新编写也行,一定要带上注释,满意额外追加

功能要求
1学生信息包括 姓名、学号、性别、班级、电话、住址。
2能够添加学生信息。
3能够按照姓名和学号查询信息。
4能够按照姓名和学号修改信息。
5能够按照姓名和学号删除信息。
6能够一次性修改和删除一个学生的信息。
7能够一次修改和删除多个学生的信息。
(每次修改信息后能够显示全部学生信息)
8按学号排序后显示学生信息。
9用数组存储信息。
10学生的信息保存在文件里。
11能对文件进行读写 修改 删除。

本人在网上找到一个不错的源程序,就是内容不是很合适,望高手修改
源程序在115网盘,百度输入“115提取码”在提取码中输入f1db742220即可下载C++代码.txt
要已经改写过的

我以前写过一个控制台的,要求和你这个不太一样,也没写文件操作,不过你可以参考一下
#include <iostream>
#include <cstring>
struct st
{
int no;
char name[20];
int math;
int eng;
int pro;
int sum;
double ave;
};
struct Node
{
st content;
Node *next;
};
void input(st ,Node *&head);
void output(Node *head);
void del(int a,Node *&head);
void out(Node *p);
using namespace std;
Node *head=NULL;
int main()
{
A:
cout << "请不要搞恶,会崩的!!!!\n";
cout << "请输入要求操作的代号\n";
cout << "1 添加新数据。\n";
cout << "2 查找数据。\n";
cout << "3 修改数据。\n";
cout << "4 删除数据。\n";
cout << "5 统计。\n";
cout << "6 说明文档\n";
cout << "7 退出。\n";
int choice;
cin >> choice;
switch (choice)
{
case 1:
{
cout << "开始输入,请依次输入这位同学的学号、姓名、数学、英语、程序设计的成绩;输完请输-1" << endl;
st cont;
for(;;)
{
cin >> cont.no ;
if(cont.no==-1) break;
cin >> cont.name >> cont.math >> cont.eng >> cont.pro;
cont.sum = cont.math + cont.eng + cont.pro;
cont.ave = cont.sum / 3.0;
input(cont,head);
}
break;
}
case 2:
{
if(head==NULL) {cout << "已经为空!!\n"; break;}
cout << "请输入要查找的类型" <<endl;
cout << "1 学号\n" ;
cout << "2 姓名\n" ;
cout << "3 数学成绩\n" ;
cout << "4 英语成绩\n" ;
cout << "5 程序设计成绩\n" ;
cout << "6 总成绩\n" ;
cout << "7 平均成绩\n" ;
int type;
cin >> type;
switch (type)
{
case 1:
{
int target;
cout << "请输入学号。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.no==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.no==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 2:
{
char target[20];
cout << "请输入姓名。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(strcmp(target , p->content.name)==0)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(strcmp(target , p->content.name)==0)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 3:
{
int target;
cout << "请输入数学成绩。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.math==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.math==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 4:
{
int target;
cout << "请输入英语成绩。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.eng==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.eng==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 5:
{
int target;
cout << "请输入程序设计成绩。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.pro==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.pro==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 6:
{
int target;
cout << "请输入总成绩。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.sum==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.sum==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
case 7:
{

int target;
cout << "请输入平均成绩。" <<endl;
cin >> target;
int i = 1;
Node *p;
for (p=head;p->next!=NULL;p=p->next)
{
if(p->content.ave==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
i++;
}
if(p->content.ave==target)
{
cout << "第" << i << "个" << "为" << target << endl;
out(p);
}
cout << "是否删除y or n\n" ;
char y_n;
cin >> y_n;
if(y_n=='y') del(i,head);
break;
}
default:cerr << "跟你说了别恶搞,真的会崩的\n" ;
}//switch (type)
break;
}
case 3:
{
if(head==NULL) {cout << "已经为空!!\n"; break;}
cout << "请输入要修改的数据的编号"<<endl;
int a;
cin >> a;
cout << "请输入要更改的类型"<<endl;
cout << "1 学号\n" ;
cout << "2 姓名\n" ;
cout << "3 数学成绩\n" ;
cout << "4 英语成绩\n" ;
cout << "5 程序设计成绩\n" ;
int typ;
cin >> typ;
switch(typ)
{
case 1:
{
cout << "请输入新值。" <<endl;
int n;
cin >> n;
Node *p=head;
if(a==1)
{
p->content.no = n;
}
else
{
for(int i=1;i<a;i++)
{
p=p->next;
}
p->content.no = n;
}
break;
}
case 2:
{
cout << "请输入新值。" <<endl;
char n[20];
cin >> n;
Node *p=head;
if(a==1)
{
strcpy(p->content.name , n);
}
else
{
for(int i=1;i<a;i++)
{
p=p->next;
}
strcpy(p->content.name , n);
}
break;
}
case 3:
{
cout << "请输入新值。" <<endl;
int n;
cin >> n;
Node *p=head;
int temp ;
if(a==1)
{
temp=p->content.math ;
p->content.math = n;
}
else
{
for(int i=1;i<a;i++)
{
p=p->next;
}
temp=p->content.math ;
p->content.math = n;
}
p->content.sum=p->content.sum - temp + n;
p->content.ave=p->content.sum/3.0;
break;
}
case 4:
{
cout << "请输入新值。" <<endl;
int n;
cin >> n;
Node *p=head;
int temp ;
if(a==1)
{
temp=p->content.eng ;
p->content.eng = n;
}
else
{
for(int i=1;i<a;i++)
{
p=p->next;
}
temp=p->content.eng;
p->content.eng = n;
}
p->content.sum=p->content.sum - temp + n;
p->content.ave=p->content.sum/3.0;
break;
}
case 5:
{
cout << "请输入新值。" <<endl;
int n;
cin >> n;
Node *p=head;
int temp ;
if(a==1)
{
temp=p->content.pro ;
p->content.pro = n;
}
else
{
for(int i=1;i<a;i++)
{
p=p->next;
}
temp=p->content.pro;
p->content.pro = n;
}
p->content.sum=p->content.sum - temp + n;
p->content.ave=p->content.sum/3.0;
break;
}
default:cerr << "跟你说了别恶搞,真的会崩的\n" ;
}//switch(typ)
break;
}
case 4:
{
if(head==NULL) {cout << "已经为空!!\n"; break;}
cout << "请输入要删除的数据的位置" <<endl;
int loc;
cin >> loc;
del(loc,head);
break;
}
case 5:
{
if(head==NULL) {cout << "已经为空!!\n"; break;}

cout << "请选择统计类型" << endl;
cout << "1 每门课90分以上的" <<endl;
cout << "2 每门课60分以下的" <<endl;
cout << "3 单科分数排名" <<endl;
cout << "4 总分排名" <<endl;
int tp;
cin >> tp;
switch (tp)
{
case 1:
{
cout << "选择科目\n" << "1 数学\n2 英语\n3 程序设计\n";
int dec;
cin >> dec;
if(dec == 1)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.math>90) out(q);
}
if(q->content.math>90) out(q);
}
else if(dec == 2)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.eng>90) out(q);
}
if(q->content.eng>90) out(q);
}
else if(dec == 3)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.pro>90) out(q);
}
if(q->content.pro>90) out(q);
}
else
cout << "输入错误\n";
break;
}
case 2:
{
cout << "选择科目\n" << "1 数学\n2 英语\n3 程设\n";
int dec;
cin >> dec;
if(dec == 1)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.math<60) out(q);
}
if(q->content.math<60) out(q);
}
else if(dec == 2)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.eng<60) out(q);
}
if(q->content.eng<60) out(q);
}
else if(dec == 3)
{
Node *q;
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for(q=head;q->next!=NULL;q=q->next)
{
if(q->content.pro<60) out(q);
}
if(q->content.pro<60) out(q);
}
else
cout << "输入错误\n";
break;
}
case 3:
{
cout << "选择科目\n" << "1 数学\n2 英语\n3 程序设计\n";
int dec;
cin >> dec;
if(dec == 1)
{
for(Node *q1=head;q1->next!=NULL;q1=q1->next)
{
Node *q_max=q1;
for(Node *q2=q1->next;q2->next!=0;q2=q2->next)
{
if(q2->content.math > q_max->content.math)
q_max=q2;
if(q1->content.math !=q_max->content.math )
{
Node temp;
temp.content =q1->content;
q1->content=q2->content;
q2->content=temp.content;
}
}

}
output(head);

}
else if(dec == 2)
{
for(Node *q=head;q->next!=NULL;q=q->next)
{
for(Node *q1=head;q1->next!=NULL;q1=q1->next)
{
Node *q_max=q1;
for(Node *q2=q1->next;q2->next!=0;q2=q2->next)
{
if(q2->content.eng > q_max->content.eng )
q_max=q2;
if(q1->content.eng !=q_max->content.eng )
{
Node temp;
temp.content =q1->content;
q1->content=q2->content;
q2->content=temp.content;
}
}

}
}
output(head);
}
else if(dec == 3)
{
for(Node *q=head;q->next!=NULL;q=q->next)
{
for(Node *q1=head;q1->next!=NULL;q1=q1->next)
{
Node *q_max=q1;
for(Node *q2=q1->next;q2->next!=0;q2=q2->next)
{
if(q2->content.pro > q_max->content.pro)
q_max=q2;
if(q1->content.pro!=q_max->content.pro)
{
Node temp;
temp.content =q1->content;
q1->content=q2->content;
q2->content=temp.content;
}
}
}

}
output(head);
}
else
cout << "输入错误\n";
break;
}
case 4:
{
for(Node *q=head;q->next!=NULL;q=q->next)
{
for(Node *q1=head;q1->next!=NULL;q1=q1->next)
{
Node *q_max=q1;
for(Node *q2=q1->next;q2->next!=0;q2=q2->next)
{
if(q2->content.sum > q_max->content.sum)
q_max=q2;
if(q1->content.sum!=q_max->content.sum)
{
Node temp;
temp.content =q1->content;
q1->content=q2->content;
q2->content=temp.content;
}
}
}

}
output(head);
break;
}
default:cerr << "跟你说了别恶搞,真的会崩的\n" ;
}//switch(tp)
break;
}
case 6:
{
cout <<"################################################################################\n";
cout <<"这是B版,容易崩溃,请按照正常方式输入,如果您想测试它是否会崩,那肯定崩!!!!\n";
cout <<endl;
cout <<"################################################################################\n";
break;
}
case 7:
{
cout << "谢谢使用,没崩说明你强\n";
return 0;
break ;
}
default:cerr << "跟你说了别恶搞,真的会崩的\n" ;
} //switch(choice)
goto A;
}

void del (int a,Node *&head)
{
if(head==NULL) {cout << "已经为空!!\n" <<endl;return ;}
Node *p=head;
if(a==1)
{
head=p->next;
delete p;
}
else
{
Node *q=p->next;
for(int i=1;i<a-1;i++)
{
p=p->next;
q=p->next;
}
p->next=q->next;
delete q;
}
}
void out(Node *p)
{

cout << p->content.no <<'\t';
cout << p->content.name <<'\t';
cout << p->content.math <<'\t';
cout << p->content.eng <<'\t';
cout << p->content.pro <<'\t';
cout << p->content.sum <<'\t';
cout << p->content.ave <<'\n';
}

void output(Node *head)
{
cout << "学号\t" << "姓名\t" << "数学\t"<< "英语\t"<< "程设\t"<< "总分\t" << "平均分\n" ;
for (Node *p=head;p!=NULL;p=p->next)
{
cout << p->content.no<<'\t';
cout << p->content.name<<'\t';
cout << p->content.math<<'\t';
cout << p->content.eng <<'\t';
cout << p->content.pro<<'\t';
cout << p->content.sum<<'\t';
cout << p->content.ave<<'\t';
cout << endl;
}
}

void input(st cont,Node *&head)
{
Node *p=new Node;
p->content=cont;
if (head==NULL)
{
head=p;
p->next=NULL;
}
else
{
p->next=head;
head=p;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-09
程序已经发送到你的邮箱了本回答被提问者采纳

帮忙编写一个简单c++程序,要源代码
include<iostream> using namespace std;float f(float,float);void main(){ float x,y;cin>>x>>y;\/\/输入xy的值 cout<<f(x,y)<<endl;\/\/求函数输出结果 } float f(float x,float y){ if(y==1)return x;else return x+f(x,y-1);} ...

求高手帮忙写下C++代码
using namespace std;void main(){ int age; \/\/记录年龄 cout<<"Enter Your Age:"<<endl; \/\/屏幕输出“Enter Your Age:”cin>>age; \/\/从键盘输入年龄 cout<<"Your Age is:"<<age<<endl;\/\/屏幕输出“Your Age is:键盘输入的数字”getchar(); \/\/等待接收字符结束程序(在某...

visual c++中先编辑运行一个程序,关闭编写的文本框,再编一个,运行时...
比如visual c++中,就直接提供这些控件让人们使用,因为绘制各种控件的方式虽然麻烦,但其过程大致是相同的,所以人们只需给出诸出高度,宽度,名称之类的参数,而把绘制的过程交给了编译程序,就好像在word里面画一张表格一样,

求解C++源代码编写 这样的程序源代码咋弄?
如果是控制台程序的话我想只需要用一个类组织职工信息,然后利用文件操作用于保存就好,如果是可视化的话信息的保存用文件或是数据库都成吧,希望这些话对楼主有所帮助

假如我已经有了一个c++语言程序代码,那我要怎样让这个代码运行,请详 ...
选 C++,中间选WIN32控制台应用程序,下面的名称和位置是可以改的。像我改成这样 点击确定后 再点下一步 记得要把空项目打勾,然后点完成,在右边的解决方案那里,在源文件点右键,新建项。会出现下面的图片 点添加就行了。之后把代码给复制进去。像这样 按ctrl+f5执行。会出现下面的图片 点是就行...

一个C++写的软件没有加壳,想问下怎么编辑它的源代码?或者直接编辑里面代 ...
没有加壳只是能够反汇编,编绎成功的软件不能够直接转化为源代码的,源代码--》编译--》连接--》可执行的文件,除非那软件很重要,不然反汇编是很麻烦的

高手们帮我看看c语言程序,请给每行代码和功能注释
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do ?Cwhile循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的...

什么叫程序编程 写程序 高手给与指点 初学者
电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。计算机所能识别的语言只有机器语言,即由构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于...

...喊话EXE程序,现在他已经离职了!我想修改一下功能,请问用什么软件...
现在自动喊话 写脚本就行了 按键精灵的。

用C++写了程序怎么保存了打不开,,,请求高手
首先,你编的程序必须是可以执行的!在你编程之前最好选择一个比较合适的磁盘,建一个文件夹,来专门存诸它!当你编完保存好后,在这个相应的文件夹里除了有你编的文件外,系统会自动生成一个文件夹,里边存有与之相应的源文件,那个是打不开的!然后在你编的那些文件里边有一个格式是“cpp”格式...

相似回答
大家正在搜