C语言课程设计(学生信息管理系统)

学生信息管理系统

一、系统功能概述

1.1总体功能设计:

学生信息管理系统存放了每个学生的学号、姓名、年龄、性别、语文成绩、数学成绩、英语成绩、地址和总成绩的数据库。每个同学的信息定义在一个结构体变量中。
系统总体结构图如图所示:
在这里插入图片描述
系统结构如下:
系统通过输入模块、更新模块、查询模块、输出模块来实现对学生信息系统的显示功能、查询功能、修改功能、删除功能、统计功能、排序功能、保存功能。各个功能的调用通过主函数中的switch语句来实现。

1.2各模块功能:

1.2.1 输入模块:

输入模块主要完成将数据存入数组中的工作。在学生信息管理系统中,记录可以从以二进制文件形式存储的数据文件读入,也可以从键盘逐个输入。当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。

1.2.2 查询模块:

查询模块主要完成在数组中查找满足相关条件的记录。在学生信息管理系统中,用户可以按照学生学号或学生姓名进行查询。若找到记录,则以表格形式显示出此记录的信息;否则,打印出未找到该条记录的相关提示信息。

1.2.3 更新模块:

更新模块主要完成记录的维护工作。在学生信息管理系统中,实现对学生信息的修改、删除、统计、排序和保存操作。一般而言,系统在执行出统计以外的操作后,需要将修改后的数据存入数据源,统计会随着记录的更新而自动更新。

1.2.4 输出模块:

输出模块主要完成两个任务:第一是实现记录的存盘操作,即将数组各元素中存储的记录信息写入数据文件;第二是将数组中存储的记录信息以表格的形式在屏幕上显示出来。

二、函数功能描述

(1)Add()函数
函数原型:
int Add(int n)
用于向Stu数组中增加学生信息记录。n是已有记录数,作为新增加元素的起始下标。
(2)TotalSocer()函数
函数原型:
int TotalSocer(int chinese,int math,int english)
用于计算学生的总成绩。Chinese是学生的语文成绩,math是学生的数学成绩,english是学生的英语成绩。
(3)Del()函数
函数原型:
int Del(int n)
用于对学生信息的删除操作。n是已有记录数。
(4)ExitSystem()函数
函数原型:
void ExitSystem(int n)
用于退出系统操作。N是已有的记录数,退出时如果要保存记录,则作为保存的记录数。
(5)Locate ()函数
函数原型:
int Locate(int num,int n)
用于按学生学号查询学生信息。Num存放要查询的学生学号,n是查询学生记录数。
(6)Menu ()函数
函数原型:
void Menu()
用于显示系统主菜单。
(7)Modify ()函数
函数原型:
void Modify(int n)
用于修改学生信息。
(8)OpenFile ()函数
函数原型:
int OpenFile(int n)
用于打开数据文件的操作。N用于记录学生信息的记录数。
(9)Query ()函数
函数原型:
void Query(int n)
用于按学生学号或学生姓名查询记录。
(10)SaveFile ()函数
函数原型:
void SaveFile(int n)
用于保存数组中的n条记录数。
(11)Show ()函数
函数原型:
void Show(int n)
用于显示数组中n条记录的操作。
(12)Sort ()函数
函数原型:
void Sort(int n)
用于对数组中的n条记录排序的操作。
(13)Total ()函数
函数原型:
void Total(int n)
用于对数组中n条记录汇总操作。

三、程序源代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define Header printf("学号  姓名  年龄  性别  语文成绩  数学成绩 英语成绩  地址 ")
#define Print printf("\n%-7d%-7s%-7d%-7s%-7d%-10d%-10d%-7s%",Stu[p].Num,Stu[p].Name,Stu[p].Age,Stu[p].Sex,Stu[p].Chinese,Stu[p].Math,Stu[p].English,Stu[p].Address)
struct Student
{
   
	int Num;//学生学号
	char Name[20];//学生姓名
	int Age;//学生年龄
	char Sex[5];//学生性别
	int Chinese;//语文成绩 
	int Math;//数学成绩 
	int English;//英语成绩 
	char Address[50];//学生地址
	int Total;//学生总成绩 
}Stu[N];
int saveflag=0;//标记数据是否保存到文件中,此时状态表示已保存 
//显示主菜单 
void Menu()
{
   
	printf("\t---------------------学生信息管理系统---------------------\n");
	printf("\t|       1 添加学生信息               2 显示学生信息      |\n");
	printf("\t|       3 查询学生信息               4 学生信息排序      |\n");
	printf("\t|       5 修改学生信息               6 删除学生信息      |\n");
	printf("\t|       7 统计学生信息               8 保存学生信息      |\n");
	printf("\t------------------------0 退出系统------------------------\n");
}
//打开文件,读学生信息,返回记录的条数(学生的人数) 
int OpenFile(int n)
{
   
	FILE *fp;
	int i=0;
	fp=fopen("D:\\c语言程序\\c语言课程设计\\Student.dat","ab+");//以追加方式打开二进制文件
	if(fp==NULL)
	{
   
		printf("can not open file!");
		exit(0);	
	} 
	while(!feof(fp))
	{
   
		if(fread(&Stu[i],sizeof(struct Student),1,fp)==1)//判断是否读取成功,返回值为1,则读取一条记录 
		{
   
			n++;
			i++;
		}
	}
	fclose(fp);
	return n;
}
//计算学生总成绩
int TotalSocer(int chinese,int math,int english)
{
   
	int z;
	z=chinese+math+english;
	return z;
} 
//显示学生信息 
void Show(int n)
{
   
	int i,p;
	if(n!=0)
	{
   
		Header;//输出标题行
		for(i=0;i<n;i++)
		{
   
			p=i;
			Print;	
		} 
    } 	
} 
//添加学生信息
int Add(int n)
{
   
	int i,j,tempnum,record,choice;
	record=n;//记录当前的信息条数
	printf("开始添加学生信息...\n");
	for(i=n;i<N;i++)//i=n表示输入的教师信息下标从当前记录开始
	{
   
		printf("学生学号:")
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值