C语言:学生信息管理程序
目前只有5个功能
1. 增加学生信息
2. 删除学生信息
3. 查询某学生信息
4. 列出所有学生信息
5. 按出生日期先后输出学生信息
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct StuInfo//学生信息
{char cName[10];char cSex;char cNumber[6];char cTel[13];int iYear;int iMonth;
};
typedef struct StuInfo INFO;
void AddStu()//增加学生函数
{int iLenth;FILE *fp = NULL;INFO toAdd;//临时存储新学生信息system("CLS");fp = fopen("SavedStudents.txt", "a+"); //a+读写指针在文件尾if(fp == NULL){puts("Error01");getchar();getchar();return;}puts("输入信息:\n姓名\t性别\t学号\t出生年月\t手机号");scanf("%s %c %s %d.%d %s", toAdd.cName, &toAdd.cSex, toAdd.cNumber, &toAdd.iYear, &toAdd.iMonth, toAdd.cTel);//合法性判断if(toAdd.cSex != 'F'&&toAdd.cSex != 'M')//性别只能为F或者M{puts("性别格式错误!请重新输入性别:");scanf("%c", &toAdd.cSex);}if(toAdd.iYear <= 1980 || toAdd.iYear >= 2017 || toAdd.iMonth>12){puts("日期错误!请重新输入出生日期:");scanf("%d.%d", &toAdd.iYear, &toAdd.iMonth);//日期格式为1990.1格式}iLenth = strlen(toAdd.cTel);//手机号长度if(iLenth != 11){puts("手机号码格式错误!请重新输入手机号:");scanf("%s", toAdd.cTel);}iLenth = strlen(toAdd.cNumber);if(iLenth != 5){puts("学号格式错误!请重新输入学号:");scanf("%s", toAdd.cNumber);}//判断结束fwrite(&toAdd, sizeof(INFO), 1, fp);fclose(fp);puts("写入成功!");puts("按回车返回");getchar();getchar();return;
}
void DeleteStu()//通过学号删除学生信息
{FILE *fp = NULL;INFO Stu[100];int i = 0, iCount = 0, iRecord = 0;char cNumber[6];system("CLS");fp = fopen("SavedStudents.txt", "a+");if(fp == NULL){puts("Error01");getchar();getchar();return;}rewind(fp);puts("姓名\t性别\t学号\t出生年月\t手机号");for(i = 0, iCount = 0;fread(&Stu[i], sizeof(INFO), 1, fp);++i, ++iCount){printf("%s\t%c\t%s\t%d.%d\t\t%s\n", Stu[i].cName, Stu[i].cSex, Stu[i].cNumber, Stu[i].iYear, Stu[i].iMonth, Stu[i].cTel);}fclose(fp);fp = fopen("SavedStudents.txt", "w+"); //覆盖重写rewind(fp);puts("输入要删除学生的学号:");scanf("%s", cNumber);for(i = 0;i<iCount;i++){if(strcmp(cNumber, Stu[i].cNumber) == 0){iRecord = i;break;}}for(i = 0;i<iCount;++i){if(i == iRecord)//删除实质为:不向文件写入该条信息{continue;}else{fwrite(&Stu[i], sizeof(INFO), 1, fp);}}fclose(fp);puts("删除完成!");puts("按回车返回");getchar();getchar();return;
}
void GetInfo()//通过学号取得学生信息
{FILE *fp;INFO Stu[100];char cNumber[6];int iLenth, iCount = 0, i;system("CLS");fp = fopen("SavedStudents.txt", "a+"); //a+读写指针在文件尾if(fp == NULL){puts("Error01");getchar();getchar();return;}rewind(fp);for(;fread(&Stu[iCount], sizeof(INFO), 1, fp);++iCount);//读入并计数puts("输入你要查询的学号:如:Y1001");scanf("%s", cNumber);iLenth = strlen(cNumber);if(iLenth != 5){puts("学号格式错误!");puts("按回车返回");getchar();getchar();return;}for(i = 0;i<iCount;++i){if(strcmp(Stu[i].cNumber, cNumber) == 0){puts("姓名\t性别\t学号\t出生年月\t手机号");printf("%s\t%c\t%s\t%d.%d\t\t%s\n", Stu[i].cName, Stu[i].cSex, Stu[i].cNumber, Stu[i].iYear, Stu[i].iMonth, Stu[i].cTel);break;}if(i == iCount - 1){puts("没有找到匹配学号!");}}puts("按回车返回");getchar();getchar();return;
}
void ListAllInfo()//查看所有学生信息
{FILE *fp = NULL;INFO Stu[100], Temp;int iCount = 0, i = 0, j = 0;system("CLS");fp = fopen("SavedStudents.txt", "a+");if(fp == NULL){puts("Error01");getchar();getchar();return;}rewind(fp);for(i = 0, iCount = 0;fread(&Stu[i], sizeof(INFO), 1, fp);++i, ++iCount);for(i = 0;i<iCount;i++){for(j = 0;j<iCount - 1;j++){if(strcmp(Stu[j].cNumber, Stu[j + 1].cNumber)>0){Temp = Stu[j];Stu[j] = Stu[j + 1];Stu[j + 1] = Temp;}}}puts("姓名\t性别\t学号\t出生年月\t手机号");for(i = 0;i<iCount;++i){printf("%s\t%c\t%s\t%d.%d\t\t%s\n", Stu[i].cName, Stu[i].cSex, Stu[i].cNumber, Stu[i].iYear, Stu[i].iMonth, Stu[i].cTel);}printf("\n共找到[%d]条记录", iCount);puts("\n按回车返回");getchar();getchar();return;
}
void SortAndOut()//排序学生
{FILE *fp = NULL;INFO Stu[100], Temp;int i, j, iCount = 0;system("CLS");fp = fopen("SavedStudents.txt", "a+");if(fp == NULL){puts("Error01");getchar();getchar();return;}rewind(fp);for(;fread(&Stu[iCount], sizeof(INFO), 1, fp);++iCount);//读入并计数for(i = 0;i<iCount - 1;++i){for(j = 0;j<iCount - 1;++j){if(Stu[j].iYear>Stu[j + 1].iYear){Temp = Stu[j];Stu[j] = Stu[j + 1];Stu[j + 1] = Temp;}if(Stu[j].iYear == Stu[j + 1].iYear&&Stu[j].iMonth>Stu[j + 1].iMonth){Temp = Stu[j];Stu[j] = Stu[j + 1];Stu[j + 1] = Temp;}}}puts("姓名\t性别\t学号\t出生年月\t手机号");for(i = 0;i<iCount;++i){printf("%s\t%c\t%s\t%d.%d\t\t%s\n", Stu[i].cName, Stu[i].cSex, Stu[i].cNumber, Stu[i].iYear, Stu[i].iMonth, Stu[i].cTel);}puts("按回车返回");getchar();getchar();return;
}int main()
{int iChoice;puts("1.增加学生\n2.删除学生\n3.查询学生\n4.显示所有学生信息(默认学号排序)\n5.按出生年月排序输出\n0.退出\n输入选择:");scanf("%d", &iChoice);while(iChoice != 0)//主界面{switch(iChoice){case 1:AddStu();break;case 2:DeleteStu();break;case 3:GetInfo();break;case 4:ListAllInfo();break;case 5:SortAndOut();break;default:break;}system("CLS");puts("1.增加学生\n2.删除学生\n3.查询学生\n4.显示所有学生信息(默认学号排序)\n5.按出生年月排序输出\n0.退出\n输入选择:");scanf("%d", &iChoice);}return 0;
}
C语言:学生信息管理程序相关推荐
- c语言存储学生信息并显示,C语言实现学生信息管理程序
本文实例为大家分享了C语言实现学生信息管理程序的具体代码,供大家参考,具体内容如下 目前只有5个功能 1. 增加学生信息 2. 删除学生信息 3. 查询某学生信息 4. 列出所有学生信息 5. 按出生 ...
- c语言学生管理程序添加,C语言实现学生信息管理程序
本文实例为大家分享了C语言实现学生信息管理程序的具体代码,供大家参考,具体内容如下 目前只有5个功能 1. 增加学生信息 2. 删除学生信息 3. 查询某学生信息 4. 列出所有学生信息 5. 按出生 ...
- C语言学生成绩管理程序(可排队序统计)
C语言学生成绩管理程序(可排队序统计) 一.系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 ...
- c语言学生信息系统 完整版,C语言 学生信息管理系统(完整版).docx
C语言 学生信息管理系统(完整版) 电子科技大学成都学院 程序综合设计论文 论文题目 学生信息管理系统 学生姓名 魏国 学 号 1340840625 专 业 机械设计制造及其自动化 系(分院) 电子工 ...
- 大一c语言学生信息管理系统课程设计
使用命令行操作, 每次操作结束后,代码中加入清屏命令,给人一种有界面的感觉. 大一学c语言,现在回过头来看, 觉得当时什么图形界面啥的都没学, 怎么写课程设计. 结果我还是当时班上写得最棒的黑框框毕业 ...
- java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序
利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...
- C语言学生信息管理系统(结构体数组,文件)
C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷.在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码在 ...
- c语言输出编号姓名成绩,c语言 学生信息包括,学号,姓名,五门功课的成绩.输入输出。总分排序...
c语言 学生信息包括,学号,姓名,五门功课的成绩.输入输出.总分排序 來源:互聯網 2010-06-16 18:12:05 評論 分類: 電腦/網絡 >> 程序設計 >> ...
- 显示学生信息的C语言,学生信息管理系统C语言.doc
学生信息管理系统C语言 学生信息管理系统 摘要 由于学校规模进一步扩大,学生人数逐年上升,学生信息的管理也变得越来越复杂,切实有效的把学生信息管理系统引入学校教务管理中,对于促进学校管理制度和提高学校 ...
- 学生管理程序c语言数组,c语言学生管理系统(c语言学生信息管理系统)
要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查. #include /*引用库函数*/ #include #include #include typedef struct /*定 ...
最新文章
- linux查看CPU信息
- 分析型数据库受大数据市场追捧
- 初识Mysql(part15)--我需要知道的4条Mysql语句之操作表
- 如何用计算机管理员权限,教你电脑使用代码添加管理员权限的详细教程
- linux普通用户发送信号,Linux信号发送与作业控制
- Win11如何调整任务栏大小 Win11调整任务栏大小的方法
- C#问题——interface class
- 从C#到Swift原来这么简单,So Easy!
- SQL Server schema 用法
- AMOS分析技术:模型的群组分析;AMOS如何对同一个模型分别用男性数据和女性数据拟合?
- rectangle函数与Rect函数的用法
- 【K8S集群安装二】K8S集群安装步骤
- 盘点编程那些英语单词的中文意思
- 微软云Blob存储账号使用——Java使用
- 心学与技术-大学之道和尽心知性
- 关于mysql的时区(下):如何设置mysql的时区
- phalcon mysql中文乱码_Phalcon查询语言
- 联想小新pro16无法识别网卡MT7921的问题
- OpenCV开发笔记(四十八):红胖子8分钟带你深入了解直方图均衡化(图文并茂+浅显易懂+程序源码)
- 提高APP用户粘性,你需要了解这些!