加一个删除学籍信息模块,谢谢了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
struct student//声明一个结构体类型
{
char name[60];//姓名
char ID[7];//学号
char xinbie[10];//性别
char
nianling[5];//年龄
char jiguan[10];//籍贯
char xibie[10];//系别
char zhuanye[10];//专业
char banji[10];//班级
};
int dq(struct student st[]);//声明函数
void xianshi();//显示菜单功能函数的声明
void bc(struct student st[]);//保存功能函数的声明
void add(); //添加信息功能函数的声明
void select();//查看信息功能函数声明
void zz();//作者介绍功能函数声明
void chazhao();//查找菜单功能函数声明
void xhcz();//根据学号查找信息功能函数声明
void xmcz();//根据姓名查找信息功能函数声明
void xg();//修改菜单功能函数声明
void xhxg();//根据学号修改信息功能函数声明
void xmxg();//根据姓名修改信息功能函数声明
void bca();//提示已保存功能函数声明
void fh();//提示返回菜单功能函数声明
struct student st[300];
int Number=0;
void main()//主函数 用于调用各个功能函数
{
int choose=0;
FILE *fp=NULL;//打开输入文件
char yesorno;
if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c",&yesorno);
if(yesorno=='y'||yesorno=='Y')
{
fp=fopen("C://student.dat","wb");//为读写建立一个新的二进制文件
fclose(fp);//关闭fp
}
else
exit(0);
}
else
{
Number=dq(st);
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====>请选择:");
scanf("%d",&choose);
system("cls");
switch(choose)//用switch 实现功能函数的调用
{
case 0: exit(0);fh();break;
case 1: add();fh();break;
case 2: select();fh();break;
case 3: chazhao();fh();break;
case 4: xg();fh();break;
case 5:zz();fh();break;
case 6:bca();break;
default:break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca()//功能函数 用来实现提示 已保存
{
printf("\t=====程序在运行时已自动保存.....\n");
}
void fh()//功能函数 用来实现 提示 按enter 键返回主菜单
{
printf("\t===>按Enter键返回主菜单\n");
}
void xg() //功能函数 用来实现调出 修改菜单
{
int way=0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d",&way);
switch(way)//用SWITCH通过调用功能函数来实现菜单的功能
{
case 1: xmxg();break;
case 2: xhxg();break;
default: printf("输入有误,结束!\n");break;
}
}
void xmxg() //功能函数 用来实现通过姓名修改信息
{
FILE *fp=NULL;//打开输入文件
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生姓名:");
scanf("%s",name);
getchar();
for (i=0;i<Number;i++)//通过循环结构找出 与名字对应的i(位置)
{
if (strcmp(name,st[i].name))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t学号\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].xinbie,st[changeIndex].nianling,st[changeIndex].jiguan,st[changeIndex].xinbie,st[changeIndex].zhuanye,st[changeIndex].banji);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
getchar();
printf("学号:");
scanf("%s",st[changeIndex].ID);
getchar();
printf("性别:");
scanf("%s",&st[changeIndex].xinbie);
getchar();
printf("年龄:");
scanf("%s",&st[changeIndex].nianling);
getchar();
printf("籍贯:");
scanf("%s",&st[changeIndex].jiguan);
getchar();
printf("系别:");
scanf("%s",&st[changeIndex].xibie);
getchar();
printf("专业:");
scanf("%s",&st[changeIndex].zhuanye);
getchar();
printf("班级:");
scanf("%s",&st[changeIndex].banji);
getchar();
fp=fopen("C://student.dat","wb");//保存
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()//原理同上
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生学号:");
scanf("%s",id);
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t学号\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].xinbie,st[changeIndex].nianling,st[changeIndex].jiguan,st[changeIndex].xinbie,st[changeIndex].zhuanye,st[changeIndex].banji);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
getchar();
printf("学号:");
scanf("%s",st[changeIndex].ID);
getchar();
printf("性别:");
scanf("%s",&st[changeIndex].xinbie);
getchar();
printf("年龄:");
scanf("%s",&st[changeIndex].nianling);
getchar();
printf("籍贯:");
scanf("%s",&st[changeIndex].jiguan);
getchar();
printf("系别:");
scanf("%s",&st[changeIndex].xibie);
getchar();
printf("专业:");
scanf("%s",&st[changeIndex].zhuanye);
getchar();
printf("班级:");
scanf("%s",&st[changeIndex].banji);
getchar();
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======>修改成功\n");
}
void chazhao()//功能函数 用来实现 调出查找菜单
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d",&n);
switch(n)//通过switch调用功能函数来实现菜单的功能
{
case 1: xmcz();break;
case 2: xhcz();break;
default: printf("输入有误,结束!\n");
break;
}
}
void xhcz() //功能函数 实现通过学号查找学生信息的功能
{
char id[7];
int i=0;
printf("请输入要查找学生学号:");
scanf("%s",id);
system("cls");
printf("\t姓名\t学号\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
for(i=0;i<Number;i++)//通过循环语句找出信息
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",st[i].name,st[i].ID,st[i].xinbie,st[i].nianling,st[i].jiguan,st[i].xinbie,st[i].zhuanye,st[i].banji);
}
}
}
void xmcz()//原理同上
{
char name[7];
int i=0;
printf("请输入要查找学生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t学号\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",st[i].name,st[i].ID,st[i].xinbie,st[i].nianling,st[i].jiguan,st[i].xinbie,st[i].zhuanye,st[i].banji);
}
}
}
void zz()//功能函数
用于输出作者信息
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^
《学生学籍管理系统》
^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^
1
^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^
2
^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^
123
^^^^^^^^^^\n\n");
printf("\t**********************************************************\n\n");
}
void select()//功能函数 用于实现输出学生信息
{
int i=0;
printf("以下是全部学生的信息\n");
printf("\t姓名\t学号\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
for(i=0;i<Number;i++)//通过FOR循环 输出
{
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n",st[i].name,st[i].ID,st[i].xinbie,st[i].nianling,st[i].jiguan,st[i].xinbie,st[i].zhuanye,st[i].banji);
}
}
void add()//功能函数 用于实现添加学生信息
{
int numberTemp=0;
int i=0;
struct student temp;
printf("请输入要增加学生学籍个数:");
scanf("%d",&numberTemp);
for(i=0;i<numberTemp;i++)//通过FOR循环 依次将学生信息输入
{
printf("输入第%d个同学信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("学号:");
scanf("%s",temp.ID);
printf("性别:");
scanf("%s",temp.xinbie);
printf("年龄:");
scanf("%s",temp.nianling);
printf("籍贯:");
scanf("%s",temp.jiguan);
printf("系别:");
scanf("%s",temp.xibie);
printf("专业:");
scanf("%s",temp.zhuanye);
printf("班级:");
scanf("%s",temp.banji);
while(getchar() != '\n');
st[Number++]=temp;
bc(&temp);//保存
}
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;//打开输入文件
fp=fopen("C://student.dat","ab+");//将文件保存到指定位置
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);//关闭fp
}
int dq(struct student st[])
{
FILE *fp=NULL;//打开输入文件
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(&st[i],sizeof(struct student),1,fp))//当存入数据后将i自加 (新的存储位置)
i++;
fclose(fp);//关闭fp
return i;
}
void xianshi()//功能函数 用来实现 菜单主菜单效果
{
printf("\t*****************************************************************\n");
printf("\t*
*\n");
printf("\t*
*学生学籍管理系统*
*\n");
printf("\t*
*\n");
printf("\t*
[1] 添加学籍信息
[2] 统计学籍信息
*\n");
printf("\t*
[3] 查找学籍信息
[4] 修改学籍信息
*\n");
printf("\t*
[5] 关于作者
[6] 保存数据
*\n");
printf("\t*
[0] 退出系统
*\n");
printf("\t*****************************************************************\n");
加一个删除学籍信息模块,谢谢了
}
[
本帖最后由 龙牙 于 2013-7-3 12:30 编辑 ]