• 大小: 48KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-06-11
  • 语言: C/C++
  • 标签: c语言  课程设计  

资源简介

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

评论

共有 条评论