(C语言)学生信息管理系统部分实现

主要功能

1.学生信息的创建

开始运行时,初始数据有两个方式可以创建:1)从一个数据文件读入。数据文件的格式由代码编写人员根据程序设计的内容提供;2)从键盘输入。输入数据的格式在运行界面中提供。

2.学生信息的排序

1)根据学生总分排序并显示学生的所有信息;2)根据提供的姓名排序并显示学生的所有信息;

3.学生信息的增加

    1)增加的数据可以从数据文件中读入;2)增加的数据可以从键盘输入;

4.学生信息的删除

    1)根据提供的学号查找并删除学生信息;2)找不到时给出提示;

5.学生信息的修改

    1)根据提供的学号查找并修改学生信息,可以只修改部分信息,由运行界面的交互信息来进行提示;2)找不到时给出提示;

6.学生信息的查找

1)根据提供的学号查找并显示该学生的所有信息;2)根据提供的姓名查找并显示该学生的所有信息;3)找不到时给出提示;


编译环境vs2008


头文件system.h

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>

#pragma once

struct data
  {  int  year;  //年
    int  month; //月
    int  day; //日
   }; 

struct  student
{  int snum;  //学号
   char name[20]; //姓名
   char sex;  //性别
   struct data birthday;  //出生日期
   int  score[5] ; //5门课程成绩
   };

typedef struct node
{  struct  student  data;
   struct node * next;
 }Node,*PNode;


//链表实现
//链表初始化
void SListInit(PNode *Head);
//申请节点
PNode BuySListNode(int snum, char* name, char sex, int year, int month, int day,int* score);
//创建学生信息(列表创建)
int CreateStudentMessageList(PNode* head, int n);
//增加学生信息
int AddStudentMessageList(PNode* head, int snum, char* name, char sex, int year, int month, int day,int* score);
//删除学生信息
int DelStudentMessageList(PNode* head,int snum);
//修改学生信息
void AlterStudentMessageList(PNode pAlt, char* name, char sex, int year, int month, int day,int* score);
//查找学生信息(按学号)
void FindStudentMessageBySnumList(PNode* head,int snum);
//查找学生信息(按姓名)
void FindStudentMessageByNameList(PNode* head,char* name);
//打印学生信息
void PrintStudentMessageList(PNode pArr);
//学生按总分从大到小排序
void StudentMessageTotalSortList(PNode* head);
//学生按姓名排序
void StudentMessageNameSortList(PNode* head);

//创建学生信息(文件创建)
int CreateStudentMessageFile(PNode* head);
void _CreateStudentMessage(PNode* head,char msg[11][20]);

//最终封装函数
//主界面打印
void Printwindow(int n);
//创建学生信息
void CreateStudentMessage(PNode* head);
//增加学生信息
void AddStudentMessage(PNode* head);
//查看学生信息
void BrowseStudentMessage(PNode* head);
//修改学生信息
void AlterStudentMessage(PNode head);
//查找学生信息
void FindStudentMessage(PNode* head);
//删除学生信息
void DelStudentMessage(PNode* head);
//按总分排序后显示,或者按姓名排序后显示
void SortBrowseStudentMessage(PNode* head);
//保存信息
void SaveMessage(PNode* head);

//辅助函数
//字符串转换整型
int ChangeCharforInt(char* arr);
//整型转换字符串
char* ChangeIntforChar(int num);
//释放空间
void FreeMessageList(PNode* head);

头文件不做过多描述,主要包含了函数声明还有定义的结构体。

函数.c文件 system.c

#include"System.h"

头文件包含


void SListInit(PNode *Head)
{                           
	assert(Head);
	*Head = NULL;
}

头节点初始化

PNode BuySListNodeList(int snum, char* name, char sex, int year, int month, int day,int* score)
{
	int i;
	PNode pNewNode = (PNode)malloc(sizeof(Node));
	
	if(NULL == pNewNode)
	{
		assert(0);
		return NULL;
	}

	pNewNode->next = NULL;

	pNewNode->data.snum = snum;

	strcpy(pNewNode->data.name,name);

	pNewNode->data.sex = sex;

	pNewNode->data.birthday.day = day;
	pNewNode->data.birthday.month = month;
	pNewNode->data.birthday.year = year;

	for(i=0; i<5; i++)
	{
		pNewNode->data.score[i] = score[i];
	}

	return pNewNode;
}

创建链表的新结点,把传过来对应的值放到新结点对应的变量处,strcpy(char* ch1,const char* ch2)函数是把字符串ch2(必须以\0结尾)拷贝到字符串ch1(空间必须足够容纳ch2)中。

int CreateStudentMessageList(PNode* head,int n)
{
	int i = 0;
	int flag = 0;
	int t,k,j;
	char message[100];
	char msg[11][20];
	while(i<n)
	{
		printf("请按照 学号  姓名   性别  出生日期  语文  数学  英语  科学  体育  的顺序输入每个学生的信息:");

		if(0 == flag)
			getchar();
		gets(message);
		t = 0;
		k = 0;
		while(message[k] != '\0' && t<11)
		{
			j = 0;
			while(message[k] != ' ' && message[k] != '-' && message[k] != '\0')
			{
				msg[t][j] = message[k];
				k++;
				j++;
			}
			
			msg[t][j] = '\0';
			t++;
			k++;
		}
		_CreateStudentMessage(head,msg);

		i++;
		f
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值