您的位置:首页 > 编程语言 > C语言/C++

<C语言>使用一个二维数组实现学生姓名管理系统,要求不能使用链表

2017-08-17 20:30 891 查看
作者:wsg

时间:2017年8月17日

题目:

定义一个二维数组管理学生的姓名,姓名最长为16个字节

 增 删 查 改

要求这个系统可以一直工作, 直到你键入的是0,才退出

· 如果键入的是1, 则增加一个同学的姓名、

 ·如果键入的是2, 则选择删除某个同学的姓名

· 如果键入的是3 ,显示全部名字

· 如果键入的是4, 可以选择对某个同学的姓名进行修改 

实现代码:

#include <stdio.h>

/**********函数的声明************/
void menu(void);
void add(char name[][16],int len);
void del(char name[][16],int len);
void view(char name[][16],int len);
void change(char name[][16],int len);

int main(int argc, char *argv[])
{
int num, flag4, len = 0;

char name[1][16] = {"\0"}; //定义存放姓名的二维数组并初始化

while(1)
{
menu(); //先调用主界面函数

scanf("%d",&num);
switch(num) //switch语句控制执行的函数
{
case 1:
add(name,len);
len++;
printf("目前共有%d人!\n\n", len);
break;

case 2:
del(name,len);
len = len -1;
break;

case 3:
view(name,len);
break;

case 4:
change(name,len);
break;

case 0:
flag4 = 1;
break;
}

if (flag4 == 1)
{
break;
}
}

return 0;
}

/************以下为函数的定义******************/

//增加姓名
void add(char name[][16], int len)
{
char buf[16] = {' '}; //定义一个中转数组, 并初始化
printf("请输入要添加的姓名:\n");
scanf("%s",buf);

int i;
for(i=0; i<16; i++) //for循环,将中转数组中的字符循环复制给name[len][]
{
name[len][i] = buf[i];
}
printf("\n添加完成!\n");
}

//删除姓名
void del(char name[][16], int len)
{
char buf[16] = {' '};
printf("请输入您要删除的名字:\n");
scanf("%s", buf);

int i, j, flag, k, n;
for(i=0; i<len; i++)
{
flag = 1;
for(j=0; j<16; j++)
{
if(name[i][j] != buf[j])
{
flag = 2;
break;
}
}

if (flag == 1)
4000

{
for(k = i; k < 10; k ++)
{
for (n = 0; n < 16; ++n)
{
name[k]
= name[k + 1]
;
}
}
printf("删除成功!\n");
break;
}
}

if (flag == 2)
{
printf("删除失败!\n");
}
}

//显示姓名
void view(char name[][16],int len)
{
int i, j;

for (i = 0; i < len; ++i)
{
for(j = 0; j < 16; j ++)
{
printf("%c",name[i][j] );
}
printf("\n");
}
}

//修改姓名
void change(char name[][16],int len)
{
char buf1[16] = {' '},buf2[16] = {' '};
printf("请输入要修改的姓名:\n");

scanf("%s",buf1);

int i, j, k, m, flag;
for (i = 0; i < len; i++)
{
flag = 1;
for(j = 0; j < 16; j++)
{
if(name[i][j] != buf1[j])
{
flag = 2;
break;
}
}
if (flag == 1)
{
printf("将%s修改为:\n", buf1);
scanf("%s",buf2);

for(k=0; k<16; k++)
{
name[i][k] = buf2[k];
}
printf("修改成功!\n");
break;
}
}
if (flag == 2)
{
printf("修改失败!\n");
}
}

void menu(void) //主界面函数
{
printf("*******************\n");
printf(" 1.增加学生姓名\n");
printf(" 2.删除学生姓名\n");
printf(" 3.显示全部学生姓名\n");
printf(" 4.修改某个学生姓名\n");
printf(" 0.退出系统\n");
printf("*******************\n");
printf("请选择操作(0-4): ");
}






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐