临沂制作网站企业,百度信息流推广是什么意思,做ps找图的网站,做网站的怎么学C小项目 —— 学生信息管理系统实现功能#xff1a;1. 录入学生信息 2. 显示所有学生信息 3. 按学号查询学生信息 4. 按姓名查询学生信息#xff08;支持模糊查询#xff09; 5. 按年龄查询学生信息 6. 修改学生信息 7. 删除学生信息 8. 保存学生信息到文件 9. 从文件载入学…C小项目 —— 学生信息管理系统实现功能1. 录入学生信息 2. 显示所有学生信息 3. 按学号查询学生信息 4. 按姓名查询学生信息支持模糊查询 5. 按年龄查询学生信息 6. 修改学生信息 7. 删除学生信息 8. 保存学生信息到文件 9. 从文件载入学生信息 10. 退出系统使用链表的方式实现细节很简单就是链表的一些基本操作创建删除结点增加结点查找结点等还有很多地方是可以拓展的比如使用排序按学号顺序打印或者按分数高低打印等使用的是codeblock编译器。#include stdio.h
#include stdlib.h
#include string.htypedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;#define STUDENT_NUMBER 20 // 学号最长20
#define STUDENT_NAME 20 // 姓名最长20
#define STUDENT_SUBJECT 3 // 假设只有三科
#define FILENAME_SIZE 100 // 待保存的文件路径typedef struct student
{char num[STUDENT_NUMBER]; /* 学号 */char name[STUDENT_NAME]; /* 姓名 */char sex; /* 性别1-男, 0-女 */uint8_t age; /* 年龄 */uint8_t score[STUDENT_SUBJECT]; /* 三科的成绩 */uint16_t sum; /* 总成绩 */struct student *next;
} student_t;student_t *head NULL;
static uint32_t count 1; // 系统中学生个数void menu()
{printf(\n学生信息管理系统\n);printf(1. 录入学生信息\n);printf(2. 显示所有学生信息\n);printf(3. 按学号查询学生信息\n);printf(4. 按姓名查询学生信息支持模糊查询\n);printf(5. 按年龄查询学生信息\n);printf(6. 修改学生信息\n);printf(7. 删除学生信息\n);printf(8. 保存学生信息到文件\n);printf(9. 从文件载入学生信息\n);printf(10. 退出系统\n);
}// 录入学生信息:初始化链表和加入链表的过程
void create(void)
{int i, flag 0;char tmp[10];student_t *point, *q;while(1){if(1 ! count){printf(是否继续录入(y/n):);gets(tmp);if(strlen(tmp) 10){break;}if(strcmp(tmp, n) 0){break;}}point (student_t *)malloc(sizeof(student_t));printf(\n请输入第%d个学生信息\n, count);printf(学号);gets(point-num);q head;while(NULL ! q){if(atoi(q-num) atoi(point-num)){flag 1;printf(学号输入重复或者不合格请重新输入...\n);break;}q q-next;}if(1 flag){continue;}printf(姓名);gets(point-name);printf(性别(1-男, 0-女));point-sex getchar();getchar();printf(年龄);gets(tmp);point-age atoi(tmp);printf(三门课程的成绩\n);point-sum 0;for(i 0; i STUDENT_SUBJECT; i){printf(第%d个成绩, i 1);gets(tmp);point-score[i] atoi(tmp);point-sum point-score[i];}printf(总成绩%d\n, point-sum);point-next head; // 核心代码就这两句head point;count;}printf(信息录入完毕按任意键继续……);getch();
}// 显示所有学生的信息:遍历链表打印输出的过程
void display_all(void)
{student_t *point head;printf(学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\n);while(NULL ! point){if(0 point-age){point point-next;continue;}printf(%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n, point-num, point-name, point-sex 1 ? 男 : 女, point-age, *(point-score), *(point-score 1), *(point-score 2), point-sum);point point-next;}printf(信息显示完毕按任意键继续……);getch();
}// 通过学号查找:唯一性
void search_on_number(void)
{student_t *point head;char tmp[STUDENT_NUMBER];uint8_t flag 0;printf(请输入学号);gets(tmp);printf(学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\n);while(NULL ! point){if(strcmp(tmp, point-num) 0){flag 1;printf(%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n, point-num, point-name, point-sex 1 ? 男 : 女, point-age, *(point-score), *(point-score 1), *(point-score 2), point-sum);}point point-next;}if(0 flag){printf(\n未找到学号是%s的学生按任意键继续……, tmp);}else{printf(\n显示完毕按任意键继续……);}getch();
}// 通过名字查找:不唯一
void search_on_name(void)
{student_t *point head;char tmp[STUDENT_NAME];uint8_t flag 0;printf(请输入姓名);gets(tmp);printf(学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\n);while(NULL ! point){if(strstr(point-name, tmp)){flag 1;printf(%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n, point-num, point-name, point-sex 1 ? 男 : 女, point-age, *(point-score), *(point-score 1), *(point-score 2), point-sum);}point point-next;}if(0 flag){printf(\n未找到学号是%s的学生按任意键继续……, tmp);}else{printf(\n显示完毕按任意键继续……);}getch();
}// 通过年龄查找:不唯一
void search_on_age(void)
{student_t *point head;char tmp[30];uint8_t flag 0;printf(请输入年龄);gets(tmp);printf(学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\n);while(NULL ! point){if(atoi(tmp) point-age){flag 1;printf(%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n, point-num, point-name, point-sex 1 ? 男 : 女, point-age, *(point-score), *(point-score 1), *(point-score 2), point-sum);}point point-next;}if(flag 0){printf(\n未找到年龄是%s的学生按任意键继续……, tmp);}else{printf(\n显示完毕按任意键继续……);}getch();
}// 修改指定学号的学生信息
void modify(void)
{student_t *point head;char tmp[STUDENT_NUMBER];uint8_t flag 0, j;char a;printf(请输入学号); // 学号是唯一的gets(tmp);while(point ! NULL){if(strcmp(tmp, point-num) 0){flag 1;printf(学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\n);printf(%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n, point-num, point-name, point-sex 1 ? 男 : 女, point-age, *(point-score), *(point-score 1), *(point-score 2), point-sum);printf(\n请输入新信息\n);// 学号唯一不做修改别的都可以修改printf(姓名);gets(tmp);if(strcmp(tmp, ) ! 0){strcpy(point-name, tmp);}printf(性别1-男, 0-女);a getchar();if(\n ! a){point-sex a;}else{point-sex 1; // 默认男生}printf(年龄);gets(tmp);if(strcmp(tmp, ) ! 0){point-age atoi(tmp);}else{point-age 20; // 默认就20岁了}printf(三门课程的成绩\n);point-sum 0;for(j 0; j STUDENT_SUBJECT; j){printf(第%d科成绩, j 1);gets(tmp);if(strcmp(tmp, ) ! 0){point-score[j] atoi(tmp);}point-sum point-score[j];}printf(总成绩%d\n, point-sum);}point point-next;}if(0 flag){printf(\n未找到%s!按任意键继续……, tmp);}else{printf(\n修改完毕按任意键继续……);}getch();
}// 删除指定学生的信息:删除某个链表结点
void delete(void)
{student_t *point head, *back;char tmp[STUDENT_NUMBER];uint8_t flag 0, j;char a;printf(请输入学号); // 学号是唯一的gets(tmp);while(1){if(NULL point-next){break;}if(atoi(tmp) atoi(point-num)){flag 1;head point-next;free(point);count--;break;}back point;point point-next;if(atoi(tmp) atoi(point-num)){flag 1;back-next point-next;free(point);count--;break;}}if(0 flag){printf(\n未找到%s!按任意键继续……, tmp);}else{printf(\n修改完毕按任意键继续……);}getch();
}// 保存到指定路径
void save(void)
{FILE *fp;student_t *point head;char filename[FILENAME_SIZE] {d://qq.dat};printf(请输入文件名如%s, filename);gets(filename);while(strcmp(filename , ) 0){printf(文件名不能为空请重新输入);gets(filename);}if((fp fopen(filename, wb)) NULL){printf(文件打开失败!\n按任意键继续……);getch();return;}printf(正在保存信息请耐心等待……\n);count 0;while(NULL ! point){count;fwrite(point, sizeof(student_t), 1, fp);point point-next;}fclose(fp);printf(信息保存成功按任意键继续……);getch();
}// 从指定文件读取学生的信息到链表
void load(void)
{FILE *fp;student_t *point, *q;char filename[FILENAME_SIZE] {d://qq.dat};printf(请输入文件名如%s, filename);gets(filename);while(strcmp(filename , ) 0){printf(文件名不能为空请重新输入);gets(filename);}if((fp fopen(filename, rb)) NULL){printf(文件打开失败!\n按任意键继续……);getch();return;}printf(正在从文件载入信息请耐心等待……\n);point (student_t *)malloc(sizeof(student_t));head point;count 0;while(!feof(fp)){count;fread(point, sizeof(struct student), 1, fp);point-next (student_t *)malloc(sizeof(student_t));q point;point point-next;}q-next NULL;fclose(fp);printf(学生信息载入成功按任意键继续……);getch();
}// 退出系统
void quit(void)
{char c;printf(你真的要退出系统吗?(Y/N));c getchar();if(Y c || y c){printf(系统退出成功...\n);exit(0);}
}int main(void)
{uint8_t value;char choice[3];while(1){system(cls);menu();do{printf(请输入功能键);gets(choice);value atoi(choice);}while((value 12) || (value 0));switch(value){case 1:create();break;case 2:display_all();break;case 3:search_on_number();break;case 4:search_on_name();break;case 5:search_on_age();break;case 6:modify();break;case 7:delete();break;case 8:save();break;case 9:load();break;case 10:quit();break;default:break;}}return 0;
}