#include<malloc.h>
typedef struct
{char name[10];<br> int number;<br> char sex[20];<br> char age[20];<br>}stu;
typedef struct
{stu *elem;<br>int length;<br>}sqlist;
int found(sqlist l,int x)
{int i;<br>for(i=0;i<l.length;i++)<br> if(l.elem[i].number==x) break;<br> if(i==l.length)<br> { printf("無此學生重新輸入學號\n");return -1;}
else return i;}
void add(sqlist &l)
{int x,i;<br>printf("增加多少名學生\n");<br>scanf("%d",&x);<br>l.elem=(stu*)realloc(l.elem,sizeof(stu)*(l.length+x));<br>for(i=l.length;i<x+l.length;i++)<br>{printf("\n輸入學生學號、性別、年齡、姓名:");<br>scanf("%d",&l.elem[i].number);<br>scanf("%s",l.elem[i].sex);<br>scanf("%s",l.elem[i].age);<br>scanf("%s",l.elem[i].name);<br>}
l.length=l.length+x;}
void del(sqlist &l)
{int x,i,j=1;<br>stu *p;<br>while(j)<br>{printf("輸入學號:\n");<br> scanf("%d",&x);<br>i=found(l,x);<br>if(i==-1)<br>continue;<br>for(p=l.elem+i;p<l.elem+l.length-1;p++)<br>*p=*(p+1);<br>l.length--;<br>printf("輸入0退出刪除系統,其他繼續\n");<br>scanf("%d",&j);}}
void change(sqlist &l)
{int i,j=1,x;<br> while(j)<br>{printf("輸入學號:\n");<br> scanf("%d",&x);<br>i=found(l,x);<br>if(i==-1)<br>continue;<br>printf("輸入新學生學號、性別、年齡、姓名:\n");<br>scanf("%d",&l.elem[i].number);<br>scanf("%s",l.elem[i].sex);<br>scanf("%s",l.elem[i].age);<br>scanf("%s",l.elem[i].name);<br> printf("輸入0退出修改系統,其他繼續\n");<br>scanf(" %d",&j);}}
void display(sqlist l)
{int i;<br> printf("學號 姓名 性別 年齡\n"); <br> for(i=0;i<l.length;i++)<br> {printf("%d ",l.elem[i].number);<br> printf("%s ",l.elem[i].name);<br> printf("%s ",l.elem[i].sex);<br> printf("%s ",l.elem[i].age);<br> printf("\n");<br> }
}
void main()
{sqlist l;<br>int i,j,k=1,m;<br> printf("初始化,輸入學生個數:\n");<br> scanf("%d",&m);<br> l.elem=(stu*)malloc(sizeof(stu)*m);<br> l.length=m;<br> printf("請輸入%d個學生信息:\n",m);<br>for(i=0;i<m;i++)<br>{printf("\n輸入學生學號、性別、年齡、姓名:");<br>scanf("%d",&l.elem[i].number);<br>scanf("%s",l.elem[i].sex);<br>scanf("%s",l.elem[i].age);<br>scanf("%s",l.elem[i].name);<br>}while(k)
{printf("\n____________________ \n");<br> printf("| 1---增加學生信息 |\n");<br> printf("| 2---刪除學生信息 |\n");<br> printf("| 3---修改學生信息 |\n");<br> printf("| 4---顯示學生信息 |\n");<br> printf("| 0---退出 |\n");<br> printf("| ___________________|");<br> scanf(" %d",&j);<br>switch (j)<br>{ case 1:add(l);break;<br> case 2:del(l);break;<br> case 3:change(l);break;<br> case 4:display(l);break;<br> default: k=0;}
}
}