C语言课程设计——学生信息管理系统(BUG挺多,敬请指正)

学生信息管理系统(读取文件)

感想:怎么说呢,自己慢慢做了两个周,

代码都是手打的,

也算是对自己曾经选择计算机的一个尊重,

毕竟以后上万行的代码也要练习的。

很水的一个题目,

只怪自己的水平太差劲了......

1.    设计目的

1.1巩固和加深对C语言课程基本知识的理解和掌握

1.2利用C语言进行基本的软件设计与开发

1.3了解部分管理信息系统的开发流程

1.4加强自己的团队协作和分析问题的能力

1.5掌握C语言编程和程序调试的基本技能

1.6熟悉编译器的基本操作与对错误警告的理解和改正

1.7提高运用C语言解决实际问题的能力

1.8掌握书写程序设计说明文档的能力


2.    功能描述

2.1人性化的分级菜单操作界面

2.2可录入信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail

2.3学生信息可以进行综合浏览,或者自定义排序方式浏览

2.4以菜单的形式对学生的信息进行录入,并可以写入文件

2.5屏幕显示区域不同操作有不同的字体颜色

2.6对已存在的信息进行多次更改,但是没有完成对已存在信息的删除操作


3.    总体设计

3.1选题构思过程

选择学生信息管理系统这个题目后,并不是着急的去敲代码,而是对自己的思路首先有一个框图构架,选择用什么函数,哪些函数需要自己自定义实现,以及对代码的简化等,这一步真的是最不简单的,毕竟第一次没有任何经验与思路。除此之外,我个人的基础还不是很好,如指针与链表,文件等内容。

3.2用到的知识

自定义函数;文件的写入与读取;结构体;冒泡排序算法;控制台操作(百度);全局与局部变量的设定;对程序的注释等。


运行效果:

C语言课程设计——学生信息管理系统(BUG挺多,敬请指正)_第1张图片

代码:

/******************************************************************************************************
题目三:学生信息管理系统设计
	学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
	试设计一学生信息管理系统,使之能提供以下功能:
	系统以菜单方式工作
	学生信息录入功能(学生信息用文件保存)---输入
	学生信息浏览功能---输出
	查询、排序功能---算法
	按学号查询
	按姓名查询
	学生信息的删除与修改(可选项)
********************************************************************************************************/

#include 
#include 
#include 
#include 
#include 
#define MIN_C 100//每个数据对应字符串类型占据的大小
#define MAX_G 1000//学生信息量大小

int i_entry;//学生的人数统计
FILE *fp;//文件指针

struct student {
	char stuid[MIN_C];//学生学号
	char name[MIN_C];//学生姓名
	char age[3];//学生年龄
	char gender[MIN_C];//学生性别
	char birth[MIN_C];//学生出生日期
	char add[MIN_C];//学生地址
	char tle[MIN_C];//学生电话
	char email[MIN_C];//学生邮箱
} DATA[MAX_G];

struct student temp;//用于排序的中间变量

void init() {//文件的初始化读取
	while (!feof(fp)) {
		fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", DATA[i_entry].stuid, DATA[i_entry].name, DATA[i_entry].age,
		       DATA[i_entry].gender, DATA[i_entry].birth, DATA[i_entry].add, DATA[i_entry].tle, DATA[i_entry].email);
		i_entry++;
	}
}

void file_save() {//信息以文件格式录入函数
	fprintf(fp, "%s\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", DATA[i_entry].stuid, DATA[i_entry].name,DATA[i_entry].age,
	        DATA[i_entry].gender, DATA[i_entry].birth, DATA[i_entry].add, DATA[i_entry].tle, DATA[i_entry].email);
}

void RED() {//控制台调整前景色为红色
	HANDLE kai_1 = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(kai_1, FOREGROUND_INTENSITY | FOREGROUND_RED); // 为红色
}

void GREEN() {//控制台调整前景色为绿色
	HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_GREEN);// 为绿色
}

void LIGHT() {//控制台调整前景色为强光
	HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);// 为强光
}

void notice() {//提示信息
	RED();
	puts("\t\t\t1.学生综合信息录入");
	puts("\t\t\t2.学生综合信息浏览");
	puts("\t\t\t3.综合信息排序浏览");
	puts("\t\t\t4.学生个人信息查询");
	puts("\t\t\t5.学生综合信息修改");
	printf("\t\t\t0. 退  出  系  统\n");
	GREEN();
	printf("请键入:");
}

void entry() {//学生信息的录入
	int flag,i;
	system("cls");
	init();
	flag=1;
	puts("***************>>>>>>当前模式为学生信息录入状态<<<<<<*************");
	printf("请输入学生学号:");
	flag=1;//标识变量,用以判断该信息是否已存在
	scanf("%s",&DATA[i_entry].stuid);
	for(i=0; i>>>>>当前模式为学生信息修改状态<<<<<<*************");
	LIGHT();
	printf("选定检索方式:1.学号检索\t2.姓名检索.   请键入:");
	GREEN();
	flag=0;
	scanf("%d",&t);
	if(t==2) {
		init();
		LIGHT();
		printf("请输入需要修改的学生姓名:");
		scanf("%s",&DATA[i_entry].name);
		GREEN();
		for(i=0; i>>>>>当前模式为学生信息浏览状态<<<<<<*************");
	i_printf();
}

void stuid_sort() {//学号排序 冒泡排序算法
	int r,t;
	system("cls");
	puts("***************>>>>>>当前模式以学号排序后浏览状态<<<<<<*************");
	//struct student temp;
	for(r=1; r>>>>>当前模式以姓名排序后浏览状态<<<<<<*************");
	//struct student temp;
	for(j=1; j>>>>>当前模式以学号查询信息状态<<<<<<*************");
	while(k) {
		printf("请键入学生学号: ");
		scanf("%s",wqs);
		for(i=0; i>>>>>当前模式以姓名查询信息状态<<<<<<*************");
	while(k) {
		printf("请键入学生姓名: ");
		scanf("%s",wqs);
		for(i=0; i1)
			notice();
		scanf("%d",&k);
		system("cls");
		switch(k) {
			case 0: {
				puts("温馨提醒:");
				puts("\t    ^…………^……^^谢谢您的支持,欢迎再次使用!^^……^…………^ ");
				puts("\t*******学生基本信息已保存在当前目录文件 student_data.txt 下********");
				flag=0;
				LIGHT();
				break;
			}
			case 1: {
				case1();
				break;
			}
			case 2: {
				case2();
				break;
			}
			case 3: {
				case3();
				break;
			}
			case 4: {
				case4();
				break;
			}
			case 5: {
				case5();
				break;
			}
			default: {
				RED();
				printf("请正确键入命令前数字!\n");
				GREEN();
				break;
			}
		}
		p=1103;
		puts("\n");
	}
}

int main() {
	if ((fp = fopen("student_data.txt", "r+")) == NULL) {
		fp = fopen("student_data.txt", "w+");
	}
	init();//文件的初始化读入
	GREEN();//控制台颜色为绿色
	printf(" >************欢 迎 您 使 用 学 生 信 息 管 理 系 统(正式版1.0.1)************<\n");
	printf(">*************     请键入以下命令行所对应的数字进行操作:     *************<\n");
	printf(">*************   请确定正确退出程序,否则文件将不被正常保存.     *************<\n");
	deal();//处理数据
	fclose(fp);//文件正常关闭
	return 0;
}



你可能感兴趣的:(有趣的小程序--------)