当前位置: 首页 > wzjs >正文

做网站需要了解什么软件哪些平台可以发广告

做网站需要了解什么软件,哪些平台可以发广告,东莞做网站dgjcwl,网站商品展示页怎么做的学生成绩管理系统(C语言实现) 前提: 一、基础语法 数据类型 基本类型:int, float, char 构造类型:struct(学生信息结构体) 字符串处理:char name[20] 输入输出 printf()/scanf…

学生成绩管理系统(C语言实现)

前提:

一、基础语法

  1. 数据类型

    • 基本类型:intfloatchar

    • 构造类型:struct(学生信息结构体)

    • 字符串处理:char name[20]

  2. 输入输出

    • printf()/scanf()格式化输入输出

    • %d%f%s等格式控制符

  3. 运算符

    • 算术运算符:+/(计算总分和平均分)

    • 比较运算符:><==(成绩比较)

    • 逻辑运算符:&&||(复合条件判断)


二、流程控制

  1. 分支结构

    • if-else:成绩筛选条件判断

    • switch-case:菜单选择和多条件分支

  2. 循环结构

    • for循环:遍历学生数组

    • do-while:菜单循环

    • 嵌套循环:排序算法实现


三、核心数据结构

  1. 数组

    • 固定长度数组:Student students[MAX_STUDENTS]

    • 数组遍历和操作

  2. 结构体

    c

    复制

    下载

    typedef struct {int id;char name[20];float chinese, math, english;float total, average;
    } Student;
    • 复合数据类型组织学生信息

    • 结构体成员访问(.运算符)


四、算法实现

  1. 排序算法

    • 冒泡排序实现多条件排序(按学号/各科成绩等)

    c

    复制

    下载

    for(i=0; i<studentCount-1; i++){for(j=0; j<studentCount-1-i; j++){if(students[j].total < students[j+1].total){// 交换结构体}}
    }
  2. 查找算法

    • 线性查找:按学号/姓名查找学生

    • 条件筛选:阈值过滤(如score >= 60


五、内存与文件操作

  1. 文件I/O

    • fopen()/fclose()文件开关

    • fwrite()/fread()二进制读写

    c

    复制

    下载

    // 保存数据
    fwrite(&studentCount, sizeof(int), 1, file);
    fwrite(students, sizeof(Student), studentCount, file);
  2. 内存管理

    • 静态数组内存分配

    • 结构体整体读写(二进制安全)


六、工程化实践

  1. 模块化设计

    • 功能函数化(添加/查询/修改等独立函数)

    • 函数声明与实现分离

  2. 用户交互

    • 菜单驱动界面

    • 输入验证(未做完善处理,实际项目需要加强)

  3. 数据持久化

    • 程序退出保存状态

    • 启动时加载历史数据


七、可扩展方向

  1. 动态内存

    • 改用malloc()实现动态数组

    • 链表存储代替静态数组

  2. 高级特性

    • 指针优化结构体操作

    • 多文件编程(头文件分离)

  3. 增强功能

    • 输入错误处理

    • 成绩分段统计(优良率等)

    • 图形界面(如结合GTK)


这个项目综合运用了C语言90%的基础知识点,是典型的控制台应用程序范例。通过这个案例可以系统掌握:

  • 结构化编程思想

  • 数据+算法的结合实现

  • 小型系统开发流程

  • 调试和优化技巧

以下是一个完整的学生成绩管理系统,包含语文、数学、英语三科成绩,并支持多种筛选功能:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define MAX_STUDENTS 100// 学生结构体
typedef struct {int id;             // 学号char name[20];      // 姓名float chinese;      // 语文成绩float math;         // 数学成绩float english;      // 英语成绩float total;        // 总分float average;      // 平均分
} Student;Student students[MAX_STUDENTS];
int studentCount = 0;// 函数声明
void addStudent();
void displayAll();
void searchStudent();
void updateStudent();
void deleteStudent();
void sortStudents();
void filterStudents();
void calculateStats();
void saveToFile();
void loadFromFile();
void showMenu();int main() {loadFromFile();int choice;do {showMenu();printf("请输入您的选择(0-9): ");scanf("%d", &choice);switch(choice) {case 1: addStudent(); break;case 2: displayAll(); break;case 3: searchStudent(); break;case 4: updateStudent(); break;case 5: deleteStudent(); break;case 6: sortStudents(); break;case 7: filterStudents(); break;case 8: calculateStats(); break;case 9: saveToFile(); break;case 0: printf("感谢使用,再见!\n"); break;default: printf("无效的选择,请重新输入!\n");}} while(choice != 0);return 0;
}// 显示菜单
void showMenu() {printf("\n===== 学生成绩管理系统 =====\n");printf("1. 添加学生信息\n");printf("2. 显示所有学生信息\n");printf("3. 查找学生信息\n");printf("4. 修改学生信息\n");printf("5. 删除学生信息\n");printf("6. 排序学生信息\n");printf("7. 筛选学生信息\n");printf("8. 统计信息\n");printf("9. 保存数据到文件\n");printf("0. 退出系统\n");printf("============================\n");
}// 添加学生信息
void addStudent() {if (studentCount >= MAX_STUDENTS) {printf("学生数量已达上限,无法添加!\n");return;}Student s;printf("请输入学号: ");scanf("%d", &s.id);printf("请输入姓名: ");scanf("%s", s.name);printf("请输入语文成绩: ");scanf("%f", &s.chinese);printf("请输入数学成绩: ");scanf("%f", &s.math);printf("请输入英语成绩: ");scanf("%f", &s.english);s.total = s.chinese + s.math + s.english;s.average = s.total / 3;students[studentCount++] = s;printf("学生信息添加成功!\n");
}// 显示所有学生信息
void displayAll() {if (studentCount == 0) {printf("没有学生信息可显示!\n");return;}printf("\n%-10s %-15s %-10s %-10s %-10s %-10s %-10s\n", "学号", "姓名", "语文", "数学", "英语", "总分", "平均分");printf("------------------------------------------------------------\n");for (int i = 0; i < studentCount; i++) {Student s = students[i];printf("%-10d %-15s %-10.1f %-10.1f %-10.1f %-10.1f %-10.1f\n", s.id, s.name, s.chinese, s.math, s.english, s.total, s.average);}
}// 查找学生信息
void searchStudent() {if (studentCount == 0) {printf("没有学生信息可查找!\n");return;}int choice;printf("\n1. 按学号查找\n");printf("2. 按姓名查找\n");printf("请选择查找方式: ");scanf("%d", &choice);if (choice == 1) {int id;printf("请输入要查找的学号: ");scanf("%d", &id);int found = 0;for (int i = 0; i < studentCount; i++) {if (students[i].id == id) {printf("\n%-10s %-15s %-10s %-10s %-10s %-10s %-10s\n", "学号", "姓名", "语文", "数学", "英语", "总分", "平均分");printf("------------------------------------------------------------\n");Student s = students[i];printf("%-10d %-15s %-10.1f %-10.1f %-10.1f %-10.1f %-10.1f\n", s.id, s.name, s.chinese, s.math, s.english, s.total, s.average);found = 1;break;}}if (!found) {printf("未找到学号为%d的学生!\n", id);}} else if (choice == 2) {char name[20];printf("请输入要查找的姓名: ");scanf("%s", name);int found = 0;printf("\n%-10s %-15s %-10s %-10s %-10s %-10s %-10s\n", "学号", "姓名", "语文", "数学", "英语", "总分", "平均分");printf("------------------------------------------------------------\n");for (int i = 0; i < studentCount; i++) {if (strcmp(students[i].name, name) == 0) {Student s = students[i];printf("%-10d %-15s %-10.1f %-10.1f %-10.1f %-10.1f %-10.1f\n", s.id, s.name, s.chinese, s.math, s.english, s.total, s.average);found = 1;}}if (!found) {printf("未找到姓名为%s的学生!\n", name);}} else {printf("无效的选择!\n");}
}// 修改学生信息
void updateStudent() {if (studentCount == 0) {printf("没有学生信息可修改!\n");return;}int id;printf("请输入要修改的学生学号: ");scanf("%d", &id);int index = -1;for (int i = 0; i < studentCount; i++) {if (students[i].id == id) {index = i;break;}}if (index == -1) {printf("未找到学号为%d的学生!\n", id);return;}printf("当前学生信息:\n");printf("%-10s %-15s %-10s %-10s %-10s %-10s %-10s\n", "学号", "姓名", "语文", "数学", "英语", "总分", "平均分");printf("------------------------------------------------------------\n");Student s = students[index];printf("%-10d %-15s %-10.1f %-10.1f %-10.1f %-10.1f %-10.1f\n", s.id, s.name, s.chinese, s.math, s.english, s.total, s.average);printf("\n请输入新的姓名(原值: %s): ", s.name);scanf("%s", s.name);printf("请输入新的语文成绩(原值: %.1f): ", s.chinese);scanf("%f", &s.chinese);printf("请输入新的数学成绩(原值: %.1f): ", s.math);scanf("%f", &s.math);printf("请输入新的英语成绩(原值: %.1f): ", s.english);scanf("%f", &s.english);s.total = s.chinese + s.math + s.english;s.average = s.total / 3;students[index] = s;printf("学生信息修改成功!\n");
}// 删除学生信息
void deleteStudent() {if (studentCount == 0) {printf("没有学生信息可删除!\n");return;}int id;printf("请输入要删除的学生学号: ");scanf("%d", &id);int index = -1;for (int i = 0; i < studentCount; i++) {if (students[i].id == id) {index = i;break;}}if (index == -1) {printf("未找到学号为%d的学生!\n", id);return;}for (int i = index; i < studentCount - 1; i++) {students[i] = students[i + 1];}studentCount--;printf("学号为%d的学生信息已删除!\n", id);
}// 排序学生信息
void sortStudents() {if (studentCount == 0) {printf("没有学生信息可排序!\n");return;}int choice;printf("\n1. 按学号排序\n");printf("2. 按语文成绩排序\n");printf("3. 按数学成绩排序\n");printf("4. 按英语成绩排序\n");printf("5. 按总分排序\n");printf("6. 按平均分排序\n");printf("请选择排序方式: ");scanf("%d", &choice);int i, j;Student temp;for (i = 0; i < studentCount - 1; i++) {for (j = 0; j < studentCount - 1 - i; j++) {int needSwap = 0;switch(choice) {case 1: needSwap = students[j].id > students[j+1].id; break;case 2: needSwap = students[j].chinese < students[j+1].chinese; break;case 3: needSwap = students[j].math < students[j+1].math; break;case 4: needSwap = students[j].english < students[j+1].english; break;case 5: needSwap = students[j].total < students[j+1].total; break;case 6: needSwap = students[j].average < students[j+1].average; break;default: printf("无效的选择!\n"); return;}if (needSwap) {temp = students[j];students[j] = students[j+1];students[j+1] = temp;}}}printf("排序完成!\n");displayAll();
}// 筛选学生信息
void filterStudents() {if (studentCount == 0) {printf("没有学生信息可筛选!\n");return;}int choice;printf("\n1. 筛选语文成绩大于等于某值\n");printf("2. 筛选数学成绩大于等于某值\n");printf("3. 筛选英语成绩大于等于某值\n");printf("4. 筛选总分大于等于某值\n");printf("5. 筛选平均分大于等于某值\n");printf("请选择筛选方式: ");scanf("%d", &choice);float value;printf("请输入筛选阈值: ");scanf("%f", &value);printf("\n筛选结果:\n");printf("%-10s %-15s %-10s %-10s %-10s %-10s %-10s\n", "学号", "姓名", "语文", "数学", "英语", "总分", "平均分");printf("------------------------------------------------------------\n");int count = 0;for (int i = 0; i < studentCount; i++) {Student s = students[i];int match = 0;switch(choice) {case 1: match = s.chinese >= value; break;case 2: match = s.math >= value; break;case 3: match = s.english >= value; break;case 4: match = s.total >= value; break;case 5: match = s.average >= value; break;default: printf("无效的选择!\n"); return;}if (match) {printf("%-10d %-15s %-10.1f %-10.1f %-10.1f %-10.1f %-10.1f\n", s.id, s.name, s.chinese, s.math, s.english, s.total, s.average);count++;}}if (count == 0) {printf("没有符合条件的学生!\n");} else {printf("\n共找到%d名学生符合条件\n", count);}
}// 统计信息
void calculateStats() {if (studentCount == 0) {printf("没有学生信息可统计!\n");return;}float chineseSum = 0, mathSum = 0, englishSum = 0;float chineseMax = students[0].chinese, chineseMin = students[0].chinese;float mathMax = students[0].math, mathMin = students[0].math;float englishMax = students[0].english, englishMin = students[0].english;for (int i = 0; i < studentCount; i++) {Student s = students[i];chineseSum += s.chinese;mathSum += s.math;englishSum += s.english;if (s.chinese > chineseMax) chineseMax = s.chinese;if (s.chinese < chineseMin) chineseMin = s.chinese;if (s.math > mathMax) mathMax = s.math;if (s.math < mathMin) mathMin = s.math;if (s.english > englishMax) englishMax = s.english;if (s.english < englishMin) englishMin = s.english;}printf("\n===== 成绩统计信息 =====\n");printf("语文 - 平均分: %.2f, 最高分: %.1f, 最低分: %.1f\n", chineseSum/studentCount, chineseMax, chineseMin);printf("数学 - 平均分: %.2f, 最高分: %.1f, 最低分: %.1f\n", mathSum/studentCount, mathMax, mathMin);printf("英语 - 平均分: %.2f, 最高分: %.1f, 最低分: %.1f\n", englishSum/studentCount, englishMax, englishMin);printf("========================\n");
}// 保存数据到文件
void saveToFile() {FILE *file = fopen("students.dat", "wb");if (file == NULL) {printf("无法打开文件进行保存!\n");return;}fwrite(&studentCount, sizeof(int), 1, file);fwrite(students, sizeof(Student), studentCount, file);fclose(file);printf("学生数据已保存到文件!\n");
}// 从文件加载数据
void loadFromFile() {FILE *file = fopen("students.dat", "rb");if (file == NULL) {printf("未找到数据文件,将创建新文件。\n");return;}fread(&studentCount, sizeof(int), 1, file);fread(students, sizeof(Student), studentCount, file);fclose(file);printf("学生数据已从文件加载!\n");
}
 

系统功能说明

  1. 基本功能

    • 添加学生信息(学号、姓名、语文、数学、英语成绩)

    • 显示所有学生信息

    • 查找学生(按学号或姓名)

    • 修改学生信息

    • 删除学生信息

  2. 成绩处理功能

    • 自动计算总分和平均分

    • 多种排序方式(按各科成绩、总分、平均分)

    • 成绩筛选(可按各科成绩、总分、平均分设置阈值筛选)

    • 成绩统计(各科平均分、最高分、最低分)

  3. 数据持久化

    • 保存数据到文件

    • 从文件加载数据

  4. 用户界面

    • 清晰的菜单导航

    • 格式化的数据展示

使用说明

  1. 编译运行程序后,会显示主菜单

  2. 选择相应数字执行对应功能

  3. 数据会自动计算总分和平均分

  4. 退出前建议选择"保存数据到文件"选项

  5. 下次启动时会自动加载之前保存的数据

这个系统可以满足基本的成绩管理需求,您可以根据需要进一步扩展功能。

http://www.dtcms.com/wzjs/38444.html

相关文章:

  • 建站之星平台dw网页制作教程
  • 昆明网站建设创意长沙网站制作公司哪家好
  • 专业简历制作网站模板品牌策划与推广
  • 做头像的日本网站有哪些南宁网站推广排名
  • 网页广告怎么去除惠州seo整站优化
  • .net 网站开发权限设计杭州推广公司
  • 网站建好了 如何推广百度搜索指数排名
  • 网站开发手机销售网站用例图抖音指数查询
  • iapp用网站做的APP无法加载怎么制作小程序
  • dremrever做网站流程搜索引擎优化seo怎么做
  • 胶南做网站seo营销怎么做
  • 世界500强企业排行榜优化大师下载
  • 黄山市网站建设太原关键词优化服务
  • 怎样做企业的网站建设网站建设优化
  • 聊城手机网站制作广告软文200字
  • 产品展示型网站百度网址大全在哪里找
  • 江西智能网站建设aso优化技巧大aso技巧
  • 网站打开404错误怎么解决新闻头条今日新闻下载
  • 生日网站在线制作免费巨量算数
  • 濮阳seo网站建设百度搜索名字排名优化
  • 普陀区建设局网站网络营销与直播电商专业学什么
  • 网站开发人员培训营销技巧和话术
  • 公众号开发教程视频网络优化工程师主要负责什么工作
  • 可以做家教的网站有哪些百度检索入口
  • java用ssm做电商网站福州百度网站排名优化
  • 县城网站怎样做经验seo排名诊断
  • 厦门海投工程建设有限公司网站世界杯32强排名
  • 古典风格网站模板html产品推广营销
  • 广州科 外贸网站建设学it一年的学费大概是多少
  • WordPress 获得附件深圳网站建设推广优化公司