用C写的简单的学生成绩管理系统(含源码)(适用于短学期作业)

1.需求分析

我们团队本次选择的问题是学生信息管理系统设计
问题描述:学生的基本个人信息管理,其中个人信息应包含:姓名、性别、年龄、出生年月、家庭住址、班级、电话号码、宿舍号等
实现功能:
1、具有整张信息表的浏览功能
2、整表输出到文件功能
3.个人信息的二次修改功能
4、新人员的基本信息的添加功能
5、删除实际人员基本信息功能
6、查询功能等
知 识 点:数组,指针、结构体、文件操作
说 明:必须用到结构体和文件操作

1.软件开发目的:
该学生信息管理系统软件主要是利用C语言的文件操作能力设计开发一个小型的学生信息管理系统,应具有如下功能:具有整张信息表的浏览功能、整表输出到文件功能、个人信息的二次修改功能、新人员的基本信息的添加功能、删除实际人员基本信息功能、查询功能等操作。操作界面要符合用户的一般习惯。

  1. 功能需求:
    (1)学生基本信息的录入和保存:这部分的功能主要包括从文件输入所有学生的各类信息并进行保存,在录入数据的同时,系统将对信息的合法性进行检验(学号位数不限、姓名为位数0-50、年龄不限岁、性别可输入男或女、生日位数0-50、地址位数0-50、电话位数0-50、寝室号位数0-50),若用户录入了不合法的数据系统将会作出提示,并且要求重新输入。选择存盘后,系统则自动将学生信息存入电脑。
    (2)浏览学生信息表:这部分的功能主要是对输入的所有学生的信息进行浏览,并且展示在窗口屏幕上;
    (3)查找学生信息:这部分功能主要是利用对学号的查找或者对名字的查找来筛选出相对应的学生的所有信息并且展示在窗口屏幕上;
    (4)增添学生信息:这个部分功能主要是手动添加若干学生以及相对应的信息,并且保存在电脑;
    (5)删除学生信息:这个部分功能主要是手动对若干学生的信息进行删除操作,从电脑保存的文件中删除;
    (6)修改学生信息:这个部分的主要功能是通过查找选定某个学生,然后对该学生的信息进行修改;
    (7)整表输出到文件:这个部分的主要功能是将存入的学生信息以表的形式输出到一个文件并保存;
    (8)退出系统:结束所有任务,关闭应用程序。
    3.使用说明:该可执行程序需要与数据文件放在一起才可打开,打开后需要先选择输入信息这一选项,系统会自动将数据文件里面的信息导入到该可执行程序,然后就可以执行浏览学生信息表、查找学生信息、增添学生信息、删除学生信息、修改学生信息、整表输出到文件等操作了,然后在每一个操作执行界面都会有一个返回主菜单的选项,用户可以选择该选项来回到主菜单界面,该学生信息管理系统应用程序使用简单,操作简易,非常符合现在系统的操作简便易懂的特点。

2.总体设计



3.详细设计

  1. 学生信息管理系统初始化设计
    void LoadStudentInFromFile()

    2、删除学生信息操作设计
    void Delete();


3、修改学生信息操作设计
void Modify()

4、整表输出到文件(输出)操作设计
void ExportToFile()

4.调试与测试

1、初始化测试结果


2、删除学生信息测试结果


3、修改学生信息测试结果

4、输出学生信息测试结果

5.总结
拿到一个题目。进行题目分析,尽量分析出题目的领域。紧接着,尝试得到解题的算法。算法设计无论何时都是耗时且烧脑的。这一步先不要管太细节的边界问题。目的以得到一个大的解题思路为准。紧接着,编写程序。测试,边界测试,各种测试之后。考虑优化的问题。优化算法得出后,回归测试。
写代码时也要认真编写,不能遗漏一点细节,编写代码时要头脑清晰,知道每一行代码的目的以及接下来的应该做什么。不然只是按照自认为的随便写写,运行起来就会出很多小错误,回去debug的时候就非常麻烦,所以尽量做到第一次写就能成功运行。
如果实在有错误,也有一些小技巧可以找错,比如在代码中printf各个变量的实际值,就能知道程序实际是怎么运行的,如果变量不符合自己的要求,就在printf前端找错。这样相对简单一点

5.附源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{int id;char name[50];char Class[50];char sex[50];char birthday[50];char address[50];char phone[50];char dormitory[50];struct student *next;
}studentstudent *head = NULL;
int length;
void LoadStudentInFromFile()
{student *p,*w;int c;FILE* f;f = fopen("input.txt","r");if(f == NULL){return ;}fseek(f,0,SEEK_SET);p = (student *)malloc(sizeof(student));p->next = NULL;head = p;while(!feof(f)){c = fgetc(f);if(c != -1){fseek(f,-1,SEEK_CUR);}else{return ;}w = (student *)malloc(sizeof(student));fscanf(f,"%d",&w->id);fscanf(f,"%s",&w->name);fscanf(f,"%s",&w->Class);fscanf(f,"%s",&w->sex);fscanf(f,"%s",&w->birthday);fscanf(f,"%s",&w->address);fscanf(f,"%s",&w->phone);fscanf(f,"%s",&w->dormitory);w->next = NULL;p->next = w;p = p->next;length ++;}system("cls");printf("学生信息录入完成\n"); printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}void display()
{system("cls");student *p = head->next;printf("学生信息如下:\n");while(p != NULL){printf("%d%s%s%s%s%s%s%s",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);printf("\n");p = p->next;}printf("若要返回请输入0\n");int n;scanf("%d",&n); while(n=0)scanf("%d",&n);system("cls");
}
void Search()
{int num,x;char name[20];student *p = head->next;printf("请选择查询方式:\n");printf("1、按序号查询\t2、按姓名查询\n");scanf("%d",&x);if(x == 1){printf("请输入学生序号:");scanf("%d",&num);while(p != NULL){if(p->id == num){system("cls");printf("序号为%d的学生信息如下:\n",num);printf("%d %s %s %s %s %s %s %s\n",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);break ;}p = p->next;}if(p == NULL){system("cls");            printf("没有该学生的信息,查找失败!\n");}}else if(x == 2){printf("请输入学生姓名:");getchar();gets(name);p = head->next;while(p != NULL){if(strcmp(p->name,name) == 0){system("cls");printf("学生姓名为%s的学生信息如下:\n",name);printf("%d %s %s %s %s %s %s %s \n",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);break;}p = p->next;}if(p == NULL){system("cls");printf("没有该学生的信息,查找失败!!\n");}}printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}void Insert()
{int num,i;student *p,*q;p = head;printf("请输入要插入信息的位置:");scanf("%d",&num);if(num > length){printf("该位置超出表格容量上限,无法插入\n");}else{printf("请输入要插入的学生的信息:序号 姓名 班级 性别 生日 地址 电话 宿舍号\n");q = (student *)malloc(sizeof(student));scanf("%d %s %s %s %s %s %s %s",&q->id,&q->name,&q->Class,&q->sex,&q->birthday,&q->address,&q->phone,&q->dormitory);while(p != NULL){if((p->id == q->id)||(p->name == q->name)||(p->Class == q->Class)||(p->sex == q->sex)||(p->birthday == q->birthday)||(p->address == q->address)||(p->phone == q->phone)||(p->dormitory == q->dormitory)){printf("该学生信息已经存在或输入信息有误,无法插入!\n");break ;}p = p->next;}p = head;for(i=0; i<num; ++i){p = p->next;}q->next = p->next;p->next = q;length ++;system("cls");printf("插入成功!\n");}printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}void Delete()
{int num;student *p,*q;q = head;p = head->next;printf("请输入要删除的学生的序号:");scanf("%d",&num);while(p != NULL){if(p->id == num){q->next = p->next;free(p);length --;system("cls");printf("删除成功!\n");break ;}p = p->next;q = q->next;}if(p == NULL){system("cls"); printf("该序号不存在!\n");}printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}void Modify()
{student *p = head->next;int num;printf("请输入要修改的学生的序号:");scanf("%d",&num);while(p != NULL){if(p->id == num){printf("修改前,序号为%d的学生信息如下:\n",num);printf("%d %s %s %s %s %s %s %s\n",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);printf("请输入学生的新电话:\n");getchar();gets(p->phone);printf("请输入学生的新地址:\n");gets(p->address);printf("请输入学生的新宿舍号:\n");gets(p->dormitory);printf("请输入学生的新班级:\n");gets(p->Class);system("cls");printf("信息修改完成\n");printf("修改后,学号为%d的学生信息如下:\n",num);printf("%d %s %s %s %s %s %s %s \n",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);break ;}p = p->next;}if(p == NULL){printf("该序号不存在!\n");return ;}printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}void menu()
{printf("*---------------学生信息管理系统------------------*\n");printf("*-------------------------------------------------*\n");printf("*           1、学生信息的录入和保存               *\n");printf("*           2、浏览学生信息表                     *\n");printf("*           3、查找学生信息                       *\n");printf("*           4、增添学生信息                       *\n");printf("*           5、删除学生信息                       *\n");printf("*           6、修改学生信息                       *\n");printf("*           7、整表输出到文件                     *\n");printf("*           8、退出系统                           *\n");printf("*-------------------------------------------------*\n");return ;
}void ExportToFile(){FILE * fp;student *p = head->next;fp = fopen("output.txt","w+");while(p != NULL){fprintf(fp,"%d %s %s %s %s %s %s %s\n",p->id,p->name,p->Class,p->sex,p->birthday,p->address,p->phone,p->dormitory);p = p->next;}fclose(fp);system("cls");printf("信息已输出为文件\n");printf("返回请输入0\n");int n;scanf("%d",&n); while(n!=0)scanf("%d",&n);system("cls");
}int main(void)
{int a;system("color F3");while(1){   menu();         printf("请输入相应的功能:");scanf("%d",&a);switch(a){case 1:LoadStudentInFromFile();break;case 2:if(head){system("cls");display();}else{system("cls");printf("学生数据为空,请先录入数据!\n");}break;case 3:if(head){Search();}else{system("cls");printf("学生数据为空,请先录入数据!\n");}break;case 4:if(head){Insert();}else{system("cls");printf("学生数据为空,请先录入数据!\n");}break;case 5:if(head){Delete();}else{system("cls");                printf("学生数据为空,请先录入数据!\n");}break;case 6:if(head){Modify();}else{system("cls");printf("学生数据为空,请先录入数据!\n");}break;case 7:if(head){ExportToFile();}break; case 8:return 0;default:break;}}system("pause");return 0;
}

学生信息管理系统C语言相关推荐

  1. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

  2. 用c语言录入3组学生数据编程,学生信息管理系统C语言编程

    学生信息管理系统C语言编程 [问题描述] 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理.该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各 ...

  3. 学生信息管理系统(C语言版本+源码)

    学生信息管理系统(C语言版本) 有需要的可以自行下载 链接:https://download.csdn.net/download/qq_52889967/14955434 源码在后面 java+数据库 ...

  4. c语言学生信息管理ppt,学生信息管理系统(C语言、含代码解释).ppt

    学生信息管理系统(C语言.含代码解释) 第3章 脂类代谢 脂类的分布与生理功能 脂类的消化与吸收 血脂 甘油三酯的中间代谢 类脂代谢 脂类代谢紊乱 3.1 脂类的分布和生理功能 3.1.1 脂类的分布 ...

  5. 显示学生信息的C语言,学生信息管理系统C语言.doc

    学生信息管理系统C语言 学生信息管理系统 摘要 由于学校规模进一步扩大,学生人数逐年上升,学生信息的管理也变得越来越复杂,切实有效的把学生信息管理系统引入学校教务管理中,对于促进学校管理制度和提高学校 ...

  6. 学生信息管理系统(C++语言版)

    学生信息管理系统(C语言版) #include "stdio.h" #include "bios.h" #include "conio.h" ...

  7. 快递信息管理系统源代码c++_学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生 ...

  8. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

  9. 学生信息管理系统c 语言程序设计报告,C语言程序设计报告(学生信息管理系统)[1].txt...

    C语言程序设计报告(学生信息管理系统)[1].txt C CCCC * * * * * * * * * * * * * * * * .3 3 .4 1. .4 2. 4 3. 4 4. .5 飺 .5 ...

最新文章

  1. 互联网技术的技术名词
  2. 虚拟串口最大传输速率_【干货】详解RS232、RS485、RS422、串口amp;amp;握手
  3. mysql存储过程获取sqlstate message_text
  4. 日常生活小技巧 -- UltraEdit复制16进制数据
  5. CodeForces - 1330E Drazil Likes Heap(贪心)
  6. 关系型数据库和NOSQL的对比
  7. 优先队列c++ STL用法
  8. epoll_create, epoll_ctl和epoll_wait select函数分析
  9. Common Macros for Build Commands and Properties
  10. 万以内的字符串整数变成汉子字符串
  11. 百度糯米android面试题,【百度百度糯米队列百度编程基础数据安全面试题】面试问题:编程:使用C实… - 看准网...
  12. ASP.NET开发学习视频教程大全(共800集)
  13. 全国30省市分地区能源结构(煤炭占比)2003-2019年
  14. 易语言dd驱动模拟按键模块_DD驱动 虚拟键盘 虚拟鼠标
  15. mysql 修改max_allowed_packet_Mysql修改max_allowed_packet参数
  16. 安卓9.0设置以太网静态IP地址
  17. windows文件服务器高可用,通过 Windows Server 2012 构建高可用性的文件服务器
  18. UGUI之菜单动画效果制作思路
  19. 网易云动态小视频下载方法
  20. go 语言之“查找一个字符串中汉字个数”

热门文章

  1. vi/vim/gvim编辑器使用心得
  2. 防沉迷系统?游戏运营商笑了!
  3. 基于单片机的温湿度监测系统设计(程序)
  4. IMP遇到IMP-00009错误
  5. 【开源】我和 JAP(JA Plus) 的故事
  6. leetcode:BFS/DFS--腐烂的橘子
  7. Nao机器人运行B-human代码之开始篇 2
  8. 火到服务器瘫痪了,这款小游戏太火爆了,合成大西瓜
  9. 三星S5终于降临 4月上市开卖的新机盘点
  10. 如何吸引全球级「AI大咖」,BAT等大佬怎么说?