C语言ll作业01
| 这个作业属于哪个课程 | 班级链接 |
|---|---|
| 这个作业的要求 | 作业链接 |
| 这个作业的目标 | 要求编写一个五十人的通讯录 |
| 参考文献 | 学长制作的演示视频 |
需求分析
·要求编写一个五十人的通讯录
·每个人信息包括姓名和电话
·使用前面几次作业的菜单框架
·使用数组,包括二维数组和字符数组
·极高的容错率
程序代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct tel_book{
int num;
char name[10];
char tel[20];
};
struct tel_book a[50];
static int count=0,sum=50;
void menu();
void show();
void rank();
void add();
void remove();
void change();
int search(int x);
void *search();
int main(int arg,char const*argc[]){
menu();
}
void menu(){
int n;
while(1){
show();
printf("操作列表:\n");
printf("1)排序 2)添加 3)删除\n4)修改 5)查找 6)退出程序\n");
printf("请输入操作:");
scanf("%d",&n);
putchar('\n');
putchar('\n');
switch(n){
case 1: rank();system("cls");break;
case 2: add();system("cls");break;
case 3: remove();system("cls");break;
case 4: change();system("cls");break;
case 5: search();system("cls");break;
case 6: exit(0);break;
default: printf("error!!!\n错误操作指令,请重新输入\n");break;
}
}
}
void show(){
printf("========== 通讯录 ==========\n\n\n");
printf("========== 界面 ==========\n");
printf("人数:%d |剩余空间:%d\n",count,sum);
for(int i=0;i<count;i++){
printf("编号:%d |姓名:%s |电话:%s\n",a[i].num,a[i].name,a[i].tel);
}
printf("\n\n\n");
}
void rank(){
int m;
struct tel_book t;
printf("请选择排序方式\n");
printf("1)编号排序 2)姓名排序\n你选择:");
scanf("%d",&m);
switch(m){
case 1: for(int i=1;i<count;i++){
for(int j=0;j<count-i;j++){
if(a[j].num>a[j+1].num){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
} break;
case 2: for(int i=1;i<count;i++){
for(int j=0;j<count-i;j++){
if(strcmp(a[j].name,a[j+1].name)>0){
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
} break;
default: printf("错误操作,请重新输入");
getchar();
system("cls");
break;
}
}
void add(){
if(sum==0){
printf("\n通讯录已满\n");
system("pause");
}
printf("添加操作:\n");
printf("请输入添加位置:");
scanf("%d",&a[count].num);
if(a[count].num<1||a[count].num>50){
printf("处理编号超过阀值\n");
system("pause");
}
for(int i=0;i<count;i++){
if(a[i].num==a[count].num){
printf("此处存在数据");
system("pause");
}
}
printf("请输入联系人姓名:");
scanf("%s",a[count].name);
printf("请输入联系人电话:");
scanf("%s",a[count].tel);
count++;sum--;
}
void remove(){
int x,y;
printf("删除操作:\n");
printf("请输入操作位置:");
scanf("%d",&x);
if(x<1||x>50){
printf("处理编号超过阀值");
system("pause");
}
y=search(x);
if(y==-1){
printf("此处无数据\n");
system("pause");
}
else{
for(int i=y;i<count;i++){
a[i-1]=a[i];
}
count--;sum++;
}
}
void change(){
int x,y;
char *o=NULL,*p=NULL;
printf("修改操作:\n");
printf("请输入操作位置:");
scanf("%d",&x);
if(x>50||x<1){
printf("处理编号超过阀值\n");
system("pause");
}
y=search(x);
if(y==-1){
printf("此处无数据\n");
system("pause");
}
else{
o=a[y-1].name;
p=a[y-1].tel;
printf("已删除,请重新输入:\n");
printf("请输入联系人姓名:");
scanf("%s",o);
printf("请输入联系人电话:");
scanf("%s",p);
}
}
int search(int x){
for(int i=0;i<count;i++){
if(a[i].num==x){
return i+1;
}
}
return -1;
}
void *search(){
int min=0,max=count-1,x;
char b[40];
printf("请输入查询联系人姓名或电话:");
scanf("%s",&b);
if(b[0]>='1'&&b[0]<='9'){
for(int i=0;i<count;i++){
if(strcmp(b,a[i].tel)==0){
printf("编号:%d |姓名:%s |电话:%s\n",a[i].num,a[i].name,a[i].tel);
system("pause");
return 0;
}
}
printf("\n查无此人\n");
system("pause");
}
else{
for(int i=0;i<50;i++){
if(strcmp(a[i].name,b)==0){
getchar();
printf("编号:%d |姓名:%s |电话:%s\n",a[i].num,a[i].name,a[i].tel);
system("pause");
return 0;
}
}
printf("\n查无此人\n");
system("pause");
}
}
源代码








函数调用图与流程图

功能测试










应用集成
gitee上传失败,太久没用了。
码云主页

浙公网安备 33010602011771号