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

本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下

#include"stdio.h"    //标准的输入输出函数文件头部说明
#include"math.h"       // 数学函数头部说明
#include"string.h"
#include"stdlib.h"  //通过该函数头部里的函数,改变控制台的背景和颜色
#include"windows.h"  //头文件声明,下文用到了改变控制台的宽度和高度
#define M 100      //宏定义说明
struct student{  //结构体定义并声明
 char name[25];   //姓名
 char num[25];   //学号
 char credit[20];  //身份证号
 char native[35];  //籍贯
 char tel[25];   //手机号
 int special;   //专业
 int banji;   //班级
 int math,yy,wl,cyy,pe;  //数学、英语、物理、C语言、体育
 double ave;};   //平均分
//****************************************函数的声明********************************************
void input(struct student stu[M]);   //输入函数
void output(struct student stu[M]);   //各类用户自定义函数的声明
void lookfor(struct student stu[M]);  //查询函数
void modify(struct student stu[M]);   //修改函数
void order(struct student stu[M]);   //排序函数
void delete_student(struct student stu[M]);  //删除函数
void xuehao(struct student stu[M]);
void xingming(struct student stu[M]);
void fileread(struct student stu[M]);
void filewrite(struct student stu[M]);
void yanshi(char *p);    //延时函数说明
//**********************************************************************************************
int count=0;
struct student t;
int main()
{
  int choice,sum;
  struct student stu[M];
  system("mode con:cols=400 lines=30000");    //调节控制台的宽度和高度
   system("color 0b");   //调节控制台的背景和字体颜色
point1:
  sum=0;
  yanshi("\t\t\t\t\t\t\t\t\3\3\3\3\3\3\3\3\3\3\3\3\3欢迎你使用学生信息管理系统\3\3\3\3\3\3\3\3\3\3\n");
  do {
  printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");
  printf("\t\t\t\t\t\t\t\t+    学生信息管理系统      +\n");
  printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");
  printf("\t\t\t\t\t\t\t\t\t\t ***************\n");
  printf("\t\t\t\t\t\t\t\t\t\t 1、添加学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 2、浏览学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 3、查询学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 4、修改学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 5、删除学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 6、排列学生信息\n");
  printf("\t\t\t\t\t\t\t\t\t\t 7、读取文件学生\n");         //从文件读取
  printf("\t\t\t\t\t\t\t\t\t\t 8、保存到文件\n");          //保存到文件
  printf("\t\t\t\t\t\t\t\t\t\t 9、退出系统\n");
  printf("\t\t\t\t\t\t\t\t\t\t ***************\n");
  printf("请输入你的选择\n");
  scanf("%d",&choice);
  fflush(stdin);    //清除输入缓冲区
  if (choice>9||choice<=0)
  {
  sum++;
  if (sum>=5)
  {
  printf("输入错误次数过多,程序将重新开始\n");
  system("pause");    //程序暂停
  system("cls");  //清屏语句
  goto point1;
  }
  }
  switch (choice)    //根据选择,调用不同的函数来完成不同的任务
  {
  case 1:input(stu);break;
  case 2:output(stu);break;
  case 3:lookfor(stu);break;
  case 4:modify(stu);break;
  case 5:delete_student(stu);break;
  case 6:order(stu);break;
  case 7:fileread(stu);break;
  case 8:filewrite(stu);;break;
  case 9:printf("感谢你使用学生信息管理系统,请关掉程序!!!\n");system("pause");break;
  default:printf("无效的选择!!!请重新输入!!!\n");break;
  }
  }while (choice!=9);
  printf("the program is over!!!\n");
   return 0;
}
void input(struct student stu[M])   //自定义输入函数
{
  int len,size;
  system("cls");
  printf("请添加要输入学生的信息\n");
  do {
  printf("请输入由11位数字组成的学生学号\n");  //do-while循环应用,提示输入位数为一确定数
  scanf("%s",&stu[count].num);
  len=strlen(stu[count].num);
  }while(len!=11);
  printf("请输入同学的姓名\n");
  scanf("%s",stu[count].name);
  do {
  printf("请输入由18位数字组成的学生身份证号\n");  //同上
  scanf("%s",&stu[count].credit);
  size=strlen(stu[count].credit);
  }while(size!=18);
  printf("请输入学生的籍贯\n");
  scanf("%s",&stu[count].native);
  printf("请输入学生的手机号码\n");
  scanf("%s",&stu[count].tel);
  printf("请输入所需要的专业代号:1、计算机科学 2、通信工程 3、网络工程\n"); //采用如此方法解决了专业输入难问题
  scanf("%d",&stu[count].special);
  printf("请输入对应的学生班级号码:1、1301 2、1302 \n");
  scanf("%d",&stu[count].banji);
  do {
  printf("请依次输入不大于100的学生各科成绩\n");
  scanf("%d%d%d%d%d",&stu[count].math,&stu[count].yy,&stu[count].wl,&stu[count].cyy,&stu[count].pe);
  }while(stu[count].math>100||stu[count].yy>100||stu[count].wl>100||stu[count].cyy>100||stu[count].pe>100);  //同上同上
  stu[count].ave=(stu[count].math+stu[count].yy+stu[count].wl+stu[count].cyy+stu[count].pe)/5.0;    //求出平均值
  count++;
}
void output(struct student stu[M])   //自定义输出函数
{
  int j;
  system("cls");
  if (count==0)
  {
  printf("当前已存学生信息为0个\n");
  return;
  }
  for (j=0;j<count;j++)
  {
  printf("学号\t\t 姓名\t\t身份证号\t籍贯\t手机号\t\t专业\t\t班级\t数学\t英语\t物理\tC语言\t体育\t平均分\n");
  for (j=0;j<count;j++){    //for循环控制输出的个数
  printf("%s\t",stu[j].num);
  printf("%s\t",stu[j].name);
  printf("%s\t",stu[j].credit);
  printf("%s\t",stu[j].native);
  printf("%s\t",stu[j].tel);
  if (stu[j].special==1)
  printf("计算机科学\t");
  else if (stu[j].special==2)
  printf("通信工程\t");
  else
  printf("网络工程\t");
  printf("%d\t",stu[j].banji);
  printf("%d\t",stu[j].math);
  printf("%d\t",stu[j].yy);
  printf("%d\t",stu[j].wl);
  printf("%d\t",stu[j].cyy);
  printf("%d\t",stu[j].pe);
  printf("%.1lf\t\n",stu[j].ave);}
  }
}
void lookfor(struct student stu[M])          //自定义查询学生信息函数
{
  int j,flag=0;
  char xh[25];
  system("cls");
  if (count==0)
  {
  printf("当前已存学生信息为0个,无法查询!!!\n");
  return;
  }
  else
  {
  printf("请输入你想要查看的同学学号\n");
  scanf("%s",&xh);
  fflush(stdin);
  for (j=0;j<count;j++)
  {
  if (strcmp(stu[j].num,xh)==0)    //通过字符函数对已存入的学生信息进行比较,找出要查看的学生
  {
  printf("学号\t\t姓名\t\t身份证号\t籍贯\t手机号\t\t专业\t\t班级\t数学\t英语\t物理\tC语言\t体育\t平均分\n");
  printf("%s\t",stu[j].num);
  printf("%s\t",stu[j].name);
  printf("%s\t",stu[j].credit);
  printf("%s\t",stu[j].native);
  printf("%s\t",stu[j].tel);
  if (stu[j].special==1)
  printf("计算机科学\t");
  else if (stu[j].special==2)
  printf("通信工程\t");
  else
  printf("网络工程\t");
  printf("%d\t",stu[j].banji);   //考虑一个对齐的因数
  printf("%d\t",stu[j].math);
  printf("%d\t",stu[j].yy);
  printf("%d\t",stu[j].wl);
  printf("%d\t",stu[j].cyy);
  printf("%d\t",stu[j].pe);
  printf("%.1lf\t",stu[j].ave);
  }
  }
  if (j==count)
  printf("很抱歉,没有你所需要的学生信息\n");
  }
}
void modify(struct student stu[M])  //自定义修改函数
{
  int j,flag=0,course;
  char xh[25];
  system("cls");
  if (count==0)
  {
  printf("当前已存学生信息为0个,无法修改!!!\n");
  return;
  }
  else
  {
  printf("请输入你想要修改的同学学号\n");
  scanf("%s",&xh);
  fflush(stdin);
  for (j=0;j<count;j++)
  if (strcmp(stu[j].num,xh)==0)    //同上
  {
  printf("你确定要修改学生的信息吗???如果不确定的话,请关掉本程序吧!!!\n");
  printf("选择课程: 1、数学 2、英语 3、物理 4、C语言 5、体育\n");
  scanf("%d",&course);
  printf("请输入你想要修改后的学生成绩\n");
  switch(course)
  {
  case 1:scanf("%d",&stu[j].math);break;
  case 2:scanf("%d",&stu[j].yy);break;    //switch控制语句
  case 3:scanf("%d",&stu[j].wl);break;
  case 4:scanf("%d",&stu[j].cyy);break;
  case 5:scanf("%d",&stu[j].pe);break;
  default:printf("无效的选择!!!请重新输入!!!\n");break;
  }
  }
  }
}
void delete_student(struct student stu[M])    //自定义删除函数
{
  int choice;
  system("cls");
  if (count==0)
  {
  printf("当前已存学生信息为0个,无法删除!!!\n");
  return;
  }
  else
  {
  printf("请选择你所要删除的方式:1、学号 2、姓名(如果你的姓名是中文,那么无法删除,请选择学号删除) 3、取消\n");
  scanf("%d",&choice);
  switch(choice)      //switch语句对用户要删除的方式进行选择
  {
  case 3:return;break;
  case 2:xingming(stu);break;     //用户自定义函数之间的套用
  case 1:xuehao(stu);break;
  default:printf("无效的选择!!!请重新输入!!!\n");break;
  }
  }
}
void order(struct student stu[M])    //排序函数的定义
{
  int j,k,choice,index;
  system("cls");
  printf("请输入你想要进行排序的方式(所有排序的方式均是降序)!!!\n");
  printf("1、数学 2、英语 3、物理 4、C语言 5、体育 6、平均分\n");
  scanf("%d",&choice);
  switch (choice)
  {
  case 1:for (j=0;j<count;j++)
  { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].math>stu[index].math)
  {t=stu[k];stu[k]=stu[index];stu[index]=t;}
   };break;
  case 2:for (j=0;j<count;j++)
   { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].yy>stu[index].yy)
  {stu[k]=stu[index];}                //整个为排序部分,采用了所谓的选择排序的方法
   };break;
  case 3:for (j=0;j<count;j++)
   { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].wl>stu[index].wl)
  {t=stu[k];stu[k]=stu[index];stu[index]=t;}
   };break;
  case 4:for (j=0;j<count;j++)
   { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].cyy>stu[index].cyy)
  {t=stu[k];stu[k]=stu[index];stu[index]=t;}
   };break;
  case 5:for (j=0;j<count;j++)
   { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].pe>stu[index].pe)
  {t=stu[k];stu[k]=stu[index];stu[index]=t;}
   };break;
  case 6:for (j=0;j<count;j++)
   { index=j;
  for (k=j+1;k<count;k++)
  if (stu[k].ave>stu[index].ave)
  {t=stu[k];stu[k]=stu[index];stu[index]=t;}  //强制类型转换符号只能用于有操作数,根据赋值运算中的类型转换问题可知
   };break;
  default:printf("无效的选择!!!请重新输入!!!\n");break;
  }
}
void xuehao(struct student stu[M])      //自定义通过学号方式删除学生信息函数
{
  int j,index=0,k=count;
  char xh[25];
  system("cls");
  printf("请输入你想要删除的同学学号\n");
  scanf("%s",xh);
  fflush(stdin);
  for (j=0;j<count;j++)
  { if (strcmp(stu[j].num,xh)==0)
  {
  for (j=index;j<count;j++)
  stu[j]=stu[j+1];
  count--;
  if (count<k)
  printf("你已经删除成功\n");
  }
  index++;}
  if (j==count)
  printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n");
}
void xingming(struct student stu[M])      //自定义通过姓名方式删除学生信息函数
{
  int flag=0,j,k=count;
  char xm[25];
  system("cls");
  printf("请输入你想要删除的同学姓名\n");
  scanf("%s",xm);
  fflush(stdin);
  for (j=0;j<count;j++)
  {
  if (strcmp(stu[j].num,xm)==0)
  { 

  for (j=flag-1;j<count;j++)
  stu[j]=stu[j+1];
  count--;
  if (count<k)
  printf("你已经删除成功\n");
  }
  flag++;}
  if (j==count)
  printf("抱歉!!!没有你所需要删除的学生信息!*_*!\n");
}
void yanshi(char *p)       //延时函数的定义
{
  while (1)
  {
  if (*p!=0)
  printf("%c",*p++);
  else
  break;
  Sleep(100);        //延时控制间断语句
  }
}
void filewrite(struct student stu[M])          //写入文件函数定义
{
  int j=0;
  char c;
  FILE *fp;
  printf("请选择是否要存入已输入的学生信息:'y'还是'n'???\n");
  scanf("%c",&c);
  fflush(stdin);
  while(c!='y'&&c!='n'){
  if (c!='y'&&c!='n')
  printf("输入错误,请重新输入\n");
  printf("以下操作将会覆盖已存储的数据,确定请输入'y'或'n'???\n");
  scanf("%c",&c);
  fflush(stdin);
  }
  if (c=='y')
  {
  if((fp=fopen("d:\\stu.dat","wb"))==NULL)
  {
    printf("文件打开错误,程序无法进行\n");
    exit(0);
  }
  for(j=0;j<count;j++)
   {fwrite(&stu[j],sizeof(struct student),1,fp);
  }
  fclose(fp);
  if(count==0)
    printf("没有文件,无法保存\n");
  else
  printf("数据存储完毕\n");
  system("pause");
  }
  else
    return;
}
void fileread(struct student stu[M])          //读取文件信息函数定义
{
  int j=0;
  char c;
  FILE *fp;
  system("cls");
  printf("请选择是否要存入已输入的学生信息:'y'还是'n'???\n");
  scanf("%c",&c);
  fflush(stdin);
  while(c!='y'&&c!='n'){
  if (c!='y'&&c!='n')
  printf("输入错误,请重新输入\n");
  printf("以下操作将会覆盖已存储的数据,确定请输入'y'或'n'???\n");
  scanf("%c",&c);
  fflush(stdin);
  }
  if (c=='y')
  {
  if((fp=fopen("d:\\stu.dat","rb"))==NULL)
  {
    printf("文件打开错误,程序无法进行\n");
    exit(0);
  }
  fread(&stu[j],sizeof(struct student),1,fp);
  count=0;
  count++;
  j++;
  while(fread(&stu[j],sizeof(struct student),1,fp))
  {
    j++;
    count++;
  }
  fclose(fp);
  printf("数据读取完毕!!!\n");
  system("pause");
  }
  else
  return;
}

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

您可能感兴趣的文章:

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

相关推荐

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

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

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

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

  • 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语言版

    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语言数组实现学生信息管理系统设计

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

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

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

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

    本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下 /* 运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") ) (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功

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

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

  • 基于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语言实现通讯管理系统设计

    本文实例为大家分享了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

随机推荐