**
**
分为7大功能:增、删、查、改、预览、存储、导出
代码都加有注释,利于不懂的,理解
添加功能
//添加学生
void input ()
{
int i;
int j,ge;
DaoChu();
printf("你要存储几个学生的信息:");
scanf("%d",&ge);
for(i=count;i
删除功能如下:
void move ()
{
int i,f;
int j,n;
char move[10];
struct data *p=NULL;//定义
int k=0;
DaoChu();
system("CLS");
printf("删除全部输入all、单个one:\n");
scanf("%s",move);
if(strcmp(move,"all")==0)
{
for (f=0;f
查找功能
/// 查找学生,按学号查找
void find()
{
int xuehao;
int i,k=0;
DaoChu();
if (count==0)
{
printf("没有任何数据\n");
return;
}
printf("请输入你要查找学生的学号:");
scanf("%d",&xuehao);
printf("学号\t姓名\t 手机号 \t英语\t数学\t语文\t总分\n");
printf("---------------------------------------------------------\n");
for(i=0;i
修改功能
//修改函数
/* 工作原理
这个函数是先把数据导出,然后再判断输入的学号是否一样,找到一样的就修改
然后再储存进去!
*/
void revise()
{
int m=0;
int xuehao,xx,j,i;
FILE *fp;
int f=0;
DaoChu();//调用导出数据函数
printf("请输入你要修改的学号:");
scanf("%d",&xuehao);
for(xx=0;xx
浏览功能
void list_all()
{
int j;
DaoChu();
system("CLS");
printf(" 学号 姓名 手机号 英语 数学 语文 总分 \n");
printf("------------------------------------------------------------\n");
for(j=0;j
导入本地
//存到文件
void CunChu()
{
int i;
FILE *rs;//定义一个文件指针rs
if((rs=fopen("student.txt","w"))==NULL)//如果指定文件不存在则无法打开,就新建
{
printf("not open");
exit(0);//退出
}
for(i=0;i
导出文件
void DaoChu()
{
struct data t;//定义一个结构体类型 t
int i=0;
FILE* fp = fopen("student.txt", "r");//fp指针指向所打开的文件
count=0;
if(fp==NULL)//如果打开的文件不存在就执行以下
{
perror("读取文件打开失败!\n");
return;
}
memset(data,0x0,sizeof(data));//它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)
while(1)//能打开文件就执行以下读取数据
{
fread(&t,sizeof(t),1,fp);//如果有文件的话,就依此读取文件&t表示首地址 t表示数据块长度
if(ferror(fp))//如果出错就读取失败ferror
{
fclose(fp);
perror("读文件过程失败!\n");
return;
}
if(feof(fp))//这判断如果到达文件尾部就应该停止
{
break;
}
data[i]=t;//把t的数据赋给i
i++;//然后i以下加上
}
fclose(fp);//读取完后关闭文件流,否则会造成句柄泄露
count=i;//然后把i的个数赋给全局变量
printf("导出文件成功!\n");
}
菜单
//菜单功能
void mune()
{
char cmdline[128];
while(1)
{
printf("\n\n\t\t\t欢迎来到我的学生管理系统!\n");
printf("\t\t\t\t添加:add \n\t\t\t\t查找:find \n\t\t\t\t删除:move \n\t\t\t\t浏览:list\n\t\t\t\t修改:revise\n\t\t\t\t存储:input \n\t\t\t\t导出:output \n\t\t\t\t退出:exit \n");
printf ("请输入你的指令:");
scanf("%s",cmdline);
//菜单处理
if (strcmp(cmdline,"revise")==0)
{
revise();
continue;
}
//菜单处理
if (strcmp(cmdline,"exit")==0)
{
printf("退出系统\n");
break;
}
//菜单处理
if (strcmp(cmdline,"add")==0)
{
input();
continue;
}
//菜单处理
if (strcmp(cmdline,"find")==0)
{
find();
continue;
}
//菜单处理
if (strcmp(cmdline,"move")==0)
{
move();
continue;
}
//菜单处理
if (strcmp(cmdline,"list")==0)
{
list_all();
continue;
}
//菜单处理
if (strcmp(cmdline,"input")==0)
{
CunChu();
continue;
}
if (strcmp(cmdline,"output")==0)
{
DaoChu();
continue;
}
printf("输入指令有误,请重新输入!\n");
}
}
int main ()
{
mune();//直接调用菜单函数
return 0;
}
项目源码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#define N 1000
/*学生信息管理系统
/*定义一个学生信息类的结构体
*/
typedef struct data
{
unsigned int id;
char name[16];
char phone[16];
int score[4];// 这表示成绩 语数英 和总分
}STUDENT;
STUDENT data [N];//数据源;录入的信息先存到这里
int count =0;//记录个数;
void CunChu();//声明 后面调用
void DaoChu();
//添加学生
void input ()
{
int i;
int j,ge;
DaoChu();
printf("你要存储几个学生的信息:");
scanf("%d",&ge);
for(i=count;i
作者水平有限:码bug挺多的~欢迎大家参照修改!
c语言作业,伸手党福利
如下侵权请联系作者!
qq:2116365116 非诚勿扰