您的位置:首页 > 其它

顺序表-【学生信息管理系统】

2016-10-12 22:30 197 查看
<span style="font-size:18px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define PF printf("\n")
#define size 1000
typedef int Status;
int total;
typedef struct
{
char no[9]; //8 位学号
char name[20]; // 姓名
double price; // 成绩
}Student;
typedef struct
{
Student *elem; // 指向数据元素的基地址
int length; // 线性表的当前长度
}SqList;
SqList L;
Status InitList()//建立顺序表
{
L.elem=new Student[size];
if(!L.elem)
return ERROR;
L.length=0;
return OK;
}
void in_put()
{
int num,i;
PF;PF;
printf("输入学生数量:");
scanf("%d",&num);
PF;
while(num<1||num>size)
{
printf("输入有误,请重新输入: ");
scanf("%d",&num);
}
for(i=0;i<num;++i)
{
printf("学号:");
scanf("%s",L.elem[i].no);
while(strlen(L.elem[i].no)!=8)
{
printf("输入有误,请输入8为学号: ");
scanf("%s",L.elem[i].no);
}
PF;
printf("姓名:");
scanf("%s",L.elem[i].name);
PF;
printf("成绩:");
scanf("%lf",&L.elem[i].price);
PF;
}
L.length=num;
system("cls");
}
void out_put()
{
int num;
for(num=0;num<L.length;++num)
{
printf("*******第%d个学生*******\n",num+1);
printf("学号:%s\n",L.elem[num].no);
printf("姓名:%s\n",L.elem[num].name);
printf("分数:%.2lf\n",L.elem[num].price);
}
}
void find_name()
{
PF;PF;
system("cls");
printf("请输入该学生的姓名:");
char s[20];
scanf("%s",s);
int i,flag=1;
for(i=0;i<L.length;++i)
{
if(strcmp(L.elem[i].name,s)==0)
{
flag=0;
printf("学号:%s\n",L.elem[i].no);
printf("姓名:%s\n",L.elem[i].name);
printf("分数:%.2lf\n",L.elem[i].price);
PF;PF;
}
}
if(flag)
{
PF;PF;
printf("不存在该生!!\n\n");
system("cls");
}
}
void find_point()
{
system("cls");
int pos;
PF;PF;
printf("请输入给学生的位置:");
scanf("%d",&pos);
if(pos<1||pos>L.length)
{
printf("不存在该生!!\n\n");
return ;
}
PF;PF;
printf("学号:%s\n",L.elem[pos-1].no);
printf("姓名:%s\n",L.elem[pos-1].name);
printf("分数:%.2lf\n",L.elem[pos-1].price);
}
void new_insert()
{
PF;PF;
printf("请输入插入的位置:");
int pos;
scanf("%d",&pos);
while(pos<1||pos>L.length+1)
{
printf("该位置不合法,请重新输入:");
scanf("%d",&pos);
}
if(L.length==size)
{
printf("磁盘已满!!\n");
return ;
}
int k;
for(k=L.length-1;k>=pos-1;--k)
{
L.elem[k+1]=L.elem[k];
}
printf("请输入该生的学号:");
char no[9];
scanf("%s",no);
while(strlen(no)!=8)
{
printf("输入有误,请输入8为学号: ");
scanf("%s",no);
}
strcpy(L.elem[pos-1].no,no);
printf("请输入该生的姓名:");
scanf("%s",L.elem[pos-1].name);
printf("请输入该生的成绩:");
double price;
scanf("%lf",&L.elem[pos-1].price);
L.length++;
}
void stu_del()
{
PF;PF;
system("cls");
int pos;
printf("请输入删除的位置:");
scanf("%d",&pos);
while(pos<1||pos>L.length)
{
printf("该位置不合法,请重新输入:");
scanf("%d",&pos);
}
for(--pos;pos<L.length;++pos)
{
L.elem[pos]=L.elem[pos+1];
}
--L.length;
printf("该生已删除!\n");
}
void count()
{
PF;PF;
printf("一共有 %d 个学生,还可以增加 %d 个学生哦@_@\n",L.length,size-L.length);
PF;PF;
}
int main()
{
InitList();
PF;PF;
while(1)
{
int n;
printf("\t\t1、学生信息输入\n");
printf("\t\t2、学生信息浏览\n");
printf("\t\t3、姓名查找学生信息\n");
printf("\t\t4、指定位置查找学生信息\n");
printf("\t\t5、新增学生\n");
printf("\t\t6、删除指定位置学生信息\n");
printf("\t\t7、统计学生人数\n");
printf("\t\t8、退出\n");
PF;PF;
printf("\t\t请选择:");
scanf("%d",&n);
switch(n)
{
case 1:in_put();break;
case 2:out_put();break;
case 3:find_name();break;
case 4:find_point();break;
case 5:new_insert();break;
case 6:stu_del();break;
case 7:count();break;
case 8:exit(0);
}
}
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: