输入学生成绩数据,并具有插入、查找、删除、显示学生数据、输出数据到磁盘文件的功能

编写一个从键盘输入学生成绩数据,并具有插入、查找、删除、显示学生数据、输出数据到磁盘文件的功能..必须用C/C++竟然没人回答囧了..好了..我自己做了..... 编写一个从键盘输入学生成绩数据,并具有插入、查找、删除、显示学生数据、输出数据到磁盘文件的功能..必须用C/C++
竟然没人回答 囧了..好了..我自己做了..
展开
 我来答
离离原上花开
2010-05-16 · TA获得超过6858个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:839万
展开全部
//21chenxb's work
//2009/7/1
//供参考
//////////////////////////////////头文件包含
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#include<malloc.h>
#include<conio.h>
#include<stdlib.h>
/////////////////////////////////预定义

#define ERROR 0
#define OK 1;
////////////////////////////////结构体定义

struct student
{
char studentno[10];//学号
char name[10];//姓名
char sex[5];//性别
char jiguan[10];//籍贯
char xueyuan[10];//学院
char banji[10];//班级
} ;

typedef int ElemType;

typedef struct LNODE
{
student data;
struct LNODE *next;
}LNode, *LinkList;

/////////////////////////////存储结构(单链表)所必须的实现函数
//初始化单链表
int init(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
if(L)
L->next=NULL;
return OK;
}/*init */

//求表长
int ListLength(LinkList L)
{
LinkList p=L->next;
int n=0;
while(p!=NULL)
{
n++;
p=p->next;
}
return n;

}/*getLinklist length*/
//插入操作
int ListInsert(LinkList &L,int i, student e)
{
LinkList s,p = L;
int j = 0;
while (p && j < i-1)
{ p = p->next; ++j; }
if (!p)
return -1;
s = (LinkList) malloc ( sizeof (LNode));
s->data=e;
s->next = p->next;
p->next = s;
return 1;

}/*ListInsert before i*/
///////////////////////////////函数声明部分
void menu();//显示菜单
void add(LinkList stuinfo);//添加信息
void del(LinkList stuinfo);//删除信息
void que(LinkList stuinfo);//查找信息
void baobiao(LinkList L);//显示全部信息
void xuanze(LinkList stuinfo);//用户完成操作后的选择
void begin(int choose,LinkList stuinfo);//程序运行中开始
int addiden(LinkList stuinfo,student stu);//用于判断添加信息的时候出现相同学号
void help(LinkList stuinfo);//帮助信息
void start();//新启动时开始
void Exception();//处理操作异常
/////////////////////////////主函数部分
void main()
{
cout<<"-----------------IMPORTANT INFO ---------------------"<<endl;
cout<<"This programer is powerd by guojun!"<<endl;
cout<<"You may choose 5 and look the help info."<<endl;
cout<<"You must be more careful,or you will lose the data"<<endl;
cout<<"------------------------------------------------------"<<endl;
start();

}
////////////////////////////各详细功能函数实现部分
void menu()//菜单
{
cout<<"------The Student Management System is running------"<<endl;
cout<<"菜单:"<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"| N.退出系统(N=0或任何非数字字串). |"<<endl;
cout<<"| 1.添加学生信息. |"<<endl;
cout<<"| 2.删除学生信息. |"<<endl;
cout<<"| 3.查询学生信息. |"<<endl;
cout<<"| 4.报表学生信息. |"<<endl;
cout<<"| 5.查看帮助信息. |"<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请选择操作!"<<endl;
cout<<"----------------your work is beginning-------------------"<<endl;
}
void add(LinkList stuinfo)//添加
{
cout<<"------------you are adding the student's info-------"<<endl;
int n;
char temp;
student info;
cout<<"姓名:";
cin>>info.name;
cout<<"性别:";
cin>>info.sex;
cout<<"学号:";
cin>>info.studentno;
if(addiden(stuinfo,info)==1)
{
cout<<"学号重复!请检查后重新添加!"<<endl;
cout<<"----------------The exception is passed-------------"<<endl;
cout<<"现在重新添加!"<<endl;
add(stuinfo);

}

cout<<"籍贯:";
cin>>info.jiguan;
cout<<"学院:";
cin>>info.xueyuan;
cout<<"班级:";
cin>>info.banji;
n=ListLength(stuinfo)+1;
ListInsert(stuinfo,n,info);
///////////////////////////////////////////////////
cout<<"继续添加吗?"<<endl<<"1→继续 2→结束"<<endl;
cin>>temp;
switch(temp)
{
case '1': add(stuinfo);break;
case '2': xuanze(stuinfo);break;
default: Exception();break;
}

}
void del(LinkList stuinfo)//删除
{
cout<<"------------you are deleting the student's info-------"<<endl;
int flag=0;
student que;
cout<<"请输入要删除的学号:"<<endl;
cin>>que.studentno;
LinkList p,q;
p=stuinfo->next;
q=stuinfo;
while(p&&flag!=1)
{

if(strcmp((p->data).studentno,que.studentno)==0)//字符串比较用strcmp,而不可以用等于号,那样是比较首地址
{
flag=1;
//q=p->next;
p=q->next;//正确的删除方法,上面的删除方法不正确
q->next=p->next;//
free(p);
cout<<"删除成功!"<<endl;
}
else
{
p=p->next;
q=q->next;
}
if(flag==0)
{
cout<<"删除失败,无此学号信息!"<<endl;
}
}
//////////////////////////////////////
xuanze(stuinfo);
}
void que(LinkList stuinfo)//查询

{
cout<<"------------you are searching the student's info-------"<<endl;
int flag=0;
student que;
cout<<"请输入要查询的学号:"<<endl;
cin>>que.studentno;
LinkList p;
p=stuinfo->next;
while(p)
{
if(strcmp((p->data).studentno,que.studentno)==0)//字符串只能比较用
{
flag=1;
cout<<"检索成功!"<<endl;
cout<<"学号"<<setw(12)<<"姓名"<<setw(12)<<"性别"<<setw(12)<<"籍贯"<<setw(12)<<"学院"<<setw(12)<<"班级"<<endl;
cout<<(p->data).studentno<<setw(10)<<(p->data).name<<setw(10)<<(p->data).sex<<setw(10)<<(p->data).jiguan<<setw(10)<<(p->data).xueyuan<<setw(10)<<(p->data).banji<<endl;
}

p=p->next;
}
if(flag==0)
{
cout<<"查询失败,无此学号信息!"<<endl;
}

/////////////////////////////
xuanze(stuinfo);
}
int addiden(LinkList stuinfo,student stu)//用于判断添加的学号是否重复
{
LinkList p;
int flag=0;
p=stuinfo->next;
while(p)
{
if(strcmp((p->data).studentno,stu.studentno)==0)//字符串只能比较用
{
flag=1;
}
p=p->next;
}
return flag;
}

void baobiao(LinkList L)//报表,显示全部学生信息
{
cout<<"------------There is all the students' info---------"<<endl;
LinkList p,stuinfo=L;
p=L;
cout<<"学号"<<setw(12)<<"姓名"<<setw(12)<<"性别"<<setw(12)<<"籍贯"<<
setw(12)<<"学院"<<setw(12)<<"班级"<<endl;
while(p->next)
{
p=p->next;

cout<<(p->data).studentno<<setw(10)<<(p->data).name<<
setw(10)<<(p->data).sex<<setw(10)<<(p->data).jiguan<<
setw(10)<<(p->data).xueyuan<<setw(10)<<(p->data).banji<<endl;

}
cout<<endl;
//////////////end function
xuanze(stuinfo);
}

void xuanze(LinkList stuinfo)//操作之后的选择
{
cout<<"------------your work is over,please give new choice!-------"<<endl;
char xuanze;
cout<<"本次操作结束!";
cout<<"是否继续? y/n? "<<endl;
//system("pause");

cin>>xuanze;
if(xuanze=='y')
{
system("cls");//qingping
int choose;
menu();
cin>>choose;
begin(choose,stuinfo);
}
else
{
if(xuanze=='n')
{
return;
}
else
{
Exception();
}
}
}

void begin(int choose,LinkList stuinfo)//开始时候的选择
{
switch(choose)
{
case 0:
cout<<"成功退出,欢迎再来!"<<endl;break;
case 1: add(stuinfo);break;
case 2: del(stuinfo);break;
case 3: que(stuinfo);break;
case 4: baobiao(stuinfo);break;
case 5: help(stuinfo);break;
default :
cout<<"非法输入!系统自动退出!"<<endl;
return;
}
}

void help(LinkList L)//帮助信息显示函数
{
int t;
LinkList stuinfo=L;
cout<<"-------you are reading the helpful info------------"<<endl;
cout<<"a.本系统尚未采用文件读写机制,仅供测试算法使用。"<<endl;
cout<<"b.测试之前,请按提示添加部分信息,且不要关闭程序。"<<endl;
cout<<"c.菜单中的序号为操作代号,提示信息中,依据提示代号。"<<endl;
cout<<"d.做的不好,多多指教,谢谢!是否返回?1→返回。"<<endl;
cin>>t;
if(t==1)
{
xuanze(stuinfo);//常规程序开始
}
else
{
Exception();//误操作后程序开始
}
}
void start()//程序开始
{
int choose;
LinkList stuinfo;
init(stuinfo);
//////////////////////////
menu();
cin>>choose;
begin(choose,stuinfo);
}

void Exception()//用于处理用户误操作
{
cout<<"----------------------------------"<<endl;
cout<<endl;
cout<<"非法输入,请仔细操作!"<<endl;
system("pause");
system("cls");
cout<<"本系统自动重新开始!"<<endl;
cout<<endl;
cout<<"----------------------------------"<<endl;
start();
}
lupkid
2010-05-16 · 超过38用户采纳过TA的回答
知道答主
回答量:157
采纳率:0%
帮助的人:122万
展开全部
课程设计还要抄人,十分鄙视你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洒脱又谦卑灬雏菊08
2010-05-23 · TA获得超过298个赞
知道答主
回答量:74
采纳率:0%
帮助的人:67.2万
展开全部
LZ,我真的理解不了你的问题^^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式