学生信息管理系统(结构化程序)(C语言)
一、实验目的
- 明确结构化程序设计的基本结构。
2.通过对问题的分析,设计合理的结构化程序解决问题
二、实验内容
对学生信息管理系统,要求完成以下基本任务:
1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
2.将功能补充完全(基于文件处理,完成刷新和保存功能)。
3.将学生信息改为更好的数据组织,而非离散形式(结构体)。
提高要求:
可将程序中的不足(如数据验证)等根据自己的能力与理解完成。
三、算法流程图
程序框架流程图:
主要算法流程图
四、主要代码
学生信息结构化:`
struct xinxi {
char code[LEN + 1]; /* 学号*/
char name[LEN + 1]; /* 姓名*/
int age; /* 年龄*/
char sex[LEN + 1]; /* 性别*/
float score[3]; /* 3门课程成绩*/
}stud[N];
源代码:
/*********************************************************************************
*FileName: Test1.cpp
*Author: Elf.苏洛曦
*e-mail: 617992304@qq.com
*Version: 1.0.0
*Date: 2019.2.26
*Description: 学生信息管理系统
*History:
1.Date: 2019.4.7
Author: Elf.苏洛曦
Modification: Create project
2.Date: 2019.4.9
Author: Qixiang.Su
Modification: Edit project
**********************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h> /*I/O函数*/
#include<stdlib.h> /*其它说明*/
#include<string.h> /*字符串函数*/
#define LEN 15 /* 学号和姓名最大字符数,实际请更改*/
#define N 50 /* 最大学生人数,实际请更改*/
//定义学生信息结构体
struct xinxi {
char code[LEN + 1]; /* 学号*/
char name[LEN + 1]; /* 姓名*/
int age; /* 年龄*/
char sex[LEN + 1]; /* 性别*/
float score[3]; /* 3门课程成绩*/
}stud[N];
int k = 1, n, m; //n为学生的总人数,m为新增学生数
void save(); //保存学生信息
void seek(); //查找
void modify(); //修改学生信息
void insert(); //插入学生信息
void del(); //删除学生信息
void display(); //显示当前的学生信息
void menu(); //主界面
void read(); //读取信息
int main() {
while (k) {
menu();
}
system("pause");
return 0;
}
void help() {
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.初次进入系统后,请先选择增加学生信息;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存;\n");
printf("\n4.谢谢您的使用!\n");
}
void read() {
char filename[LEN + 1];
FILE *p;
int i = 0;
printf("请输入已经存有学生信息的文件名:\n");
scanf("%s", filename);
if ((p = fopen(filename, "r")) == NULL) {
printf("error on open %s!", filename);
printf("先选择菜单4输入学生信息并保存\n");
system("pause");
return;
}
while (fscanf(p, "%s%s%d%s%f%f%f\n", stud[i].code, stud[i].name, &stud[i].age, stud[i].sex,
&stud[i].score[0], &stud[i].score[1], &stud[i].score[2]) == 7) {
i++;
}
n = i;
if (0 == i) {
printf("文件为空");
}
else {
printf("读入完成\n");
fclose(p);
system("pause");
}
}
void seek() {
int i, item, flag;
char s1[21]; /* 以姓名和学号最长长度+1为准*/
printf("------------------\n");
printf("-----1.按学号查询-----\n");