学生学籍管理系统
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求:
(1) 系统以菜单方式工作。
(2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;
(3)修改已知学号的学生信息;
(4) 删除已知学号的学生信息;
(5) 查找已知学号的学生信息;
(6) 按学号,专业输出学生籍贯表。
(7) 查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
【部分源码】如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //头文件
#define LEN 20 //学号和姓名最大字符数,20
#define N 50 //最大的学生人数
int NOW = 0;//当前已经有的学生数量
//函数声明
void help(); //帮助提示
void insert(); //录入学生信息
void modify(); //修改学生信息
void search(); //查询学生信息
void delet(); //删除学生信息
void menu(); //主菜单函数
void save(); //保存学生信息
void download(); //从文件读入学生信息
void jiguanbiao(); //输出学生籍贯信息
void xueji(); //输出学生学籍信息
//结构体保存学生信息
struct student{
char StudentId[LEN+1]; //学号
char StudentName[LEN+1]; //姓名
char StudentSex[LEN+1]; //性别
int StudentAge; //年龄
char BirthPlace[LEN+1]; //籍贯
char XiBie[LEN+1]; //院系
char ZhuanYe[LEN+1]; //专业
int BanJi; //班级
char xueji[LEN+1];
}stu[N];
//主函数
int main()
{
while (1)
{
menu();
}
system("pause");
return 0;
}
void menu()//菜单函数
{
int num;
printf("\n");
printf("——————————————————————————\n");
printf("*****************学生信息管理系统*******************\n");
printf("****************************************************\n");
printf("********************系统功能菜单********************\n");
printf("——————————————————————————\n");
printf("————0.请先使用帮助—————1.学生信息录入———\n");
printf("————2.学生信息修改—————3.学生信息删除———\n");
printf("————4.学生信息查找—————5.输出学生籍贯表——\n");
printf("————6.保存信息到文件————7.从文件读入信息——\n");
printf("————8.查看学生学籍变化———9.退出系统—————\n");
printf("——————————————————————————\n");
printf("请选择菜单编号:");
scanf("%d", &num);
switch (num)
{
case 0:
help();
break;
case 1:
insert();
break;
case 2:
modify();
break;
case 3:
delet();
break;
case 5:
jiguanbiao();
break;
case 4:
search();
break;
case 6:
save();
break;
case 7:
download();
break;
case 8:
xueji();
break;
case 9:
printf("退出程序成功!\n");
exit(0);
default:
printf("请在0-9之间选择\n");
system("pause");//提示完成之后显示按任意键继续
}
}
录入学生信息函数
void insert() //录入学生信息
{
int m;
int i=0,j;
int insertstart=NOW;
int flag;
printf("请输入待增加的学生数:\n");
scanf("%d", &m);
char checkid[N+1];
if (m > 0){
do
{
flag = 1;
while (flag)
{
flag = 0;
printf("请输入第%d位学生的学号:\n", i + 1);
scanf("%s", checkid);
for (j = 0; j < NOW; j++){
if (strcmp(checkid, stu[j].StudentId) == 0){
printf("该学生已存在,请重新输入!\n");
flag = 1;
break;
}
}
}
strcpy(stu[insertstart].StudentId, checkid);
printf("请输入第%d 个学生的姓名:\n", i+1);
scanf("%s", stu[insertstart].StudentName);
printf("请输入第%d 个学生的性别:\n", i+1);
scanf("%s", stu[insertstart].StudentSex);
printf("请输入第%d 个学生的年龄:\n", i+1);
scanf("%d", &stu[insertstart].StudentAge);
printf("请输入第%d 个学生的籍贯:\n",i+1);
scanf("%s", stu[insertstart].BirthPlace);
printf("请输入第%d 个学生的院系:\n", i+1);
scanf("%s", stu[insertstart].XiBie);
printf("请输入第%d 个学生的专业:\n", i+1);
scanf("%s", stu[insertstart].ZhuanYe);
printf("请输入第%d 个学生的班级:\n", i+1);
scanf("%d", &stu[insertstart].BanJi);
printf("请输入第%d 个学生的学籍:\n",i+1);
scanf("%s",stu[insertstart].xueji);
i++;
insertstart++;
} while (i < m);
}
NOW += m;//学生现有人数增加
printf("学生信息增加完毕!!!\n");
printf("请即使保存数据到文件!!!\n");
system("pause");
}
需要【完整源码(C或C++)】的私聊 看主页有QQ640180534.私聊csdn的话可能很久才会回复。
注意:
- 本程序使用CodeBlocks完成,其他的集成开发环境未做过测试
- 本程序可以直接复制粘贴使用,前提是需要在与该 学生学籍管理系统.c (C语言的.c文件)路径系统的文件下创建一个名为 student.txt 的文本文档
总结回顾:
- 使用到了简单的条件判断,循环语句等
- 使用到了结构体数组
- 使用到了文件的读写操作
- 使用到了模块化函数的编程思想
还需记忆练习:
- fscanf函数返回值是int型
- system(pause)可以让程序稍微暂停,等待用户的操作
- 字符数组的操作
- 结构体数组的赋值直接是将前面的每一个元素替换成后面的元素,比如上面程序的删除操作
- 字符串的操作,比如strcmp函数用来比较字符串是否相等,strcpy函数用来复制字符串
- 注意字符数组定义完成之后数组名就是一个地址
- 文件操作时要注意相对路径和绝对路径
- 学会使用flag变量的思想