64,648
社区成员
发帖
与我相关
我的任务
分享
//////////////////////////////////////////////////////////////////////////
void jm();//学生系统界面
void gn();//学生系统功能界面
void dl();//密码登录界面
struct student *creat(struct student *head);//学生信息录入
void xs(struct student* head);//学生信息显示
struct student *add(struct student *head);//添加学生信息
void del(struct student* head);//删除学生信息
struct student *xgxsxx(struct student *head);//修改学生信息
struct student //定义结构体
{
int xuehao;
char name[6];
int shuxue;
int yuwen;
int english;
float average;
struct student *p;
struct student *next;
};
student* studentMalloc()
{
student *a = (struct student *)malloc(sizeof(struct student));
memset(a, 0, sizeof(*a));
return a;
}
void studentFree(student*a)
{
free(a);
};
student* studentRemove(student* r)
{
if (!r) return 0;
if (r->p) r->p->next = r->next;
if (r->next) r->next->p = r->p;
return r;
}
student* studentAdd(student* s, student* t)
{
if (!s || !t) return 0;
s->next = t->next;
s->p = t;
t->next = s;
return s;
}
int n;//定义全局变量
void jm() //界面
{
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t\t 欢迎进入学生系统\n");
printf("\t\t\t\t\t *******************\n");
printf("\t\t\t\t\t 1.登录\n");
printf("\t\t\t\t\t 0.退出\n");
printf("\t\t\t\t\t *******************\n");
printf("\t\t\t\t\t 请选择你要进行的操作:\n\t\t\t\t\t ");
int x;
fflush(stdin);
do {
scanf_s("%d", &x);
fflush(stdin);
switch (x)
{
case 1:dl(); break;
case 0:
printf("\n\t\t\t\t\t 您选择了退出!");
printf("\n\t\t\t\t\t 正在退出...");
printf("\n\t\t\t\t\t 已退出\n");
exit(0);
default:
printf("\t输入有误, 请重新输入:\n\t");
printf("请键入任意键重新进行选择!");
//getchar();
}
//jm();
} while (x != 0);
}
void dl()//登录
{
// int len, i, zy;
// char ma[6], xuehao[13], password[10] = { 0 };
// printf("请输入学生学号: \n");
// scanf_s("%s", &xuehao);
// printf("请输入你的专业代码:1.物联网运营与管理 2.物联网网络工程 \n");
// scanf_s("%d", &zy);
int a = 123, b = 123, c;
c = 1;
while (c)
{
printf("请输入账号:");
scanf_s("%d", &a);
if (a == 123)
{
printf("请输入密码:");
scanf_s("%d", &b);
if (b == 123)
{
printf("登陆成功!\n\n");
c = 0;
}
else
{
printf("密码错误!\n");
c = 1;
}
}
else
{
printf("用户账号不存在!\n");
c = 1;
}
}
system("cls");//清屏语句
gn();
}
void gn() //学生系统功能
{
struct student *a = 0/*, *b*/;
do {
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t\t 欢迎使用学生系统\n");
printf("\n\t\t\t\t\t **************************");
printf("\n\t\t\t\t\t 1.学生信息录入");
printf("\n\t\t\t\t\t 2.显示学生信息");
printf("\n\t\t\t\t\t 3.增添学生信息");
printf("\n\t\t\t\t\t 4.删除学生信息");
printf("\n\t\t\t\t\t 5.修改学生信息");
printf("\n\t\t\t\t\t 6.返回上一层");
printf("\n\t\t\t\t\t 0.退出");
printf("\n\t\t\t\t\t **************************");
printf("\n\t\t\t\t\t 请选择你要进行的操作(0-6):\n\t\t\t\t\t ");
int x;
scanf_s("%d", &x);
fflush(stdin);
switch (x)
{
case 1:a = creat(a); break;
case 2:xs(a); break;
case 3:add(a); break;
case 4:del(a); break;
case 5:xgxsxx(a); break;
case 6:jm(); break;
case 0:
printf("\n\t\t\t\t\t 您选择了退出!");
printf("\n\t\t\t\t\t 正在退出...");
printf("\n\t\t\t\t\t 已退出\n");
if (a)
for (student* p = a->next; a && (p =a->next, 1); a = p)
studentFree(a);
return;
default:
printf("\t\t\t\t\t输入有误, 请重新输入:\n");
printf("请键入任意键重新进行选择!");
getchar();
}
} while (1);
}
struct student *creat(struct student *head)//学生信息录入函数
{
system("cls");
int a;
n = 0;
struct student *p1, *p2;
if (!head)
p2 = p1 = head = studentMalloc();
else
{
p1 = studentMalloc();
p2 = head;
}
do
{
printf("请输入学生的姓名,学号,年龄,3门成绩\n");
printf("请输入学生的学号:\n");
scanf_s("%d", &p1->xuehao);
printf("请输入学生的名字:\n");
scanf_s("%s", &p1->name, 6);
printf("请输入学生的语文成绩:\n");
scanf_s("%d", &p1->yuwen);
printf("请输入学生的数学成绩:\n");
scanf_s("%d", &p1->shuxue);
printf("请输入学生的英语成绩:\n");
scanf_s("%d", &p1->english);
if (p1 != p2)
{
studentAdd(p1, p2);
}
p2 = p1;
printf("继续输入请按任意数字键,退出请按0: ");
scanf_s("%d", &a);
if (a == 0)
break;
p1 = studentMalloc();
} while (1);
return(head);
}
void xs(struct student* head)//显示函数
{
struct student *p;
if (head == NULL)
{
printf("无数据");
return;
}
p = head;
printf("姓名\t 学号\t 语文\t 数学\t 英语\t\n");
while (p != NULL)
{
printf("%d\t%s\t%d\t%d\t%d\n", p->xuehao, p->name, p->yuwen, p->shuxue, p->english);
p = p->next;
}
getchar(); ///
}
//删除学生信息
void del(struct student* head)
{
if (!head)
{
printf("链表为空");
return;
}
int xuehao;
printf("请输入要删除学生的学号:\n");
scanf_s("%d", &xuehao);
student* f =0;
for (struct student*p1 = head; p1; p1 = p1->next)
{
if (p1->xuehao == xuehao)
{
f = p1;
}
}
if (f)
{
studentRemove(f);
studentFree(f);
}
}
//修改学生信息
struct student *xgxsxx(struct student *head)
{
if (head == NULL)
{
printf("链表为空");
return(head);
}
int xuehao;
printf("请输入你要修改的学号");
scanf_s("%d", &xuehao);
student* f = 0;
for (struct student*p1 = head; p1; p1 = p1->next)
{
if (p1->xuehao == xuehao)
{
f = p1;
}
}
if (f)
{
printf("修改的姓名:\n");
scanf_s("%s", f->name, 6);
printf("修改的学号;\n");
scanf_s("%d", &f->xuehao);
printf("修改的语文成绩:\n");
scanf_s("%d", &f->yuwen);
printf("修改的数学成绩:\n");
scanf_s("%d", &f->shuxue);
printf("修改的英语成绩:\n");
scanf_s("%d", &f->english);
printf("修改成功");
system("cls");
}
return(head);
}
struct student *add(struct student*head)//插入节点
{
if (head == NULL)
{
printf("链表为空");
return(head);
}
int xuehao;
printf("请输入想在哪个同学后面插入");
scanf_s("%d", &xuehao);
student* f = 0;
for (struct student*p1 = head; p1; p1 = p1->next)
{
if (p1->xuehao == xuehao)
{
f = p1;
}
}
if (!f)
{
printf("找不到学号");
return(head);
}
student * r = studentMalloc();
printf("请输入插入的姓名:\n");
scanf_s("%s", r->name, 6);
printf("请输入插入的学号:\n");
scanf_s("%d", &r->xuehao);
printf("请输入语文成绩:\n");
scanf_s("%d", &r->yuwen);
printf("请输入数学成绩:\n");
scanf_s("%d", &r->shuxue);
printf("请输入英语成绩:\n");
scanf_s("%d", &r->english);
studentAdd(r, f);
return head;
}
// main不变