功能1: 学籍信息
#include <stdio.h>
#include <stdlib.h>
// 1.学生学籍信息 (完成)
void record_student(){
// 模式选择 和参数设置
int mode;
int num=0, b=0, s=0, j, i;
int key;
// student结构体
struct student{
char number[8];
char name[10];
char sex[4];
char grade[4];
char phone[11];
char major[14];
char dormitory[10];
char room[3];
}stu[1000];
// 清屏, 并弹出提示
while (num>=0){
system("cls");
printf("\n");
printf(" --学籍信息查看\n");
printf(" -------------------------");
printf("\n");
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
if (key==27) break;
else{
printf("\n\t添加学籍信息: 1\n");
printf("\t查看学籍信息: 2\n\n");
printf(" --请输入你的选择: ");
scanf("%d", &mode);
// 学籍信息查看功能
if (mode==2){
int i,j, key;
char data[1000][8][30];
// 打开文件, 并使用二维数组读取
FILE *fp;
fp = fopen("学生学籍信息表.xls", "a+");
for (i=0;i<1000;i++){
for(j=0;j<8;j++){
fscanf(fp,"%s",&data[i][j]);
fseek(fp, 1L, SEEK_CUR); /*fp指针从当前位置向后移动*/
}
}
fclose(fp);
int sum=0, require_num, head;
// 清点文件中的学籍信息数
for (i=0,sum=0;i<10000;i++, sum++){
if (data[i][0][0] == '\0') break;
}
// 清屏
system("cls");
printf("\n");
// 弹出信息查看提示
printf(" --总计有%d条数据\n --请输入你要查询的数量: ", sum);
scanf("%d", &require_num);
printf(" --请输入起始查询位置: ");
scanf("%d", &head);
system("cls");
printf("\n");
printf(" --查看学籍信息\n");
printf(" -------------------------");
printf("\n\n\t-------------------------");
printf("-----------------------------");
printf("-----------------------------");
// 根据起始位置进行查询
for (i=head;i<require_num+head;i++){
// 当信息不存在时, 打破循环, 用于判断输入查询条数是否大于总信息数
if (data[i][0][0] == '\0') {
break;
}
// 内层循环
for (j=0;j<8;j++){
// 输出每行中的所有信息
switch (j){
case 0:{
printf("\n\n\t姓名: %s\t", data[i][0]);
break;
}
case 1:{
printf("\t学号: %s\t", data[i][1]);
break;
}
case 2:{
printf("\t年级: %s\t", data[i][2]);
break;
}
case 3:{
printf("\t性别: %s\t", data[i][3]);
break;
}
case 4:{
printf("\n\t电话号: %s\t", data[i][4]);
break;
}
case 5:{
printf("专业: %s\t", data[i][5]);
break;
}
case 6:{
printf("\t寝室楼: %s\t", data[i][6]);
break;
}
case 7:{
printf("\t寝室号: %s\t", data[i][7]);
break;
}
}
}
printf("\n\n\t-------------------------");
printf("-----------------------------");
printf("-----------------------------");
}
// 判断信息条数
if (require_num-head>sum) printf("\n\n --共计查询 %d 条数据\n", sum);
else printf("\n\n --共计查询 %d 条数据\n", require_num-head);
printf("\n -------------------------\n");
printf("\n 按任意键以继续程序...");
key = getch();
}
// 学籍信息录入功能
else if (mode==1){
// 清除文字
system("cls");
printf("\n");
printf(" --学籍信息录入\n");
printf(" -------------------------");
printf("\n");
while (num>=0){
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
// 退出外层循环
if (key==27) break;
// 信息导入
else {
FILE *fp;
fp = fopen("学生学籍信息表.xls", "a+");
printf("\n\t姓名: ");
scanf("%s", &stu[num].name);
fprintf(fp, "%s\t", stu[num].name);
printf("\t学号: ");
scanf("%s", &stu[num].number);
fprintf(fp, "%s\t", stu[num].number);
printf("\t年级: ");
scanf("%s", &stu[num].grade);
fprintf(fp, "%s\t", stu[num].grade);
printf("\t性别: ");
scanf("%s", &stu[num].sex);
fprintf(fp, "%s\t", stu[num].sex);
printf("\t联系方式: ");
scanf("%s", &stu[num].phone);
fprintf(fp, "%s\t", stu[num].phone);
printf("\n\t专业: ");
scanf("%s", &stu[num].major);
fprintf(fp, "%s\t", stu[num].major);
printf("\t寝室楼: ");
scanf("%s", &stu[num].dormitory);
fprintf(fp, "%s\t", stu[num].dormitory);
printf("\t寝室号: ");
scanf("%s", &stu[num].room);
fprintf(fp, "%s\t\n", stu[num].room);
num ++;
printf("\n");
printf(" -------------------------");
printf("\n");
fclose(fp);
}
}
}
}
}
}
功能2: 学生动向
// 2.添加学生动向 (完成)
void record_trend(){
int num=0, b=0, s=0, j, i;
int key;
struct trend{
char name[10];
char number[8];
char grade[4];
char leave[20];
char back[20];
struct block{
char name[10];
}block[10];
}trend[1000];
system("cls");
printf("\n");
printf(" --学生动向录入\n");
printf(" -------------------------");
printf("\n");
while (num>=0){
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
if (key==27) break;
else {
FILE *fp;
fp = fopen("学生动向信息表.xls", "a+");
printf("\n\t姓名: ");
scanf("%s", &trend[num].name);
fprintf(fp, "%s\t", trend[num].name);
printf("\t学号: ");
scanf("%s", &trend[num].number);
fprintf(fp, "%s\t", trend[num].number);
printf("\t年级: ");
scanf("%s", &trend[num].grade);
fprintf(fp, "%s\t", trend[num].grade);
printf("\n\t离校时间: ");
scanf("%s", &trend[num].leave);
fprintf(fp, "%s\t", trend[num].leave);
printf("\t返校时间: ");
scanf("%s", &trend[num].back);
fprintf(fp, "%s\t", trend[num].back);
printf("\n\t经过的片区数: ");
scanf("%d", &s);
for (j=0;j<s;j++){
printf("\t 片区街道名称:");
scanf("%s", &trend[num].block[j].name);
fprintf(fp, "%s\t", trend[num].block[j].name);
}
fprintf(fp, "\n");
num ++;
printf("\n");
printf(" -------------------------");
printf("\n");
fclose(fp);
}
}
}
功能3: 核酸情况
// 3.学生核酸情况 (完成)
void condition(){
int num, key;
int i,j;
struct con{
char name[10];
char number[10];
char date[10];
char result[10];
}con[1000];
system("cls");
printf("\n");
printf(" --核酸情况录入\n");
printf(" -------------------------");
printf("\n");
while (num>=0){
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
if (key==27){
printf("\n\n\n\n\n --录入结束...\n\n");
printf(" -------------------------\n");
break;
}
else{
FILE *fp;
fp = fopen("学生核酸情况表.xls", "a+");
printf("\n\t姓名: ");
scanf("%s", &con[num].name);
fprintf(fp, "%s\t", con[num].name);
printf("\t学号: ");
scanf("%s", &con[num].number);
fprintf(fp, "%s\t", con[num].number);
printf("\t日期: ");
scanf("%s", &con[num].date);
fprintf(fp, "%s\t", con[num].date);
printf("\t结果: ");
scanf("%s", &con[num].result);
fprintf(fp, "%s\t\n", con[num].result);
num ++;
printf("\n");
printf(" -------------------------");
printf("\n");
fclose(fp);
}
}
}
功能4: 每日体温
// 4.学生每日体温录入 (完成)
void temperature(){
int num, key;
int i,j;
struct tem{
char name[10];
char number[10];
char date[10];
char m_tem[4];
char n_tem[4];
char a_tem[4];
}tem[1000];
system("cls");
printf("\n");
printf(" --每日体温录入\n");
printf(" -------------------------");
printf("\n");
while (num>=0){
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
if (key==27) break;
else{
FILE *fp;
fp = fopen("学生每日体温表.xls", "a+");
printf("\n\t姓名: ");
scanf("%s", &tem[num].name);
fprintf(fp, "%s\t", tem[num].name);
printf("\t学号: ");
scanf("%s", &tem[num].number);
fprintf(fp, "%s\t", tem[num].number);
printf("\t日期: ");
scanf("%s", &tem[num].date);
fprintf(fp, "%s\t", tem[num].date);
printf("\t上午温度: ");
scanf("%s", &tem[num].m_tem);
fprintf(fp, "%s\t", tem[num].m_tem);
printf("\t中午温度: ");
scanf("%s", &tem[num].n_tem);
fprintf(fp, "%s\t", tem[num].n_tem);
printf("\t下午温度: ");
scanf("%s", &tem[num].a_tem);
fprintf(fp, "%s\t", tem[num].a_tem);
num ++;
printf("\n");
printf(" -------------------------");
printf("\n");
fclose(fp);
}
}
}
功能5: 异常学生
// 5.异常学生 (半)
void list_abnormal(){
int key;
system("cls");
printf("\n");
printf("\n --正在添加此功能, 请以后再尝试...\n");
printf("\n --按任意键以继续程序...");
key = getch();
fflush(stdin);
}
功能6: 新增风险
// 6.新增风险地区 (完成)
void record_risks(){
int num, key;
int i,j;
struct risk{
char area[20];
char level[20];
char date[20];
}risk[1000];
system("cls");
printf("\n");
printf(" --新增风险地区录入\n");
printf(" -------------------------");
printf("\n");
while (num>=0){
printf("\n --退出程序请按Esc:");
key = getch();
printf("\n");
if (key==27) break;
else{
FILE *fp;
fp = fopen("新增风险地区表.xls", "a+");
printf("\n\t地区名称: ");
scanf("%s", &risk[num].area);
fprintf(fp, "%s\t", risk[num].area);
printf("\t风险等级: ");
scanf("%s", &risk[num].level);
fprintf(fp, "%s\t", risk[num].level);
printf("\t发布日期: ");
scanf("%s", &risk[num].date);
fprintf(fp, "%s\t\n", risk[num].date);
num ++;
printf("\n");
printf(" -------------------------");
printf("\n");
fclose(fp);
}
}
}
功能7: 地区查询
// 7.风险地区查询 (完成)
void require_risks(){
char data[1000][3][30], needed[1000][3][30];
int i,j, actual_num, num, key, flag[2];
char date[20],city[20],level[20];
FILE *fp;
fp = fopen("新增风险地区表.xls", "a+");
for (i=0,num=0;i<10000;i++,num++){
for(j=0;j<3;j++){
fscanf(fp,"%s",&data[i][j]);
fseek(fp, 1L, SEEK_CUR); /*fp指针从当前位置向后移动*/
}
if (data[i][0][0] == '\0') break;
}
system("cls");
printf("\n");
printf(" --总计有%d条数据\n", num);
printf("\n --请输入你想查询的城市: ");
scanf("%s", &city);
printf(" --请输入你想查询的日期: ");
scanf("%s", &date);
system("cls");
printf("\n");
printf(" --查看学籍信息\n");
printf(" -------------------------\n\n");
if (strcmp(city,"all")==0 && strcmp(date,"all")==0){
for (i=num;i>0;i--){
printf("\n\t疫情城市: %s\t", data[num-i][0]);
printf("风险等级: %s\t", data[num-i][1]);
printf("发布日期: %s\n", data[num-i][2]);
actual_num++;
}
}
else if (strcmp(city,"all")==0){
for (i=num;i>0;i--){
if (strcmp(date,data[num-i][2])==1) {
printf("\n\t疫情城市: %s\t", data[num-i][0]);
printf("风险等级: %s\t", data[num-i][1]);
printf("发布日期: %s\n", data[num-i][2]);
actual_num++;
}
else continue;
}
}
else if (strcmp(date,"all")==0){
for (i=num;i>0;i--){
if (strcmp(city,data[num-i][0])==0) {
printf("\n\t疫情城市: %s\t", data[num-i][0]);
printf("风险等级: %s\t", data[num-i][1]);
printf("发布日期: %s\n", data[num-i][2]);
actual_num++;
}
else continue;
}
}
else{
for (i=num;i>0;i--){
if (strcmp(date,data[num-i][2])==0 && strcmp(city,data[num-i][0])==0){
printf("\n\t疫情城市: %s\t", data[num-i][0]);
printf("风险等级: %s\t", data[num-i][1]);
printf("发布日期: %s\n", data[num-i][2]);
actual_num++;
}
}
}
printf("\n\n --查询到 %d 条消息\n", actual_num);
printf(" -------------------------");
printf("\n 按任意键以继续程序...");
key = getch();
}
功能8: 学生查询
// 8.学生情况查询 (半)
void require_student(){
int key;
system("cls");
printf("\n");
printf("\n --正在添加此功能, 请以后再尝试...\n");
printf("\n --按任意键以继续程序...");
key = getch();
fflush(stdin);
}
功能9: 退出系统
// 9.退出系统 (完成)
void system_out(){
system("cls");
printf("\n");
printf("\n \t--System out...\n\n");
printf(" \t--祝愿疫情早日结束...\n");
}
功能10: 主程序
// 主程序
int main(){
int key=0, mode;
while (key>=0){
system("cls");
printf("\n");
printf(" --疫情学生管理系统\n");
printf(" -------------------------");
printf("\n");
printf("\n\t学生学籍信息: 1\t\t动向信息添加: 2\t\t核酸情况录入: 3\n\n");
printf("\t每日体温录入: 4\t\t异常学生查询: 5\t\t新增风险地区: 6\n\n");
printf("\t风险地区查询: 7\t\t学生情况查询: 8\t\t退出管理系统: 9\n\n");
printf("\n --请输入你要使用的功能: ");
if (scanf("%ld", &mode)==1){
if (mode==9){
system_out();
break;
}
switch(mode){
case 1:{
record_student();
break;
}
case 2:{
record_trend();
break;
}
case 3:{
condition();
break;
}
case 4:{
temperature();
break;
}
case 5:{
list_abnormal();
break;
}
case 6:{
record_risks();
break;
}
case 7:{
require_risks();
break;
}
case 8:{
require_student();
break;
}
}
}
else {
system("cls");
printf("\n");
printf(" --开发者信息\n");
printf(" -------------------------");
printf("\n\n --开发者: 盛杰(檸檬派)");
printf("\n --个人博客: https://blog.csdn.net/weixin_61897641?type=blog");
printf("\n\n --按任意键以继续程序...");
key = getch();
fflush(stdin);
system("cls");
printf("\n");
printf("\n --在功能界面请输入 1-9 的数字 !\n");
printf("\n --按任意键以继续程序...");
key = getch();
fflush(stdin);
}
}
}
将代码拼接之后, 就是疫情学生管理系统的整份代码
开发者: 盛杰