资讯专栏INFORMATION COLUMN

尝试用数组写一个学生信息管理系统

wangshijun / 3013人阅读

摘要:这只是我尝试做的一个简单的程序,顺便复习下语言,希望以后的自己能更加努力,努力跟随大佬们的脚步。

这只是我尝试做的一个简单的程序,顺便复习下C语言,希望以后的自己能更加努力,努力跟随大佬们的脚步。

C语言学生信息管理系统包括以下功能:

1.添加学生信息

2.查询学生信息

3.修改学生信息

4.学生学号排序

5.删除学生信息

6.浏览学生信息

每个模块的实现:

结构体的创建

实现首先要有个结构体包含学生的相关信息(学号 姓名 年龄 性别 身份证号 电话)

struct Student{	int Id;           //学号	char name[15];    //姓名	int age;          //年龄	char sex[3];      //性别	char IDcard[50];  //身份证号	char phone[15];   //电话}student[N];

同时定义了两个全局的变量

int Last = 0;//结构体数组下标struct Student studentName;//创建结构体临时变量

一.首先写一个主菜单:

void makeMenu()//构建主菜单视图{	printf("-------------------------------/n");	printf("    -----------学生信息管理系统/n");	printf("-------------------------------/n");	printf("/t0.退出系统/n");	printf("-------------------------------/n");	printf("/t1.添加学生信息/n");	printf("-------------------------------/n");	printf("/t2.查询学生信息/n");	printf("-------------------------------/n");	printf("/t3.修改学生信息/n");	printf("-------------------------------/n");	printf("/t4.学生学号排序/n");	printf("-------------------------------/n");	printf("/t5.删除学生信息/n");	printf("-------------------------------/n");	printf("/t6.浏览学生信息/n");	printf("-------------------------------/n");	printf("-------------------------------/n");	printf("请输入主菜单编号(0~6):");}

二.添加学生信息操作

void Registration(int last)//添加学生信息{	printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:/n");	scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);	Last++;}

三.查询学生信息

void searchByName(int last,char* studentName)//按姓名查询{	int i;	for (i = 0; i < last; i++)	{		if (strcmp(student[i].name, studentName) == 0)		{			printf("学号           姓名       年龄      性别               身份证号                         电话/n");//输出该学生信息			printf("%d      %s      %d         %s            %s                %s/n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);			break;		}	}	if (i == last)	{		printf("没有找到该学生的信息/n");	}	else	{		printf("查询成功/n");	}}void searchById(int last, int studentID)   //按学号查询{	int i;	for (i = 0; i < last; i++)	{		if (student[i].Id==studentID)		{			printf("学号           姓名       年龄      性别               身份证号                         电话/n");//输出该学生信息			printf("%d      %s      %d         %s            %s                %s/n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);			break;		}	}	if (i == last)	{		printf("没有找到该学生的信息/n");	}	else	{		printf("查询成功/n");	}}void searchinformate()//查询信息{	printf("--------------------/n");	printf("1.按姓名查询/n");	printf("2.按学号查询/n");	printf("3.退出/n");	printf("--------------------/n");	int Userkey;	while (1)	{		printf("请输入子菜单编号(1~3):");		scanf("%d", &Userkey);		switch (Userkey)		{		case 1:			printf("请输入要查询的学生姓名:");			scanf("%s", studentName.name);			searchByName(Last, studentName.name);			break;		case 2:			printf("请输入要查询的学生学号:");			scanf("%d", &studentName.Id);			searchById(Last, studentName.Id);			break;		case 3:			return;		default:printf("请输入1~3:/n");			break;		}	}}

四.修改学生信息

void makesonMenu()//构建修改子菜单视图{	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("-------------------------------/n");}void amend(int last,int studentID)//修改学生信息{	int i;	for (i = 0; i < last; i++)	{		if (student[i].Id == studentID)			break;	}	int Userkey;	while (1)	{		if (i == last)		{			printf("没有找到该学生的信息/n");			break;		}		else		{			printf("请继续修改相关信息:/n");		}		printf("请输入子菜单编号(1~7):");		scanf("%d", &Userkey);		switch (Userkey)		{		case 1:			printf("修改学号为:");			scanf("%d", &student[i].Id);			break;		case 2:			printf("修改姓名为:");			scanf("%s", student[i].name);			break;		case 3:			printf("修改年龄为:");			scanf("%d", &student[i].age);			break;		case 4:			printf("修改性别为:");			scanf("%s", student[i].sex);			break;		case 5:			printf("修改身份证号为:");			scanf("%s", student[i].IDcard);			break;		case 6:			printf("修改电话为:");			scanf("%s", student[i].phone);			break;		case 7:			return;		default:printf("请输入1~7:/n");			break;		}	}}

五.学生学号排序

void bubbleSort(int last)//按学号进行冒泡排序{	int temp = 0;	for (int i = 1; i < last; i++)	{		for (int j = 0; j < last-i; j++)		{			if (student[j].Id > student[j + 1].Id)			{				temp = student[j].Id;				student[j].Id = student[j + 1].Id;				student[j + 1].Id = temp;			}		}	}	printf("排序完成/n");}

六.删除学生信息

void deleteNodeByName(int last, char* studentName) //指定删除{	int i = 0;	for (i = 0; i < last; i++)	{		if (strcmp(student[i].name, studentName) == 0)			break;	}	for (int j = i; j < last; j++)	{		student[j] = student[j + 1];	}	Last = Last - 1;	printf("删除完成/n");}

七.浏览学生信息

void print(int last)//输出学生信息{	printf("学号           姓名       年龄      性别               身份证号                         电话/n");	for(int i=0;i

  

整个程序代码

#define _CRT_SECURE_NO_WARNINGS#include#include#include#define N 200  //最大学生人数int Last = 0;//结构体数组下标//20224213 刘圣友 18 男 360428200110202735 13657024700struct Student{	int Id;           //学号	char name[15];    //姓名	int age;          //年龄	char sex[3];      //性别	char IDcard[50];  //身份证号	char phone[15];   //电话}student[N];struct Student studentName;//创建临时变量void makeMenu()//构建主菜单视图{	printf("-------------------------------/n");	printf("    -----------学生信息管理系统/n");	printf("-------------------------------/n");	printf("/t0.退出系统/n");	printf("-------------------------------/n");	printf("/t1.添加学生信息/n");	printf("-------------------------------/n");	printf("/t2.查询学生信息/n");	printf("-------------------------------/n");	printf("/t3.修改学生信息/n");	printf("-------------------------------/n");	printf("/t4.学生学号排序/n");	printf("-------------------------------/n");	printf("/t5.删除学生信息/n");	printf("-------------------------------/n");	printf("/t6.浏览学生信息/n");	printf("-------------------------------/n");	printf("-------------------------------/n");	printf("请输入主菜单编号(0~6):");}void makesonMenu()//构建修改子菜单视图{	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("-------------------------------/n");}void Registration(int last)//添加学生信息{	printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:/n");	scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);	Last++;}void print(int last)//输出学生信息{	printf("学号           姓名       年龄      性别               身份证号                         电话/n");	for(int i=0;i student[j + 1].Id)			{				temp = student[j].Id;				student[j].Id = student[j + 1].Id;				student[j + 1].Id = temp;			}		}	}	printf("排序完成/n");}void deleteNodeByName(int last, char* studentName) //指定删除{	int i = 0;	for (i = 0; i < last; i++)	{		if (strcmp(student[i].name, studentName) == 0)			break;	}	for (int j = i; j < last; j++)	{		student[j] = student[j + 1];	}	Last = Last - 1;	printf("删除完成/n");}void searchinformate()//查询信息{	printf("--------------------/n");	printf("1.按姓名查询/n");	printf("2.按学号查询/n");	printf("3.退出/n");	printf("--------------------/n");	int Userkey;	while (1)	{		printf("请输入子菜单编号(1~3):");		scanf("%d", &Userkey);		switch (Userkey)		{		case 1:			printf("请输入要查询的学生姓名:");			scanf("%s", studentName.name);			searchByName(Last, studentName.name);			break;		case 2:			printf("请输入要查询的学生学号:");			scanf("%d", &studentName.Id);			searchById(Last, studentName.Id);			break;		case 3:			return;		default:printf("请输入1~3:/n");			break;		}	}}void amend(int last,int studentID)//修改学生信息{	int i;	for (i = 0; i < last; i++)	{		if (student[i].Id == studentID)			break;	}	int Userkey;	while (1)	{		if (i == last)		{			printf("没有找到该学生的信息/n");			break;		}		else		{			printf("请继续修改相关信息:/n");		}		printf("请输入子菜单编号(1~7):");		scanf("%d", &Userkey);		switch (Userkey)		{		case 1:			printf("修改学号为:");			scanf("%d", &student[i].Id);			break;		case 2:			printf("修改姓名为:");			scanf("%s", student[i].name);			break;		case 3:			printf("修改年龄为:");			scanf("%d", &student[i].age);			break;		case 4:			printf("修改性别为:");			scanf("%s", student[i].sex);			break;		case 5:			printf("修改身份证号为:");			scanf("%s", student[i].IDcard);			break;		case 6:			printf("修改电话为:");			scanf("%s", student[i].phone);			break;		case 7:			return;		default:printf("请输入1~7:/n");			break;		}	}}void newskeyDown()//做交互{	int userkey;	scanf("%d", &userkey);	switch (userkey)	{	case 0:		printf("【 退出 】/n");		printf("退出成功/n");		system("pause");		exit(0);          //关闭掉整个程序		break;	case 1:		printf("【 添加 】/n");		Registration(Last);		//saveInfoToFile("bookinfo.txt");		break;	case 2:		printf("【 查询 】/n");		searchinformate();		break;	case 3:		printf("【 修改 】/n");		printf("请输入要修改的学生学号:");		scanf("%d", &studentName.Id);	    system("cls");//清屏		makesonMenu();//构建修改子菜单视图		amend(Last, studentName.Id);		break;	case 4:		printf("【 排序 】/n");		bubbleSort(Last);		break;	case 5:		printf("【 删除 】/n");		printf("请输入要删除的学生姓名:");		scanf("%s", studentName.name);		deleteNodeByName(Last, studentName.name);		break;	case 6:		printf("【 浏览 】/n");		print(Last);		break;	default:		printf("【 error 】/n");		break;	}}int main(){	while (1)	{		makeMenu();		newskeyDown();		system("pause");		system("cls");//清屏	}	system("pause");	return 0;}

运行结果展示

 总结

这代码写的不是很好,只能用数组去写,而且就现在也就只能写得出这些,期待以后的自己,

希望能成为自己想成为的人!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119298.html

相关文章

  • 【C语言趣味教程】typedef 真爽不爽不要玩 | 初识结构体

    摘要:因为结构体支持所有数据类型,所以结构体内部也可以有数组存在。考虑到每次都是用语法来产生变量的方法未免过于繁琐,语言允许将结构体当作一个数据类型来方便我们更好地使用。结构体与当然,还可以作用于结构体。 前言: 本篇文章是一次大胆的尝试,我想试着改变我那枯燥不堪的文笔,试着能不能幽默风趣地讲...

    Yangyang 评论0 收藏0
  • 【硬核】C语言来学生成绩管理系统,让你的课设不再是难题

    摘要:嗨这里是狐狸大家的期末课设要来了吧,有想法做什么了嘛,有没有为此熬夜,有没有为此努力呢,今天,我们来写一个学生成绩管理系统,一方面是让大家复习一下自己学过的知识,一方面是为了给大家的期末课设提供一点思路。 目录 序 嗨!这里是狐狸~~ 一、需求分析说明 二、概要设计说明 三、详细设计说明 1...

    seanHai 评论0 收藏0
  • 我是如何学习游戏引擎的?

    摘要:下面列举了游戏开发中常见的岗位以及两条常见的协作开发的流水线其实学习游戏引擎,前期对于任何岗位来说路线都是相似的,基本上就是一个熟悉基本操作理解基本概念拓展专业知识的过程。当然这不是绝对的,任何引擎的开始阶段和大成阶段都是相似的。 这是【游戏开发那些事】第51篇原创 前言:游戏引擎,表面...

    未东兴 评论0 收藏0
  • 大学学习路线规划建议贴

    摘要:不过,苹果实验室作为计算机学院的学习类组织,撰写此贴的内容集中于本科期间学习路线的宏观规划建议。其中主要问题大概是初入大学的迷茫与美好大学愿景之间的矛盾自主学习能力的欠缺与远大志向的矛盾。 ...

    niceforbear 评论0 收藏0
  • 2018 PHP面试真题(包括详细解析)

    摘要:以下题目和解析分别来源于我的新书程序员面试笔试宝典程序员面试笔试真题解析。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。真题获得实例化对象所属类名字的函数是。 以下题目和解析分别来源于我的新书《PHP程序员面试笔试宝典》、《PHP程序员面试笔试真题解析》。 1、PHP常考基础 1、PHP与ASP、JSP有什么区别?ASP全名Active Server Page...

    pubdreamcc 评论0 收藏0

发表评论

0条评论

wangshijun

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<