C++题目,不会做。

youzhijie_1 2010-12-23 05:54:05
(20)设计一个用菜单操作的控制台程序,该程序可以插入一个新的学生记录、删除一个旧的学生记录、修改学生的成绩、查询某学生的成绩、统计成绩。学生的记录包括:学号、姓名、语文、数学、物理、化学、英语等科的成绩。提示:使用文本文件结构,学号用于唯一地标识一个学生,插入时学号不允许重复、学生姓名不允许为空、各科成绩应在0~100的合理范围;删除之前必须先确定是否有该学生存在;若允许改变学号,则必须保证学号是唯一的;统计功能包括:各科的最高分、最低分、平均分以及分段统计优、良、中、及格与不及格人数。
...全文
204 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙哥依旧 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tiger9991 的回复:]
13楼太牛X,帮忙做作业
[/Quote]说过了,是帮忙改的,再让他参考下!
「已注销」 2010-12-26
  • 打赏
  • 举报
回复
这是比较简单的题目类型,最好自己搞一下,不然你以后怎么办呀..
如果只是想应付,那就抄抄改改变量名就算了。
cokeclassic 2010-12-24
  • 打赏
  • 举报
回复
路过 看看
傻X 2010-12-24
  • 打赏
  • 举报
回复
13楼太牛X,帮忙做作业
yujunnb 2010-12-24
  • 打赏
  • 举报
回复
还是楼上NX
龙哥依旧 2010-12-24
  • 打赏
  • 举报
回复
给你一个前几天帮人改的从C到C++的通讯录系统,你自己改个名,加点内容吧!
#include<iostream>
#include <fstream>
#include<string>
#include<cmath>

using namespace std;

struct TEL
{
char name[20];
char addrass[20];
char zip[20];
char telephone[20];
TEL *next;
};

class book
{
public:
void showmenu(); //菜单
void Appenditem(); //添加条目
void print(); //输出条目
void Finditem1(); //查找条目( 按姓名 )
void Removeitem(); //删除信息
void Saveandfree(); //保存到文件
void Open(); //打开文件
private:
TEL *head;
};
static book s;

void book::showmenu()
{
cout<<"*****************通讯录系统*****************"<<endl;
cout<<"\t1.添加条目"<<endl;
cout<<"\t2.输出输出"<<endl;
cout<<"\t3.按姓名查询"<<endl;
cout<<"\t4.删除条目"<<endl;
cout<<"\t0.保存并退出"<<endl;
cout<<"********************************************"<<endl;
cout<<"请选择"<<endl;
}
//添加条目
void book::Appenditem()
{
TEL *p1=NULL,*p2=NULL;
p1=new TEL; //申请结点
memset(p1,0,sizeof(TEL));
cout<<"输入姓名:"<<endl; //添加信息
cin>>p1->name;
cout<<"输入地址:"<<endl;
cin>>p1->addrass;
cout<<"输入邮编:"<<endl;
cin>>p1->zip;
cout<<"输入电话:"<<endl;
cin>>p1->telephone;
p1->next=NULL; //保存到链表

if(head==NULL)
{
head=p1;
}
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); //找到结点尾
p2->next=p1;
}
cout<<"此信息已添加!"<<endl;
}

//输出学生信息
void book::print()
{
TEL *p=NULL;
if(head==NULL)
{
cout<<"此通讯录中无记录,请输入记录后在使用本功能!"<<endl;
return;
}
cout<<"**************通讯录系统*********************"<<endl; //输出信息
cout<<"姓名\t地址\t邮编\t电话"<<endl;
for(p=head;p!=NULL;p=p->next)
printf("%s\t%s\t%s\t%s\n",p->name,p->addrass,p->zip,p->telephone);
}

//查找信息1.按姓名
void book::Finditem1()
{
TEL *p;
char findname[20];
cout<<"请输入要查找的姓名:"<<endl;
cin>>findname;
cout<<"**************通讯录系统*********************"<<endl;
cout<<"姓名\t地址\t邮编\t电话"<<endl;
bool bfind = false;
for(p=head;p!=NULL;p=p->next)
{
if(strcmp(p->name,findname)==0)
{
cout<<p->name<<'\t'<<p->addrass<<'\t'<<p->zip<<'\t'<<p->telephone<<endl;
bfind = true;
}
}
if(!bfind)
{
cout<<"无此节点"<<endl;
}
}
//删除信息
void book::Removeitem()
{
char findname[20]; //先查找 后删除
TEL *p = head, *pr = head;
cout<<"请输入要删除的姓名:"<<endl;
cin>>findname;
if (head == NULL)
{
cout<<"无此节点!"<<endl;
return;
}
while (p != NULL && (strcmp(p->name,findname)!=0 ) )
{
pr = p;
p = p->next;
}
if (strcmp(findname, p->name)==0) //输出删除信息
{
cout<<p->name<<'\t'<<p->addrass<<'\t'<<p->zip<<'\t'<<p->telephone<<endl;
if (p == head)
head = head->next;
else
pr->next = p->next;

delete p;
cout<<"此信息已删除!"<<endl;
}
}
//保存链表信息到文件并释放内存空间
void book::Saveandfree()
{
TEL *p=NULL;
fstream ofile;
string strBook="books.txt";
if(head==NULL)
{
cout<<"\n记录为空!\n";
return;
}
else
{
ofile.open( strBook.c_str(), ios_base::out );
if(!ofile.is_open())
{
cout<<("\n打不开文件!\n");
return;
}
int pos = 0;
while(head!=NULL) //保存信息
{
p=head;
head=head->next;
p->next=NULL;

ofile.write((char*)p,sizeof(TEL));
pos += sizeof(TEL);
ofile.seekp(pos);

delete p;
}
cout<<("保存完毕!\n");
ofile.close();
}
}
//文件信息输出到链表
void book::Open()
{
fstream ifile;
TEL *p1=NULL,*p2=NULL;
ifile.open("books.txt",ios_base::in);
if(!ifile.is_open())
{
cout<<"\n****************这是一个新的通讯录管理系统******************\n";
return;
}
head=NULL;
int pos = 0;
p1=new TEL;
memset(p1,0,sizeof(TEL));
while(ifile.read((char*)p1,sizeof(TEL))) //循环读取
{
p1->next=NULL;
pos += sizeof(TEL);
ifile.seekg( pos );
if( NULL == head )
{
head=p1;
p2=head;
}
else
{
p2->next=p1;
p2=p2->next;
}

p1=new TEL;
memset(p1,0,sizeof(TEL));
}

delete p1;

ifile.close();
}

void main()
{
char ch;
s.Open(); //打开文件
while(1)
{
s.showmenu(); //显示菜单
cin>>ch;
switch(ch)
{
case '1':s.Appenditem(); //添加条目
break;
case '2':s.print(); //输出条目
break;
case '3':s.Finditem1(); //查找条目1.按姓名
break;
case '4': s.Removeitem(); //删除信息
s.print(); //输出删除后的结果
break;
case '0':s.Saveandfree(); //保存并释放内存
exit(0); //退出
break;
default:
cout<<"选择错误!"<<endl;
break;
}
}
}
MYNAMELIULI 2010-12-24
  • 打赏
  • 举报
回复
以楼主的相片的水准,应该能够轻松取得最好男生的答案。
vnking 2010-12-24
  • 打赏
  • 举报
回复
以楼主的相片的水准,应该能够轻松取得最好男生的答案。
Martian158 2010-12-24
  • 打赏
  • 举报
回复
自己努努力
Sou2012 2010-12-23
  • 打赏
  • 举报
回复
MFC + 数据库。。。VC++详解讲得很详细。
stevenuserregister 2010-12-23
  • 打赏
  • 举报
回复
参考一个数据库编程书籍,基本能满足你的要求。
zyyoung 2010-12-23
  • 打赏
  • 举报
回复
菜单,可以在控制台里,用1,2,3命令对应
memorytuberose 2010-12-23
  • 打赏
  • 举报
回复
定义一个学生类,属性包括各科成绩,以及指向该类的指针。

定义一个系统类,包含一个指向学生类的指针成员,一个记录当前学生数的unsigned long型成员,以及题中要求的各种操作的方法。

很简单的一个结构。
古都一猿 2010-12-23
  • 打赏
  • 举报
回复
链表的东西随便倒腾倒腾 看看书 抄抄例子
shiter 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 youzhijie_1 的回复:]
(20)设计一个用菜单操作的控制台程序,该程序可以插入一个新的学生记录、删除一个旧的学生记录、修改学生的成绩、查询某学生的成绩、统计成绩。学生的记录包括:学号、姓名、语文、数学、物理、化学、英语等科的成绩。提示:使用文本文件结构,学号用于唯一地标识一个学生,插入时学号不允许重复、学生姓名不允许为空、各科成绩应在0~100的合理范围;删除之前必须先确定是否有该学生存在;若允许改变学号,则必须保证学号……
[/Quote]
楼主照片挺犀利的。。。。。。。。
ryueiketu 2010-12-23
  • 打赏
  • 举报
回复
呵呵。是呀。抄别人的吧。大学都是抄出来的。
lqfcu2 2010-12-23
  • 打赏
  • 举报
回复
....作业也来这求

自己想下啊
李明子 2010-12-23
  • 打赏
  • 举报
回复
又是求作业?楼主如果想好好学就多动动脑看看书;如果只想糊弄一下老师,那么就干脆抄抄同学的,把变量名什么的改改也就是了。

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧