实验名称 基于顺序表的学生信息管理系统
运行截图:
整合包下载:C语言——基于顺序表的学生信息管理系统(文件操作)-C/C++文档类资源-CSDN文库https://download.csdn.net/download/qq_22046265/68258122
源码:
#include<stdio.h>
//C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
//C 库函数 int fscanf(FILE *stream, const char *format, ...) 从流 stream 读取格式化输入。
//C 库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。
#include<windows.h>
// system("cls") 清屏
#include<conio.h>
// int getch(void) 从控制台读取一个字符,但不显示在屏幕上 返回值:读取的字符
#include<string.h>
//C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。
//C 库函数 strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
//C 库函数 strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
//C 库函数 strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
//C 库函数 strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
#define MAxSIZE 50
typedef struct student
{
char xuehao[9]; //学号
char name[7];//姓名
char id[7];//身份证
char yuanxi[10];//院系
char zhuanye[10];//专业
char banji[10];//班级
}st;
int zuse()//阻塞 使用清屏功能
{
system("pause");
system("cls");//清屏
return 0;
}
int Jg_Iput(st *jhead)//判断学号输入是否符合格式
{//Judgment input
st *p2;
int i=0;//判断输入符合格式的值 符合格式赋值0 不符合赋值1
p2=jhead;
do
{
if(strspn(p2->xuehao, "0123456789")!=8||strlen(p2->xuehao)!=8)//strspn()返回值:返回字符串str1 开头连续不含字符串"0123456789" 内的字符数目. strlen()返回值:字符串的长度
{//判断学号是否符合格式
printf("学号输入错误,请输入八位数字0~9\n");
scanf("%s",p2->xuehao);
}
else
{
i=1;//格式正确
}
}while(i==0);
return 0;
}
int fp()//遍历文本 返回值为文本内有效数据条数
{
int fnum=0;//计算条数
FILE *ffp;
char ch;//接收fgetc的返回值
if((ffp=fopen("xt.txt","r"))==NULL)
printf("!!!!!!!\n");
ch = fgetc(ffp);//读取文本内一个字符 返回该字符 如果到达文件末尾或发生读错误,则返回 EOF。
while(ch!=EOF)
{
if(ch=='\n')//每条数据末尾有一个'\n' 所以用 文本中'\n'的数 当做 有效数据的条数
fnum++;
ch=fgetc(ffp);
}
fclose(ffp);
return fnum+1;//最后一条数据末尾不是'\n',而是EOF 所以返回 fnum+1;
}
int menu(int i,int j)//主菜单
{
int keymenu = 0;
system("cls");
printf("****************************************\n");
printf("* 1,显示已有数据