编写学生证信息系统
作者:互联网
学生证的管理系统设计
系统基本信息的描述(信息请参看自己的学生证) 建议用结构体数组存储,
或动态分配量内存。
1)
系统以菜单方式工作
2)
录入学生证信息。
3)
输入学号,显示某位学生的学生证信息。
4)
输入某个班级的班号,显示该班所有学生的学生证信息。
5)
输入某位学生的学号,修改该学生的学生证信息。
6)
输入某位学生的学号,删除该学生的学生证信息。
7)
要求提供一些统计各类信息的功能。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LED sizeof(struct student)
typedef struct student {
int id; //学号
char name[10]; //姓名
char sex[10]; //性别
char major[10]; //专业
char grade[10]; //年纪
int class_id; //班号
struct student *next;
} STU;
int n; //录入学生证数量
STU *creat() { //建立链表
STU *head, *p1, *p2;
head = NULL;
n = 0;
p2 = p1 = (STU *)malloc(LED);
printf("请按以下格式输入信息\n");
printf("学号 姓名 性别 专业 年级 班号\n");
scanf("%d%s%s%s%s%d",
&p1->id,
p1->name,
p1->sex,
p1->major,
p1->grade,
&p1->class_id);
while (p1 != NULL) {
n++;
if (n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (STU *)malloc(LED);
scanf("%d", &p1->id);
if (p1->id == 0)
break;
else
scanf("%s%s%s%s%d",
p1->name,
p1->sex,
p1->major,
p1->grade,
&p1->class_id);
}
p2->next = NULL;
return head;
}
void menu1() {
printf("1-->录入学生证信息\n");
printf("2-->查询学生证信息\n");
printf("3-->修改学生证信息\n");
printf("4-->删除学生证信息\n");
printf("5-->统计学生证信息\n");
printf("6-->退出系统\n");
}
void menu2() {
printf("1-->修改学号\n");
printf("2-->修改姓名\n");
printf("3-->修改性别\n");
printf("4-->修改专业\n");
printf("5-->修改年级\n");
printf("6-->修改班号\n");
}
void menu3() {
printf("1-->统计男生(女生)\n");
printf("2-->统计某个专业的学生\n");
printf("3-->统计某个年级的学生\n");
printf("4-->统计某班的学生\n");
}
int judge(int id, STU *head) { //判断函数
STU *p = head;
while (p != NULL) {
if (p->id == id)
return 1;
p = p->next;
}
return 0;
}
void query(STU *head) { //查询功能
STU *p = head;
printf("输入所要查询学生证的学号:");
int id;
scanf("%d", &id);
while (p != NULL) {
if (id == p->id) {
printf("%d %s %s %s %s %d\n",
p->id,
p->name,
p->sex,
p->major,
p->grade,
p->class_id);
printf("所要查询的学生证信息展示完毕!\n");
break;
}
p = p->next;
}
}
STU *change_id(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
int new_id;
printf("请输入新的学号:");
scanf("%d", &new_id);
if (judge(new_id, head))
printf("此学号已存在!\n");
else {
p->id = new_id;
printf("修改成功!\n");
}
}
p = p->next;
}
return head;
}
STU *change_name(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
char new_name[10];
printf("请输入新的姓名:");
scanf("%s", new_name);
strcpy(p->name, new_name);
printf("修改成功!\n");
}
p = p->next;
}
return head;
}
STU *change_sex(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
char new_sex[10];
printf("请输入新的性别:");
scanf("%s", new_sex);
strcpy(p->sex, new_sex);
printf("修改成功!\n");
}
p = p->next;
}
return head;
}
STU *change_major(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
char new_major[10];
printf("请输入新的专业:");
scanf("%s", new_major);
strcpy(p->major, new_major);
printf("修改成功!\n");
}
p = p->next;
}
return head;
}
STU *change_grade(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
char new_grade[10];
printf("请输入新的年级:");
scanf("%s", new_grade);
strcpy(p->grade, new_grade);
printf("修改成功!\n");
}
p = p->next;
}
return head;
}
STU *change_class_id(int id, STU *head) {
STU *p = head;
while (p != NULL) {
if (p->id == id) {
int new_class_id;
printf("请输入新的班号:");
scanf("%d", &new_class_id);
p->class_id = new_class_id;
printf("修改成功!\n");
}
p = p->next;
}
return head;
}
STU *change(STU *head) { //修改功能
int id;
printf("请输入想要修改学生证的学号:");
scanf("%d", &id);
if (judge(id, head)) {
menu2();
printf("请输入你的操作编号:");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
head = change_id(id, head);
break;
case 2:
head = change_name(id, head);
break;
case 3:
head = change_sex(id, head);
break;
case 4:
head = change_major(id, head);
break;
case 5:
head = change_grade(id, head);
break;
case 6:
head = change_class_id(id, head);
break;
default:
printf("输入操作编号错误!\n");
}
}
return head;
}
STU *del(STU *head) {
STU *p1 = head, *p2;
printf("请输入你想要删除学生证的学号:");
int id;
scanf("%d", &id);
if (judge(id, head)) {
while (p1->id != id && p1->next != NULL) {
p2 = p1;
p1 = p1->next;
}
if (p1->id == id) {
if (p1 == head)
head = p1->next;
else
p2->next = p1->next;
n--;
}
}
return head;
}
void statistic_sex( STU *head) {
STU *p = head;
printf("请输入你要统计的性别:");
char sex[10];
scanf("%s", sex);
printf("学号 姓名 性别 专业 年级 班号\n");
while (p != NULL) {
if (strcmp(p->sex, sex) == 0)
printf("%d %s %s %s %s %d\n",
p->id,
p->name,
p->sex,
p->major,
p->grade,
p->class_id);
p = p->next;
}
}
void statistic_major(STU *head) {
STU *p = head;
printf("请输入你要统计的的专业:");
char major[10];
scanf("%s", major);
printf("学号 姓名 性别 专业 年级 班号\n");
while (p != NULL) {
if (strcmp(p->major, major) == 0)
printf("%d %s %s %s %s %d\n",
p->id,
p->name,
p->sex,
p->major,
p->grade,
p->class_id);
p = p->next;
}
}
void statistic_grade(STU *head) {
STU *p = head;
printf("请输入你要统计的年级:");
char grade[10];
scanf("%s", grade);
printf("学号 姓名 性别 专业 年级 班号\n");
while (p != NULL) {
if (strcmp(p->grade, grade) == 0)
printf("%d %s %s %s %s %d\n",
p->id,
p->name,
p->sex,
p->major,
p->grade,
p->class_id);
p = p->next;
}
}
void statistic_class(STU *head) {
STU *p = head;
printf("请输入你要统计的班号:");
int class_id;
scanf("%d", &class_id);
printf("学号 姓名 性别 专业 年级 班号\n");
while (p != NULL) {
if (p->class_id == class_id)
printf("%d %s %s %s %s %d\n",
p->id,
p->name,
p->sex,
p->major,
p->grade,
p->class_id);
p = p->next;
}
}
void statistic(STU *head) {
menu3();
printf("请输入你的操作编号:");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
statistic_sex(head);
break;
case 2:
statistic_major(head);
break;
case 3:
statistic_grade(head);
break;
case 4:
statistic_class(head);
break;
default :
printf("输入操作编号错误!\n");
}
}
int main() { //主函数
STU *head;
for (int i = 1; i; i++) {
menu1();
printf("请输入你的操作编号:");
int choice;
scanf("%d", &choice);
if (choice >= 1 && choice <= 5)
switch (choice) {
case 1:
head = creat();
printf("录入信息完毕!\n");
break;
case 2:
query(head);
break;
case 3:
head = change(head);
break;
case 4:
head = del(head);
break;
case 5:
statistic(head);
break;
} else if (choice == 6)
break;
else
printf("输入操作编号错误!\n");
}
}
标签:head,p1,学生证,信息系统,int,STU,printf,编写,id 来源: https://blog.csdn.net/m0_64302173/article/details/122418597