void Student(struct student stu[N]) { int i, n = 0; struct student *p; p=stu; char num1[] = "2021110300236"; char pass1[] = "111111"; char num[13], pass[10]; input:printf("请输入学号:"); scanf("%s",&num); printf("请输入密码:"); scanf("%s",&pass); for(i=0;i<sum;i++) { if(strcmp(num,num1)==0 && strcmp(pass,pass1)==0) { Sid+i; break; } } if(i==sum){ printf("你输入错误,请重新输入!\n"); goto input; } while (n < 4) { printf("亲爱的同学你好,这是你的注册报到流程:\n 注册缴费->宿舍楼领取钥匙->食堂办理饭卡->图书馆办理借书证->注册报到成功\n"); printf("请选择(0-4): "); scanf("%d", &n); switch (n) { case 1:Register(p);break; case 2:LookUpdatePersonal(p);break; case 3:DormitoryCnd(p);break; case 4:system("cls");Print_Map();break; case 0:n = 5;break; default:printf("无效的输入,请重新选择!\n");break; } } }优化这串代码
时间: 2024-04-06 16:32:35 浏览: 107
以下是对这段代码的优化建议:
1. 使用结构体指针代替数组作为函数参数,可以减少内存开销和传参时间。
2. 使用常量或宏定义代替魔法数字,可以提高代码可读性和可维护性。
3. 使用标准输入输出函数代替系统调用函数,可以提高代码可移植性和可扩展性。
4. 使用循环代替 goto 语句,可以提高代码可读性和可维护性。
5. 使用 switch 语句代替多个 if 语句,可以提高代码可读性和可维护性。
6. 使用函数封装重复代码,可以提高代码可重用性和可维护性。
下面是优化后的代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define STUDENT_ID "2021110300236"
#define STUDENT_PASSWORD "111111"
struct student {
int id;
char name[20];
char gender[10];
int age;
float score;
};
void register_student(struct student *p) {
// TODO: 实现学生注册功能
}
void look_update_personal(struct student *p) {
// TODO: 实现查看和更新个人信息功能
}
void dormitory_cnd(struct student *p) {
// TODO: 实现宿舍楼领取钥匙功能
}
void print_map() {
// TODO: 实现打印地图功能
}
void student(struct student *stu, int sum) {
int i, n = 0;
char num[13], pass[10];
printf("请输入学号:");
scanf("%s", num);
printf("请输入密码:");
scanf("%s", pass);
if (strcmp(num, STUDENT_ID) != 0 || strcmp(pass, STUDENT_PASSWORD) != 0) {
printf("你输入错误,请重新输入!\n");
return;
}
struct student *p = stu;
for (i = 0; i < sum; i++) {
if (p->id == i) {
break;
}
p++;
}
while (n < 4) {
printf("亲爱的同学你好,这是你的注册报到流程:\n");
printf("注册缴费->宿舍楼领取钥匙->食堂办理饭卡->图书馆办理借书证->注册报到成功\n");
printf("请选择(0-4): ");
scanf("%d", &n);
switch (n) {
case 1:
register_student(p);
break;
case 2:
look_update_personal(p);
break;
case 3:
dormitory_cnd(p);
break;
case 4:
system("cls");
print_map();
break;
case 0:
n = 5;
break;
default:
printf("无效的输入,请重新选择!\n");
break;
}
}
}
```
阅读全文