资源简介
C语言课程设计,学生学籍管理系统,存入、修改、插入函数带有查重函数,可自动检查文件是否为空,带有密码登陆和修改密码功能
代码片段和文件信息
/* 学生信息管理系统
学生学籍管理系统
1、输入学生信息 当输入数据为0时停止输入
2、存入、修改、插入函数带有查重函数
3、可自动检查文件是否为空
4、带有密码登陆和修改密码功能
5、第一次打开时且文件内容为空时需存入数据再操作,否则可能会出错。
*/
#include
#include
#include
#include
struct date
{
char sno[15];
char name[14];
char sex[5];
int age;
char native[20];
char dept[20];
char major[20];
char clas[10];
};
typedef struct student
{
struct date d;
struct student * next;
}N;
void menu1();// 单函数
void menu2();//管理员菜单
void menu3(); //普通用户菜单函数
void file_save();//保存文件
void file_read();//读取文件
void creat_list();//创建链表
void insert_date();//添加数据
void delete_date();//删除数据
void treavese_list();//输出链表
void sort();//按学号排序
void modification(N * p1);//修改信息
void input(struct date * q);//输入数据
void output(struct date * q);//输出数据
int find(char n[]);//查找学生
int find2(char n[]);//查重
int enter();//登陆函数
N * Head * Pnew;//定义一个头指针与循环指针
int main()
{
system(“color fc“);
file_read();
menu1();
return 0;
}
void file_read()
{
FILE * fp;
if(NULL == (fp = fopen(“s_status.txt““rb“)))
{
fopen(“s_status.txt““wb“);
}
int a;
a = ftell(fp);
fseek(fp02);
if(a != ftell(fp))
{
//insert_date();
printf(“文件不为空\n“);
rewind(fp);
}
else
{
printf(“文件为空!请存入\n“);
rewind(fp);
}
Head = (N *)malloc(sizeof(N));
if(NULL == Head)
{
printf(“内存分配失败!!!“);
exit(-1);
}
Pnew = (N *)malloc(sizeof(N));
Head->next = Pnew;
struct date * q;//定义一个内层结构体指针,用来存放文件中的数据
q = &Pnew->d;
N * p1;//循环指针
p1 = Pnew;
while(fread(qsizeof(struct date)1fp))
{
p1 = Pnew;
Pnew = (N *)malloc(sizeof(N));
p1->next = Pnew;
q = &Pnew->d;
}
p1->next = NULL;
free(Pnew);//最后一个空间没有存放数据 ,释放掉。
}
void creat_list()
{
N * tail;
Head = tail = (N *)malloc(sizeof(N));
if(NULL == Head)
{
printf(“内存分配失败!!!“);
exit(-1);
}
int i = 0;//在第一次循环时不需要查重
while(1)
{
i++;
N * Pnew = (N *)malloc(sizeof(N));
printf(“\n“);
input(&Pnew->d);
if(i != 1 && 1 == (find2(Pnew->d.sno)))
{
printf(“此学号已存在!\n“);
continue;
}
if(Pnew->d.age == 0)
{
free(Pnew);
break;
}
tail->next = Pnew;
Pnew->next = NULL;
tail = Pnew;
}
}
void insert_date()
{
char n[20];
N * p1;// 循环指针
printf(“添加在哪个学号的后面:“);
scanf(“%s“n);
p1 = Head->next;
if(NULL == p1)
{
printf(“文件为空,请存入\n“);
return;
}
while(p1 != NULL)
{
if(strcmp(np1->d.sno) == 0)
{
Pnew = (N *)malloc(sizeof(N));
printf(“添加学生信息为:\n“);
input(&Pnew->d);
if(find2(Pnew->d.sno) == 1)
{
printf(“此学号已存在!\n“);
printf(“\n1、继续添加“);
printf(“\n2、返回菜
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 112 2016-11-21 16:55 s_status.txt
文件 0 2016-11-08 21:54 密码
文件 12352 2016-01-01 20:43 学生学籍管理系统.c
文件 141068 2016-11-21 16:56 学生学籍管理系统.exe
- 上一篇:c/c++解决迷宫问题
- 下一篇:408计算机综合教材书籍
相关资源
- canny边缘检测的c语言实现
- 五子棋小游戏选择棋盘、棋子;双方
- 数据结构题集(C语言版) 第二版 高
- c语言程序设计(第二版)谭浩强(完
- 《c语言入门经典(第5版)》.((美
- c语言写的编译器
- C语言范例开发大全(文字版).pdf
- 21天学通C语言第7版
- 数据结构迷宫算法源码+实验报告
- C语言版STL
- 词法分析C++程序
- C语言程序设计第二版-苏小红
- 51单片机轻松入门 C语言版 基于STC
- C/C++黑马13期全套
- 基于C语言的ArcGISENGINE开发基础与技巧
- C语言课程设计——教室管理系统
- 明解C语言入门与中级篇.rar
- C语言程序设计第3版,何钦铭,颜晖主
- 歌听歌曲管理系统
- 数字图像处理各种算法 C语言实现
- C++课程设计教务管理系统.zip
- c语言函数快速入门
- c语言课程设计学生信息管理系统含登
- c语言利用RDMA 实现客户端和服务器端
- 浮点数c语言除法模拟源码
- 编译原理 C语言实现词法分析
- 基于C语言的模拟KTV系统
- 数据结构与算法C语言描述原书第二版
- 蓝牙C语言程序
- 编译原理C语言实现词法分析程序带容
评论
共有 条评论