新微赢技术网
标题:
[求助]建立一个学生信息库,程序应提供如下功能
[打印本页]
作者:
逍遥的雨夜
时间:
2009-11-3 02:18
标题:
[求助]建立一个学生信息库,程序应提供如下功能
哪位大侠能不能将这用C++编的完整代码给我
谢谢~~
1 内容
建立一个学生信息库。程序应提供如下功能:(1)当系统提问时若能回答“E”或“e”,表示要输入新纪录;(2)若回答“L”或“l”时,表示将已有学生数据打印出来(E和L分别表示Enter和List的含义);(3)若回答为“D”或“d”时,系统要求用户输入一个学生学号,并在已有学生信息中删除该学号的学生信息,若不存在该学生,应该给出相应提示;(4)若回答为“I”或“i”表示要插入一个学生,系统提示用户输入该学生的信息。并将该生信息插入到已有学生信息中。注意因考虑到该学生已存在等问题。(D和I分别表示Delete和Insert)。若输入此8个字符以外的字符时,表示是程序终止。
作者:
幻影
时间:
2009-11-3 02:18
看版规
作者:
王者风范
时间:
2009-11-3 02:18
有些相似 可以看看
#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');
}
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2