<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): ");
}
时间: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): ");
}
相关文章推荐
- c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
- C语言使用链表实现学生信息管理系统
- C语言简单用链表实现学生管理系统
- (C语言) 怎么用代码实现一个学生成绩管理系统
- 学生成绩管理系统课程设计(C语言,链表实现)
- 用C语言关于学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体)
- 使用LINUX C实现一个链表,要求:链表节点构成:姓名、分数、下一个节点指针...
- C语言实现一个Window控制台带彩色,且可以用方向键选择并确认的菜单式列表(二) ---学生信息管理系统
- 数据结构-链表的简实现->学生管理系统
- 链表《5》使用链表实现学生成绩管理系统
- C语言实现一个列表式的学生信息管理系统(完善)
- 【c语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- 使用python实现一个简单的学生信息管理系统
- (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- C语言实现学生信息管理系统(单链表)
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 写一个MyList<T>的类,内部用T[]实现(不能使用系统的List<T>类),需要实现的接口如下:
- 使用python实现一个简单的学生信息管理系统