栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

小项目

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小项目

学习目标:
  • 熟练掌握C语言开发

学习内容:
  1. 掌握C语言数组的运用
  2. 掌握对数据的增删改查
  3. 掌握C语言读取文件
  4. 掌握C语言写入文件
  5. 掌握C语言函数的灵活运用

程序还存在很多小bug,程序有问题可以评论告诉我,若有需要可自行网盘下载

链接:https://pan.baidu.com/s/14QKKuQkkYbzv6wqRQu6yVQ?pwd=04u7
提取码:04u7

 程序效果:

1、主菜单

7.统计学生总数

6.学生成绩排名


程序关键代码:

>>菜单函数

void menu() {
	system("cls");
	printTableHead(MENU_WIDTH);//打印表头
	printTableMidInfo(MENU_WIDTH, "学生信息管理系统");
	printTableMidInfo(MENU_WIDTH,"");

	const char* subMenus[] = {
		"1.输入学生信息",
		"2.查找学生信息",
		"3.删除学生信息",
		"4.修改学生信息",
		"5.插入学生信息",
		"6.学生成绩排名",
		"7.统计学生总数",
		"8.显示所有信息",
		"9.退出系统    "
	};
	int count = sizeof(subMenus) / sizeof(subMenus[0]);
	for (int i = 0; i < count; i++) {//打印菜单
		printTableMidInfo(MENU_WIDTH, subMenus[i]);
	}
	printTableMidInfo(MENU_WIDTH, "");
	printTableTail(MENU_WIDTH);//打印表尾
	printMidInfo("请输入(1-9):>");
}

>>初始化函数

void init() {//初始化
	char cmd[128];
	sprintf(cmd, "mode con lines=%d cols=%d", WIN_HEIGHT, WIN_WIDTH);
	system(cmd);
	system("color 7d");//设置背景颜色
	menu();
	//数值初始化
	memset(stu, 0, sizeof(stu));
	//运行后自动从文件中读取数据,然后保存到数值中
	//读取文件,fopen打开文件第一个参数打印的文件名如果没有自动生成,第二个参数打开方式
	//FILE文件指针
	FILE *fp = fopen("studentdata.txt", "rb");//二进制读取 "rb"只读+二进制
	if (fp == NULL) { //判断读取的文件是否为空
		studentCount = 0;
		return;
	}
	int i = 0;//记录文件中学生人数
	while (!feof(fp))//feof表示读文件是否结束
	{
		//将文件内容读入stu数组中每次读取一个学生的所有信息,读一次,读的内容为fp
		int ret = fread(&stu[i], sizeof(struct student), 1, fp);//读取成功则返回1
		if (ret == 1) i++;
	}
	studentCount = i;
}

>>打印学生信息列表函数

void showPage(int starIndex, int endIndex) {
	if (endIndex >= studentCount)
		endIndex = studentCount - 1;
	if ((endIndex - starIndex + 1) > RECORDER_PER_PAGE)
		endIndex = starIndex + RECORDER_PER_PAGE - 1;
	char row[6][COL_LEN_MAX];
	system("cls");
	printTableHead(TABLE_WIDTH, 6);//打印表头
	printTableRow(TABLE_WIDTH,head,sizeof(head)/sizeof(head[0]));//打印首行
	printTableMidLine(TABLE_WIDTH, 6);//打印内部数据

	for (int i = starIndex; i <= endIndex; i++) {
		if (flag == 0) {//按输入先后排序
			sprintf(row[0], "%d", stu[i].num);
			sprintf(row[1], "%s", stu[i].name);
			sprintf(row[2], "%d", stu[i].clanguage);
			sprintf(row[3], "%d", stu[i].algo);
			sprintf(row[4], "%d", stu[i].database);
			sprintf(row[5], "%d", stu[i].sum);
		}
		else if (flag == 1) {//打印排序后的信息
			sprintf(row[0], "%d", stu1[i].num);
			sprintf(row[1], "%s", stu1[i].name);
			sprintf(row[2], "%d", stu1[i].clanguage);
			sprintf(row[3], "%d", stu1[i].algo);
			sprintf(row[4], "%d", stu1[i].database);
			sprintf(row[5], "%d", stu1[i].sum);
		}
		printTableRow(TABLE_WIDTH, row, 6);
		if (i < endIndex)
			printTableMidLine(TABLE_WIDTH, 6);
		else
			printTableTail(TABLE_WIDTH, 6);
		}
		flag = 0;
}

>>写入保存函数

bool save() {
	//覆盖式写入操作
	FILE *fp = fopen("studentdata.txt", "wb");
	if (fp == NULL) {
		fclose(fp);
		return false;
	}
	for (int i = 0; i < studentCount; i++) {
		int ret = fwrite(&stu[i], sizeof(struct student), 1, fp);
		//一次写入一组学生的信息,写入成功返回1
		if (ret != 1) {
			fclose(fp);
			return false;
		}
	}
	fclose(fp);
	return true;
}

>>删除信息函数

void del() {
	FILE* fp;
	int stunum3;
	char str[16] = "";
	system("cls");
	printf("请输入需要删除的学生信息:>");
	scanf("%d", &stunum3);
	int i = searchStu(stunum3);
	if (i < 0) {
		printf("没有找到该学生信息!n");
		return;
	}
	printf("找到该学生信息,是否删除(y/n):>");
	scanf("%s", str);
	if (strcmp(str, "Y") == 0 || strcmp(str, "y") == 0) {
		for (int j = i; j < studentCount; j++) {
			stu[j] = stu[j + 1];
		}
		studentCount--;
		if (save())
			printf("删除成功!n");
		else
			printf("保存文件失败!n");
	}
	else {
		printf("取消删除!n");
	}
}

>>修改信息函数

void modify() {
	int stunum1;
	system("cls");
	printf("请输入需要修改的学生学号:>");
	scanf("%d", &stunum1);
	int i = searchStu(stunum1);
	if (i < 0) {
		printf("没有找到该学生信息!n");
		return;
	}
	printf("找到该学生信息,可进行修改信息!n");
	rewind(stdin);
	rewind(stdin);//先清空缓冲区
	printf("学号(10位数):>");
	scanf("%d", &stu[i].num);
	printf("姓名:>");
	scanf("%s", &stu[i].name);
	printf("C语言成绩(0-100分):>");
	scanf("%d", &stu[i].clanguage);
	printf("算法成绩(0-100分):>");
	scanf("%d", &stu[i].algo);
	printf("数据库成绩(0-100分):>");
	scanf("%d", &stu[i].database);
	stu[i].sum = stu[i].clanguage + stu[i].algo + stu[i].database;
	if (save())
		printf("修改成功!n");
	else
		printf("保存文件失败!n");
	int stunum = 0;

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号