C语言实现学生学籍管理系统课程设计

目录
  • 设计要求
  • 完整代码
  • 运行结果

本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下

设计要求

设计学籍管理系统

1、添加学生信息
2、浏览学生信息
3、查询学生信息
4、修改学生信息
5、册J除学生信息
6、排序学生信息
7、读取文件学生
8、保存到文件

完整代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<windows.h>
#define M 80//对结构体变量(学生数目)进行宏定义
const char* path = "D://C 语言课程设计//信息存储文件.txt";
FILE* fp;//定义指向文件的指针
struct student
{
 char name[20]; //姓名
 char sex[10]; //性别
 int age; //年龄
 char num[20]; //学号
 char major[30];//专业
 char classes[30];//班级
 int math;//数学成绩
 int english;//英语成绩
};//定义结构体变量
int jiami();
void input(struct student stu[M]);
void output(struct student stu[M]);
void lookfor(struct student stu[M]);
void order(struct student stu[M]);
void delete_s(struct student stu[M]);
void modify(struct student stu[M]);
void xuehao(struct student stu[M]);
void xingming(struct student stu[M]);
void fileread(struct student stu[M]);
void filewrite(struct student stu[M]);
int count;//判断学生的数目
struct student t;
int jiami()
{
 int s = 123, m;//s 为密码,m 为输入的密码
 int i = 0;//用来判断输入的密码是否正确
 printf("请输入密码(仅有三次机会):");
 scanf("%d", &m);//第一次输入密码
 if (m != s)
 {
 printf("密码错误,还有两次机会:");
 scanf("%d", &m);//第二次输入密码
 if (m != s)
 {
 printf("密码错误,最后一次机会:");
 scanf("%d", &m);//第三次输入密码
 if (m != s)
 {
 printf("密码错误\n");
 }
 else i = 1;
 }
 else i = 1;
 } 
 else i = 1;
 return i;
}
int main()
{
 int choice, sum, i;//choice 用来判断输入的命令;sum 用来记录输入错误的次数;i 用来判断输入的密码是否正确
 struct student stu[M];
 sum = 0;//初始化 sum 
 i = jiami();
 if (i == 1)//判断输入的密码是否正确
 do
 {
 printf("\t-------------------------------------------------\n");
 printf("\t\t+ 学生学籍管理系统 +\n");
 printf("\t-------------------------------------------------\n");
 printf("\t\t ***************\n");
 printf("\t\t 1、添加学生信息\n");
 printf("\t\t 2、浏览学生信息\n");
 printf("\t\t 3、查询学生信息\n");
 printf("\t\t 4、修改学生信息\n");
 printf("\t\t 5、删除学生信息\n");
 printf("\t\t 6、排序学生信息\n");
 printf("\t\t 7、读取文件学生\n");
 printf("\t\t 8、保存到文件\n");
 printf("\t\t 9、退出系统\n");
 printf("\t\t ***************\n");
 printf("请输入你的选择\n"); //输出菜单
 scanf("%d", &choice); //输入选择
 fflush(stdin); //清空缓冲区 
 if (choice > 9 || choice <= 0)
 {
 sum++;
 if (sum >= 5)
 {
 printf("输入错误次数过多,程序将重新开始\n");
-7-
 system("pause");
 system("cls"); //清屏
 }
 }
 switch (choice)
 {
 case 1:
 input(stu);
 break; //添加学生信息 
 case 2:
 output(stu);
 break;//浏览学生信息
 case 3:
 lookfor(stu);
 break; //寻找学生信息
 case 4:
 modify(stu);
 break; //修改学生信息
 case 5:
 delete_s(stu);
 break; //删除学生信息
 case 6:
 order(stu);
 break; //排序学生信息
 case 7:
 fileread(stu);
 break; //从文件中读取学生信息
 case 8:
 filewrite(stu);
 break; //将学生信息写入文件
 case 9:
 printf("感谢你使用学生学籍管理系统,请关掉程序!\n");
 system("pause");
 break;
 default:
 printf("无效的选择!请重新输入!\n");
 break;
 }
 } while (choice != 9);
 printf("密码输入错误,程序结束\n");
 return 0;
}
void input(struct student stu[M])//自定义输入函数
{
 system("cls");//清屏
 printf("请添加要输入学生的信息\n");
 printf("请输入学生的姓名\n");
 scanf("%s", &stu[count].name );//输入学生姓名
 printf("请输入学生的性别\n");
 scanf("%s", &stu[count].sex);//输入学生性别
 printf("请输入学生的年龄\n");
 scanf("%d", &stu[count].age);//输入学生年龄
 printf("请输入学生的学号\n");
 scanf("%s", &stu[count].num);//输入学生学号
 printf("请输入学生的专业\n");
 scanf("%s", &stu[count].major);//输入学生专业
 printf("请输入学生的班级\n");
 scanf("%s", &stu[count].classes); //输入学生班级
 printf("请输入学生的数学成绩\n");
 scanf("%d", &stu[count].math); //输入学生数学成绩
 printf("请输入学生的英语成绩\n");
 scanf("%d", &stu[count].english);//输入学生英语成绩
 count++;//计算学生人数
}
void output(struct student stu[M])//自定义输出函数
{
 int j;
 system("cls");//清屏
 if (count == 0)//判断目前是否有学生信息
 {
 printf("当前已存入学生的信息为 0 个\n");
 return;
 }
 else
 {
 for (j = 0; j < count; j++)
 {
 printf("姓名:%s, ", stu[j].name);//输出姓名
 printf("性别:%s, ", stu[j].sex);//输出性别
 printf("年龄:%d, ", stu[j].age);//输出年龄
 printf("学号:%s, ", stu[j].num);//输出学号
 printf("专业:%s, ", stu[j].major);//输出专业
 printf("班级:%s, ", stu[j].classes);//输出班级
 printf("数学成绩:%d, ", stu[j].math);//输出数学成绩
 printf("英语成绩:%d\n", stu[j].english);//输出英语成绩
 }
 } }
void lookfor(struct student stu[M])//自定义查询函数
{
 int choice;//定义选择
 system("cls");//清屏
 if (count == 0)//判断目前是否有学生信息
 {
 printf("当前已存学生的信息为 0 个,无法查询!!!\n");
 return;
 }
 else
 {
 printf("请选择你所要查询的方式: 1、学号 2、姓名 3、取消\n");
 scanf("%d", &choice);//输入选项
 switch (choice)
 {
 case 3:return; break;
 case 2:xingming(stu); break;//按姓名查询
 case 1:xuehao(stu); break; //按学号查询
 default:printf("无效的选择!请重新输入!\n"); break;
 }
 } } 
void xuehao(struct student stu[M])//自定义学号查询函数
{
 int j, flag = 0;
 int k = 0;//判断是否找到该学生信息
 char xh[25];
 system("cls");
 printf("请输入你想要查询的学生的学号");
 scanf("%s", xh);//输入学号
 fflush(stdin);//清空缓冲区
 for (j = 0; j < count; j++)
 {
 if (strcmp(stu[j].num, xh) == 0)//找到该学号的学生信息
 {
 printf("姓名:%s\t\t", stu[j].name);//输出姓名
 printf("性别:%s\t\t", stu[j].sex);//输出性别
 printf("年龄:%d\t\t", stu[j].age);//输出年龄
 printf("学号:%s\t\t", stu[j].num);//输出学号
 printf("专业:%s\t\t", stu[j].major);//输出专业
 printf("班级:%s\t\t", stu[j].classes);//输出班级
 printf("数学成绩:%d\t\t", stu[j].math);//输出数学成绩
 printf("英语成绩:%d\t\t", stu[j].english);//输出英语成绩 //出该学生的信息
 k = 1;
 }
 }
 if (k == 0)//没有找到该学号
 {
 printf("很抱歉,没有你所需要的学生信息\n");
 } }
void xingming(struct student stu[M])//自定义姓名查询函数
{
 int n = 0;
 int j, flag = 0;
 char xm[25];
 system("cls");
 printf("请输入你想要查询的学生的姓名");
-11-
 scanf("%s", xm);
 fflush(stdin);
 for (j = 0; j < count; j++)
 {
 if (strcmp(stu[j].name, xm) == 0)
 {
 printf("姓名:%s\t\t", stu[j].name);//输出姓名
 printf("性别:%s\t\t", stu[j].sex);//输出性别
 printf("年龄:%d\t\t", stu[j].age);//输出年龄
 printf("学号:%s\t\t", stu[j].num);//输出学号
 printf("专业:%s\t\t", stu[j].major);//输出专业
 printf("班级:%s\t\t", stu[j].classes);//输出班级
 printf("数学成绩:%d\t\t", stu[j].math);//输出数学成绩
 printf("英语成绩:%d\t\t", stu[j].english);//输出英语成绩 //输出该学生的信息
 n = 1;
 }
 }
 if (n == 0)
 {
 printf("很抱歉,没有你所需要的学生信息\n");
 } }
void order(struct student stu[M])//自定义排序函数
{
 int j, k, choice, max;
 system("cls");
 printf("请输入你想要进行排序的方式\n");
 printf("1、数学 2、英语\n");
 scanf("%d", &choice); //输入选项
 switch (choice)
 {
 case 1:
 for (j = 0; j < count; j++)
 {
 max = j;
 for (k = j + 1; k < count; k++)
 if (stu[k].math > stu[max].math)
 {
 t = stu[k];
 stu[k] = stu[max];
 stu[max] = t;
 }
 };
 break; //按数学成绩排序
 case 2:
 for (j = 0; j < count; j++)
 {
 max = j;
 for (k = j + 1; k < count; k++)
 if (stu[k].english > stu[max].english)
 {
 t = stu[k];
 stu[k] = stu[max];
 stu[max] = t;
 }
 };
 break; //按英语成绩排序
 default:
 printf("无效的选择!请重新输入!\n");
 break;
 }
 if (choice >= 1 && choice <= 5)
 printf("排序成功!!!");
}
void delete_s(struct student stu[M])//自定义删除函数(按学号删除) 
{
 int j, index = 0, k = count;
 char xh[25];
 system("cls");
 if (count == 0)//判断学生数量是否为 0 
 {
 printf("当前已存学生信息为 0 个,无法删除!!!\n");
 return;
 }
 else
 {
 printf("请输入你想要删除的同学学号\n");
 scanf("%s", xh);//输入删除学生的学号
 fflush(stdin); //清空缓冲区
 for (j = 0; j < count; j++)
 {
 if (strcmp(stu[j].num, xh) == 0) //寻找该学生
 {
 for (j = index; j < count; j++)
 stu[j] = stu[j + 1];
 count--;
 if (count < k) //判断是否删除成功
 printf("你已经删除成功\n");
 }
 index++;
 }
 if (j == count) //判断是否有该学生的信息
 printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n");
 } }
void modify(struct student stu[M])//自定义修改函数
{
 int j, flag = 0, course;
 int i = 0;
 char xh[25];
 system("cls");
 if (count == 0) //判断是否有学生信息
 {
 printf("当前已存学生信息为 0 个,无法修改!!!\n");
 return;
 }
 else
 {
 printf("请输入你想要修改的同学学号\n");
-14-
 scanf("%s", &xh); //输入要修改学生的学号
 fflush(stdin);
 for (j = 0; j < count; j++)
 {
 if (strcmp(stu[j].num, xh) == 0)
 {
 i = 1;
printf("你确定要修改学生的信息吗?如果不确定的话,请关掉本程序吧!\n");
 printf("选择课程: 1、数学 2、英语 3、跳过\n");
 scanf("%d", &course); //选择要修改的一部分学生信息
 switch (course)
 {
 case 1:printf("请输入你想要修改后的学生成绩\n"); 
scanf("%d", &stu[j].math); break; //修改数学成绩
 case 2:printf("请输入你想要修改后的学生成绩\n"); 
scanf("%d", &stu[j].english); break;//修改英语成绩
 case 3:break;
 default:printf("无效的选择!请重新输入!\n"); break;
 }
 printf("选择信息: 1、学号 2、性别 3、年龄 4、专业 5、班级 6、跳过\n");
 scanf("%d", &course); //选择要修改的一部分学生信息 
 switch (course)
 {
 case 1:scanf("%s", stu[j].num); break;//修改学号
 case 2:printf("请输入修改后的信息:"); scanf("%s", 
stu[j].name); break;//修改性别
 case 3:printf("请输入修改后的信息:"); scanf("%d", 
&stu[j].age); break;//修改年龄
 case 4:printf("请输入修改后的信息:"); scanf("%s", 
stu[j].major); break;//修改专业
 case 5:printf("请输入修改后的信息:"); scanf("%s", 
&stu[j].classes); break;//修改班级
 case 6:break;
 default:printf("无效的选择!请重新输入!\n"); break;
 }
 } 
 }
 }
 if (i == 0) printf("无该学生信息!!\n");
 return;
}
void filewrite(struct student stu[M])//自定义写入文件函数
{
 char f;
 int j = 0;
 system("cls");
 printf("请选择是否要存入已输入的学生信息:'y'还是'n'???\n");
 scanf("%c", &f); //判断是否写入文件
 fflush(stdin); //清空缓冲区
 while (f != 'y' && f != 'n')
 {
 if (f != 'y' && f != 'n')
 printf("输入错误,请重新输入\n");
 printf("以下操作将会覆盖已存储的数据,确定请输入'y'或'n'?\n");
 scanf("%c", &f);
 fflush(stdin);
 }
 if (f == 'y')
 {
 if ((fp = fopen(path, "wb")) == NULL)
 {
 printf("无法打开文件\n");
 exit(0);
 }
 for (j = 0; j < count; j++)
 {
 fwrite(&stu[j], sizeof(struct student), 1, fp); //将学生信息写入文件
 }
 fclose(fp);
 if (count == 0)//判断学生数目是否为 0 
 printf("没有文件,无法保存\n");
 else
 printf("数据存储完毕\n");
 system("pause");
 }
 else
 return;
}
void fileread(struct student stu[M])//自定义读取文件信息函数
{
 char f;
 int j = 0;
 system("cls");//?????????
 printf("请选择是否要读取已输入的学生信息:'y'还是'n'?\n");
 scanf("%c", &f); //判断是否从文件中读取学生信息
 fflush(stdin); //清空缓冲区
 if (f == 'y')
 {
 if ((fp = fopen(path, "rb")) == NULL)
 {
 printf("cannot open this file\n");
 exit(0);
 }
 fread(&stu[j], sizeof(struct student), 1, fp); //从文件中读取学生信息
 count = 0;
 count++;
 j++;
 while (fread(&stu[j], sizeof(struct student), 1, fp))
 {
 j++;
 count++;
 }
 fclose(fp);
 printf("数据读取完毕!\n");
 system("pause");
 } 
 else
 return;
}

运行结果

本次登录设置的密码是123,当然你也可以自己修改密码
后面的需要执行哪项功能,就输入对应数字就可以!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现学生学籍管理系统程序设计

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 一.题目设计及其要求 1.题目:学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册.修改.查找.统计.学籍变化等操作.(用文件保存) 2.功能要求: (1)系统以菜单方式工作: (2)登记学生的学号,姓名,性别,年龄,籍贯,学院,专业,班级: (3)修改已知学号的学生信息: (4)查找已知学号的学生信息: (5)按学号和专业输出学生籍贯表: (6)查询学生学籍变化,比如入学,转专业,退学,降级,休学

  • C语言实现学籍管理系统

    本文实例为大家分享了C语言实现学籍管理系统的具体代码,供大家参考,具体内容如下 设计一个学籍管理系统,基本功能包括: 1.输入学生基本信息2.查询学生信息(1.按学号2.按姓名)3.删除学生信息(1.按学号2.按姓名)4.学生信息排序(1.按学号2.按姓名)5.修改学生基本信息6.输出学生信息7.保存学生信息0.退出程序 注:由于知识有限,该系统暂时规定只输入3个学生数据,今后会改良成可随机处理任意多个学生的数据 一.首页 void enter(struct student stu[],int

  • C语言实现简单学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期*/ { int year; int month; int day; }; struct

  • C语言实现学籍管理系统课程设计

    本文实例为大家分享了C语言实现学籍管理系统的具体代码,供大家参考,具体内容如下 学校的课程设计,自己完成后整理了一下.自己用链表实现的一个较简单的学籍管理系统,都是通过一些链表以及文件的基本操作完成. 功能实现 1-录入学生信息.2-查询学生信息.3-修改学生信息 .4-删除学生信息.5-显示学生信息.6-统计信息报表.7-读盘,存盘. 注:一些getchar()以及换行符是我为了让界面美观自己加的. #include<stdio.h> #include<stdlib.h> #in

  • C语言学籍管理系统源代码

    C语言学籍管理系统,整理一份,供大家参考,具体内容如下 #include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 100 void mycreat(); void mynewcreat(); void mydisplay(); void myretake(); void myselect(); void mynumsort(); void mysort(); void myprint1();

  • C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<windows.h> //**********************************结构体************************************* struct score

  • C语言学生学籍管理系统课程设计

    C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456 代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student { char xuehao[100];//输入学号 char name[100];//输入姓名 char sex[100];//输入性别 int

  • C语言实现学生学籍管理系统课程设计

    目录 设计要求 完整代码 运行结果 本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计学籍管理系统 1.添加学生信息2.浏览学生信息3.查询学生信息4.修改学生信息5.册J除学生信息6.排序学生信息7.读取文件学生8.保存到文件 完整代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<math.h> #includ

  • C语言实现学生成绩管理系统课程设计

    目录 设计要求 完整代码 运行结果 本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计学生成绩管理系统 要求如下: 1.输入学生信息2.统计学生成绩3.查找并显示学生成绩4.按姓名查找,修改学生资料5.显示所有学生名单6.查找并删除学生信息7.输出个科目成绩最高的学生 完整代码 #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include<string

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言学生成绩管理系统课程设计word版

    一份C语言学生成绩管理系统设计报告,分享给大家 一.课程设计题目 <学生成绩管理系统设计> 二.实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法. (2)掌握C++的基本概念和基础知识. (3)通过训练能够读懂较为复杂的C++语言源程序并具备基本C++语言程序设计的能力. (4)通过实训,培养自己编写.调试.分析程序的能力. (5)培养自己独立解决问题,查找资料的能力.同学之间相互帮助,相互交流,相互合作的团队精神. (6) 培养自己良好的学习兴趣,独立的

  • C语言数据结构之学生信息管理系统课程设计

    本文实例为大家分享了学生信息管理系统设计的具体代码,供大家参考,具体内容如下 建立一个动态链表,链表中每一结点包括:学号.姓名.性别.年龄.成绩.程序能实现以下功能: 建立链表      显示链表      查找链表中是否存在某个元素,并显示这个元素的所有信息,若没有这个元素则显示"无此记录!"的信息.      删除链表中指定学号的结点.      在链表中指定的位置插入一个新结点(学号不能和其他结点重复). 要求:程序运行中,先显示实现以上功能所构成的菜单,然后根据选项调用相应程序

  • C语言实现班档案管理系统课程设计

    本文实例为大家分享了C语言班档案管理系统的具体代码,供大家参考,具体内容如下 做的挺长时间的课程设计,当作参考吧 #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 20 struct student { long num; char name[20]; char sex[10]; int age; char bz[40]; struct student *next; }; int i,j,

随机推荐