设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1958|回复: 2
打印 上一主题 下一主题

[求助]建立一个学生信息库,程序应提供如下功能

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:18:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
哪位大侠能不能将这用C++编的完整代码给我
谢谢~~




1 内容
建立一个学生信息库。程序应提供如下功能:(1)当系统提问时若能回答“E”或“e”,表示要输入新纪录;(2)若回答“L”或“l”时,表示将已有学生数据打印出来(E和L分别表示Enter和List的含义);(3)若回答为“D”或“d”时,系统要求用户输入一个学生学号,并在已有学生信息中删除该学号的学生信息,若不存在该学生,应该给出相应提示;(4)若回答为“I”或“i”表示要插入一个学生,系统提示用户输入该学生的信息。并将该生信息插入到已有学生信息中。注意因考虑到该学生已存在等问题。(D和I分别表示Delete和Insert)。若输入此8个字符以外的字符时,表示是程序终止。
3#
发表于 2009-11-3 02:18:50 | 只看该作者
有些相似 可以看看



#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <stdlib.h>

//链表单元定义,链表相关变量
struct student
{
int id;
float score;
struct student *next;
} *head,*pthis;
//输入数据创建链表
void input()
{
struct student *tmp;
printf("\n\n请输入新的学生信息:\n");
do
{
printf("ID\t学生信息\n");//学生信息: 如成绩 学号等 int类型
if((tmp=(struct student*)malloc(sizeof(struct student)))==NULL)
{
printf("\n错误!不能申请所需的内存!\n");
exit(0);
}
scanf("%d\t%f",&tmp->id,&tmp->score);
tmp->next=NULL;
if(tmp->id!=0)
{
if(head==NULL)
{
head=tmp;
pthis=head;
}
else
{
pthis->next=tmp;
pthis=pthis->next;
}
}
}
while(tmp->id!=0);
free(tmp);
}
//列表输出链表中的所有项
void list()
{
printf("\n\n数据列表\n");
printf("ID\t学生信息\n");
printf("-------------------------------\n");
if(head==NULL)
{
printf("错误,没有数据!\n");
return;
}
pthis=head;
while(pthis!=NULL)
{
printf("%d\t%.2f\n",pthis->id,pthis->score);
pthis=pthis->next;
}
}

//插入数据
void insert()
{
int i,p;
struct student *tmp;
if(head==NULL)
{
printf("\n\n数据不存在,无法插入!\n");
return;
}
printf("\n请输入插入点:\n");
scanf("%d",&p);
if(p<0)
{
printf("输入不合法!");
return;
}
printf("\n\n请输入新信息:\nID学生信息\t\n");
if((tmp=(struct student*)malloc(sizeof(struct student)))==NULL)
{
printf("\n错误!不能申请所需的内存!\n");
exit(0);
}
scanf("%d\t%f",&tmp->id,&tmp->score);
tmp->next=NULL;
if(tmp->id!=0)
{
pthis=head;
if(p==0)
{
tmp->next=head;
head=tmp;
}
else
{
for(i=0;i<p-1;i++)
{
if(pthis->next->next==NULL)
{
printf("\n找不到插入点,您输入的数据太大!\n");
return;
}
pthis=pthis->next;
}
tmp->next=pthis->next;
pthis->next=tmp;
}
}
else
{
printf("\n数据无效!\n");
free(tmp);
}
}
//删除数据
void del()
{
int p,i;
struct student *tmp;
if(head==NULL)
{
printf("\n\n没有数据,无法删除!\n");
return;
}
printf("\n\n请输入要删除的学生学号:\n");
scanf("%d",&p);
if(p<0)
{
printf("\n输入不合法!\n");
return;
}
if(p==0)
{
pthis=head;
head=pthis->next;
free(pthis);
pthis=head;
}
else
{
pthis=head;
for(i=0;i<p-1;i++)
{
pthis=pthis->next;
if(pthis->next==NULL)
{
printf("\n\n指定记录不存在,无法删除!\n");
return;
}
}
tmp=pthis->next;
pthis->next=pthis->next->next;
free(tmp);
}
}
//程序主函数
void main()
{
char command=0;
int id=0;
//主循环
do
{
printf("\n\n\t 菜单\n");
printf("-------------------------------\n");
printf("\tE,输入数据\n");
printf("\tL,数据列表\n");
printf("\tI,插入记录\n");
printf("\tD,删除记录\n");
printf("\tG,退出系统\n");
printf("-------------------------------\n");
printf("\t请选择:");
command=getch();
//命令处理
switch(command)
{
case 'E':
if(head==NULL)
{
input();
break;
}
else
{
printf("\n\n学生信息数据已经存在!\n");
break;
}
case 'L':
list();
break;
case 'I':
insert();
break;
case 'D':
del();
break;
}
}
while(command!='G');
}
回复 支持 反对

使用道具 举报

2#
发表于 2009-11-3 02:18:47 | 只看该作者
看版规
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 15:30 , Processed in 0.111483 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表