C语言学生信息管理系统小项目

本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下

/*
运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") )

(1)问题描述
  学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
  1.系统以菜单方式工作
  2.学生信息录入功能(学生信息用文件保存)---输入
  3.学生信息浏览功能——输出
  4.查询、排序功能——算法
    1、按学号查询
    2、按姓名查询
  5.学生信息的删除与修改(可选项)
(2)功能要求
  1.界面简单明了;
  2.有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;
  3.最好用链表的方式实现
*/

/*
界面:
-------------学生信息管理系统---------------
  1. 学生信息录入
  2. 学生信息浏览
  3. 学生信息查询
    1.按学号查询
    2.按姓名查询
  4. 学生信息的删除与修改
--------------------------------------------
*/

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

struct student_info {
  int s_no;
  char name[20];
  int age;
  char sex[10];
  int birth;
  char addr[30];
  char tele[30];
  char email[30];
  struct student_info *next;
};

void menue(void);
int info_input(void);
int info_review(void);
int info_search(void);

int main(void)
{
  menue();

  return 0;
}

void menue(void)
{
  int choose;

  system("clear");

  printf("-------------学生信息管理系统---------------\n");
  printf("\t\t1. 学生信息录入\n");
  printf("\t\t2. 学生信息浏览\n");
  printf("\t\t3. 学生信息查询\n");
  printf("\t\t4. 学生信息的删除与修改\n");
  printf("\t\t0. 退出系统\n");
  printf("--------------------------------------------\n");

  printf("请输入您的选择(0~~4): ");
  scanf("%d", &choose);

  switch (choose) {
    case 0:
      exit(0);
      break;
    case 1:
      info_input();
      break;
    case 2:
      info_review();
      break;
    case 3:
      info_search();
      break;
  }

  while (choose > 4 || choose < 1) {
    printf("您输入了一个无效的选择,请重新输入(0-4): ");
    scanf("%d", &choose);
  }

}

/*
  ssize_t read(int fd, void *buf, size_t count);
  ssize_t write(int fd, const void *buf, size_t count);
  int open(const char *pathname, int flags, mode_t mode);

  FILE *fopen(const char *path, const char *mode);
  size_t fwrite(const void *ptr, size_t size, size_t nmemb,
       FILE *stream);
*/

int creat_list(void)
{
  return 0;
}

// 1. 学生信息录入
int info_input(void)
{
  struct student_info *head = NULL, *rear = NULL;
  FILE *fp;
  int flag = 1;

  head = (struct student_info *)malloc(sizeof(struct student_info));
  rear = head;

  while (flag) {
    struct student_info *stu = NULL;

    stu = (struct student_info *)malloc(sizeof(struct student_info));

    // FILE *fopen(const char *path, const char *mode);
    fp = fopen("stuinfo.txt", "a+b");
    fseek(fp, sizeof(struct student_info), 2);

    system("clear");
    printf("-----请依次输入学生的信息-----\n");

    printf("学号: ");
    scanf("%d", &stu->s_no);

    printf("姓名: ");
    scanf("%s", stu->name);

    printf("年龄: ");
    scanf("%d", &stu->age);

    printf("性别: ");
    scanf("%s", stu->sex);

    printf("出生年月: ");
    scanf("%d", &stu->birth);

    printf("地址: ");
    scanf("%s", stu->addr);

    printf("电话: ");
    scanf("%s", stu->tele);

    printf("E-mail: ");
    scanf("%s", stu->email);

    fwrite(stu, sizeof(struct student_info), 1, fp);

    rear->next = stu;
    rear = stu;

    fclose(fp);

    printf("继续输入请按1,返回上一级菜单请按2,退出请按0: ");
    scanf("%d", &flag);

    if (flag == 0) {
      exit(0);
    }

    if (flag == 1) {
      continue;
    }

    if (flag == 2) {
      menue();
      break;
    }
  }

  rear->next = NULL;

  return 0;
}

// 2. 学生信息浏览
// size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int info_review(void)
{
  struct student_info stu;

  int ret = 1;
  int flag = 0;

  FILE *fp = fopen("stuinfo.txt", "rb");
  //int fd = open("stuinfo.txt", O_RDONLY);

  if (fp == NULL) {
    perror("fopen");
    exit(0);
  }

  while (ret != 0) {  /*返回值为1时表示读取的字节数不足sizeof(struct student_info), 返回0表示读取成功*/
    /* */
    ret = fread(&stu, sizeof(struct student_info), 1, fp);
    //read(fd, stdout, sizeof(struct student_info));

    printf("------------------------------------------------------------------------------------------------------\n");
    printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n", stu.s_no, stu.name, stu.age, stu.sex, stu.birth, stu.addr, stu.tele, stu.email);
  }

  fclose(fp);
  printf("=====================^-^=====================  ====================^-^==================\n");

  printf("退出请按0, 返回上一级菜单请按1: ");
  scanf("%d", &flag);

  if (flag == 0) {
    exit(0);
  }

  if (flag == 1) {
    menue();
    exit(0);
  }

  return 0;
}

// 学生信息查询

int info_search(void)
{
  system("clear");

  struct student_info *stu1 = NULL, *stu2 = NULL;
  stu1 = (struct student_info *)malloc(sizeof(struct student_info));
  stu2 = (struct student_info *)malloc(sizeof(struct student_info));

  int ret = 1, i = 0, flag = 1;

  FILE *fp = fopen("stuinfo.txt", "rb");

  printf("=====按姓名查询请输入1, 按学号查询请输入2=====\n");
  scanf("%d", &i);

  while (flag) {
    if (i == 1) {
      printf("请输入学生的姓名: ");
      scanf("%s", stu1->name);

      do {
        if (ret == 0) {
          printf("没有这个人哦^*^\n");
          exit(0);
        }
        ret = fread(stu2, sizeof(struct student_info), 1, fp);
      } while (strcmp(stu1->name, stu2->name));

      printf("您要找的人信息如下: \n");
      printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n", stu2->s_no, stu2->name, stu2->age, stu2->sex, stu2->birth, stu2->addr, stu2->tele, stu2->email);
    }

    if (i == 2) {
      printf("请输入学生的学号: ");
      scanf("%d", stu1->s_no);

      do {
        if (ret == 0) {
          printf("没有这个人哦^*^\n");
          exit(0);
        }
        ret = fread(stu2, sizeof(struct student_info), 1, fp);
      } while (stu2->s_no != stu1->s_no);

      printf("您要找的人信息如下: \n");
      printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n", stu2->s_no, stu2->name, stu2->age, stu2->sex, stu2->birth, stu2->addr, stu2->tele, stu2->email);
    }

    printf("=====继续查询请按1,返回上一级菜单请按2=====\n");
    scanf("%d", &flag);

    if (flag == 1)
      continue;
    if (flag == 2) {
      menue();
      break;
    }
  }
  return 0;

}

// 学生信息删除

int info_delete(void)
{

}

// 学生信息修改
int info_alter(void)
{

}

还有部分功能未完成,下次再写吧(写的有点烦-_-)
程序截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • C语言单链表版学生信息管理系统
  • C语言实现学生信息管理系统(单链表)
  • C语言数组实现学生信息管理系统设计
  • C语言版学生成绩管理系统
  • C语言学生信息管理系统设计与实现
  • 基于C语言实现学生成绩管理系统
  • C语言实现通讯管理系统设计
  • C语言实现简单学生成绩管理系统
  • C语言利用结构体数组实现学生成绩管理系统
  • 学生信息管理系统C语言版
(0)

相关推荐

  • C语言学生信息管理系统设计与实现

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 #include"stdio.h" //标准的输入输出函数文件头部说明 #include"math.h" // 数学函数头部说明 #include"string.h" #include"stdlib.h" //通过该函数头部里的函数,改变控制台的背景和颜色 #include"windows.h" //头文件声明,下文用到了改变控

  • C语言实现通讯管理系统设计

    本文实例为大家分享了C语言实现通讯管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct{ char num[5]; char name[9]; char sex[9]; char phone[13]; char addr[31]; }DataType; typedef struct node{ DataType data; struct

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • 基于C语言实现学生成绩管理系统

    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 这里只贴代码,具体介绍省略. #include <stdio.h> #include <io.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MAX 200 struct student { char no[10]; // 学号 char name[50]; // 姓名 f

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • 学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生信息的查询 9.密码修改函数 10.学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #inc

  • C语言版学生成绩管理系统

    本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tm

  • C语言数组实现学生信息管理系统设计

    概述 单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标. 运行结果如下: 输入数据: 打印数据: 根据学号对信息进行排序: 根据总成绩对信息进行排序: 根据学号删除某一信息: 代码如下: #include <stdio.h> #include <stdlib.h> //exit函数头文件 #include <string.h> //字符串相关操作头文件 #define MAX_STU

  • C语言实现简单学生成绩管理系统

    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C语言小项目 实现一个学生成绩管理系统 系统功能: 1.实现所有学生成绩的录入(利用结构体数组),当输入字符为end时候,结束成绩的录入:  2.实现所有学生信息的输出  3.输入指定学生姓名,并能输出这名学生的信息  4.将学生成绩按照语文和数学成绩排序 思路: 1. 首先,先把这个小项目的框架打好.考虑要写几个文件,每一个文件里面实现怎样的功能.考虑到这个小项目的代码量以及程序的易读性,我决定将写三个文件.一

  • C语言单链表版学生信息管理系统

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 代码: //以单链表作为存储结构,设计和实现课程成绩管理的完整程序. //程序包括如下功能. //1.建立学生成绩表,包含学生的学号.姓名和成绩. //2.可以显示所有学生成绩. //3.可以计算学生的总数. //4.可以按学号和序号查找学生. //5.可以在指定位置插入学生成绩数据. //6.可以删除指定位置的学生数据. //7.可以把学生成绩按从高到低的顺序排序. //作者: yinlinqvan //操作系统:

随机推荐