C语言程序设计报告2000字,c语言程序设计报告

41528d3028836879cd698677c3999917.gifc语言程序设计报告

《C 语言程序设计》课题设计 实习报告题目:学生成绩管理 班级:xxxx 学号:xxxxxxxxxxxx 姓名:xxxxxx 指导老师:xxxx一、问题描述 1、题目描述 编写一个程序来管理学生成绩,本系统能实现以下功能: 输入信息:学生学号、姓名和成绩的输入; 修改信息:对学生学号、姓名和成绩进行添加、删除与修改; 查询:能够根据学号、姓名查询某个学生的成绩; 统计:能对学号、姓名和不同的成绩进行排序,并统计出不同分数段的学生人数; 输出:输出所有学生信息或查询结果。 2、设计提示 (1)先确定学生成绩管理的数据结构。如每个学生信息:学号、姓名、课程 1、 课程 2 总分、均分等,每个数据项各用什么数据类型; (2)划分实现学生管理的功能模块;如主菜单、输入数据、修改、查询、统计 与输出等功能,并确定各功能模块的实现算法。 (3)画出各模块的流程图或 S-R 图; (4)选择 C 语言的技术:普通数组、结构体数组、函数、指针、单链表或文件 等。 (5)编写程序代码。 二、程序功能模块 学生成绩管 理 输入/输出模块 查询模块 更新模块 文件管理模块注: 三、算法分析设计一个基本C语言的学生成绩管理系统,可以选用单链表作为数据存储的结构。这 样做的优点是根据学生数量动态决定内存开销,且不用移动数据。缺点是链表操作的复杂 性和不稳定性,而且每增加(删除)一个学生记录就要进行内存的分配和(释放) ,当这种 操作较频繁的时候,一点以外就会造成内存泄漏和程序运行不稳定。另外,使用单链表还 要牺牲一部分空间用来存放节点关系的指针,空间使用效率并不高。 从 键 盘 输 入 新 数 据 按 学 号 查 询 删 除 记 录 从 屏 幕 输 出 记 录 按 姓 名 查 询 修 改 记 录 更新模块 读 取 记 录 数 据 文 件 文件管理模块 保 存 记 录 数 据 文 件 新 建 记 录 数 据 文 件 输入/输出模块 查询模块 排 序 记 录显示函数 增加函数删除函数 插入函数查询函数(用学号查询类似) 注: Number—学号 name—名字 mark—成绩 sum—总成绩 average—平均分 order—排 名 程序清单#include #include #include #include typedef struct STUDENT { char studentNumber[10];/*学生学号*/ char studentName[20];/*学生姓名*/ char className[20];/*班级名称*/ float mark1;/*第 1 门成绩*/ float mark2;/*第 2 门成绩*/ float mark3;/*第 3 门成绩*/ struct STUDENT *next; }STUDENT; STUDENT *headLink;/*链表表头指针*/ /*以下是函数声明*/ void ReadInfoFile(void); void DesplayMenu(void); void CreateHeadLink(void); STUDENT *MallocNode(void); void GetInation(STUDENT *t); void OutputInation(void); void DesplayInfoBystudentName(void); void DesplayInfoBystudentNumber(void); void DesplayOneNode(STUDENT *t); void InsertOneNode(STUDENT *t); void DeleteNodeBystudentNumber(void); void ChangeMarkByName(void); void ChangeMarkByNumber(void); void SaveLinkToFile(void); void DesplayMarkSegment(void); void CompositorByTotalMark(void); int choose;/*用于接受用户的选择*/ /*主函数*/ main() { CreateHeadLink(); ReadInfoFile(); DesplayMenu(); } /************************************ 函数功能:从文件中读学生信息到链表中 ************************************/ void ReadInfoFile(void) { FILE *fp; STUDENT *p; fp=(“student.txt“,“r“); if(!fp) { printf(“文件不存在\n“); return; } p=MallocNode(); while(fscanf(fp,“%s%s%s%f%f%f“,p->studentNumber,p->studentName,p->className, p=MallocNode(); } fclose(fp); } /************************************ 函数功能:显示菜单,根据用户的输入 完成相应的功能 ************************************/ void DesplayMenu(void) { STUDENT *p; 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(“| 10 排序结果并输出绩 |\n“); printf(“| 11 退出 |\n\n“); scanf(“%d“,/*取得用户的选择*/ switch(choose) { case 1: OutputInation();/*显示所有学生的信息*/ break; case 2: DesplayInfoBystudentName(); break; case 3: DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/ break; case 4: p=MallocNode();/*先申请一个新结点*/ GetInation(p);/*要求用户输入信息到新结点中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值