用C写的简单的学生成绩管理系统(含源码)(适用于短学期作业)
1.需求分析
我们团队本次选择的问题是学生信息管理系统设计
问题描述:学生的基本个人信息管理,其中个人信息应包含:姓名、性别、年龄、出生年月、家庭住址、班级、电话号码、宿舍号等
实现功能:
1、具有整张信息表的浏览功能
2、整表输出到文件功能
3.个人信息的二次修改功能
4、新人员的基本信息的添加功能
5、删除实际人员基本信息功能
6、查询功能等
知 识 点:数组,指针、结构体、文件操作
说 明:必须用到结构体和文件操作
1.软件开发目的:
该学生信息管理系统软件主要是利用C语言的文件操作能力设计开发一个小型的学生信息管理系统,应具有如下功能:具有整张信息表的浏览功能、整表输出到文件功能、个人信息的二次修改功能、新人员的基本信息的添加功能、删除实际人员基本信息功能、查询功能等操作。操作界面要符合用户的一般习惯。
- 功能需求:
(1)学生基本信息的录入和保存:这部分的功能主要包括从文件输入所有学生的各类信息并进行保存,在录入数据的同时,系统将对信息的合法性进行检验(学号位数不限、姓名为位数0-50、年龄不限岁、性别可输入男或女、生日位数0-50、地址位数0-50、电话位数0-50、寝室号位数0-50),若用户录入了不合法的数据系统将会作出提示,并且要求重新输入。选择存盘后,系统则自动将学生信息存入电脑。
(2)浏览学生信息表:这部分的功能主要是对输入的所有学生的信息进行浏览,并且展示在窗口屏幕上;
(3)查找学生信息:这部分功能主要是利用对学号的查找或者对名字的查找来筛选出相对应的学生的所有信息并且展示在窗口屏幕上;
(4)增添学生信息:这个部分功能主要是手动添加若干学生以及相对应的信息,并且保存在电脑;
(5)删除学生信息:这个部分功能主要是手动对若干学生的信息进行删除操作,从电脑保存的文件中删除;
(6)修改学生信息:这个部分的主要功能是通过查找选定某个学生,然后对该学生的信息进行修改;
(7)整表输出到文件:这个部分的主要功能是将存入的学生信息以表的形式输出到一个文件并保存;
(8)退出系统:结束所有任务,关闭应用程序。
3.使用说明:该可执行程序需要与数据文件放在一起才可打开,打开后需要先选择输入信息这一选项,系统会自动将数据文件里面的信息导入到该可执行程序,然后就可以执行浏览学生信息表、查找学生信息、增添学生信息、删除学生信息、修改学生信息、整表输出到文件等操作了,然后在每一个操作执行界面都会有一个返回主菜单的选项,用户可以选择该选项来回到主菜单界面,该学生信息管理系统应用程序使用简单,操作简易,非常符合现在系统的操作简便易懂的特点。
2.总体设计
3.详细设计
- 学生信息管理系统初始化设计
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;
}student
student *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 =