欢迎来到天天文库
浏览记录
ID:18781369
大小:538.00 KB
页数:18页
时间:2018-09-22
《c 语言程序设计报告new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C语言程序设计》课题设计实习报告题目:学生成绩管理班级:xxxx学号:xxxxxxxxxxxx姓名:xxxxxx指导老师:xxxx一、问题描述1、题目描述编写一个程序来管理学生成绩,本系统能实现以下功能:输入信息:学生学号、姓名和成绩的输入;修改信息:对学生学号、姓名和成绩进行添加、删除与修改;查询:能够根据学号、姓名查询某个学生的成绩;统计:能对学号、姓名和不同的成绩进行排序,并统计出不同分数段的学生人数;输出:输出所有学生信息或查询结果。2、设计提示(1)先确定学生成绩管理的数据结构。如每个学生信息:学号、姓名、课程1、课程2总分、均
2、分等,每个数据项各用什么数据类型;(2)划分实现学生管理的功能模块;如主菜单、输入数据、修改、查询、统计与输出等功能,并确定各功能模块的实现算法。(3)画出各模块的流程图或S-R图;(4)选择C语言的技术:普通数组、结构体数组、函数、指针、单链表或文件等。(5)编写程序代码。二、程序功能模块输入/输出模块查询模块学生成绩管理更新模块文件管理模块输入/输出模块查询模块注:从屏幕输出记录从键盘输入新数据按学号查询按姓名查询文件管理模块更新模块保存记录数据文件读取记录数据文件新建记录数据文件删除记录修改记录排序记录三、算法分析设计一个基本C语言的
3、学生成绩管理系统,可以选用单链表作为数据存储的结构。这样做的优点是根据学生数量动态决定内存开销,且不用移动数据。缺点是链表操作的复杂性和不稳定性,而且每增加(删除)一个学生记录就要进行内存的分配和(释放),当这种操作较频繁的时候,一点以外就会造成内存泄漏和程序运行不稳定。另外,使用单链表还要牺牲一部分空间用来存放节点关系的指针,空间使用效率并不高。显示函数增加函数删除函数插入函数查询函数(用学号查询类似)注:Number—学号name—名字mark—成绩sum—总成绩average—平均分order—排名程序清单#include4、.h>#include#include#includetypedefstructSTUDENT{charstudentNumber[10];/学生学号/charstudentName[20];/学生姓名/charclassName[20];/班级名称/floatmark1;/第1门成绩/floatmark2;/第2门成绩/floatmark3;/第3门成绩/structSTUDENTnext;}STUDENT;STUDENTheadLink;/链表表头指针//以下是函数声明/void5、ReadInfoFormFile(void);voidDesplayMenu(void);voidCreateHeadLink(void);STUDENTMallocNode(void);voidGetInformation(STUDENTt);voidOutputInformation(void);voidDesplayInfoBystudentName(void);voidDesplayInfoBystudentNumber(void);voidDesplayOneNode(STUDENTt);voidInsertOneNode(STU6、DENTt);voidDeleteNodeBystudentNumber(void);voidChangeMarkByName(void);voidChangeMarkByNumber(void);voidSaveLinkToFile(void);voidDesplayMarkSegment(void);voidCompositorByTotalMark(void);intchoose;/用于接受用户的选择//主函数/main(){CreateHeadLink();ReadInfoFormFile();DesplayMenu();}/函数功7、能:从文件中读学生信息到链表中/voidReadInfoFormFile(void){FILEfp;STUDENTp;fp=fopen("student.txt","r");if(!fp){printf("文件不存在");return;}p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0){InsertOneNode(p);p=Ma8、llocNode();}fclose(fp);}/函数功能:显示菜单,根据用户的输入完成相应的功能/voidDesplayMenu(void){STUDENTp;printf("
4、.h>#include#include#includetypedefstructSTUDENT{charstudentNumber[10];/学生学号/charstudentName[20];/学生姓名/charclassName[20];/班级名称/floatmark1;/第1门成绩/floatmark2;/第2门成绩/floatmark3;/第3门成绩/structSTUDENTnext;}STUDENT;STUDENTheadLink;/链表表头指针//以下是函数声明/void
5、ReadInfoFormFile(void);voidDesplayMenu(void);voidCreateHeadLink(void);STUDENTMallocNode(void);voidGetInformation(STUDENTt);voidOutputInformation(void);voidDesplayInfoBystudentName(void);voidDesplayInfoBystudentNumber(void);voidDesplayOneNode(STUDENTt);voidInsertOneNode(STU
6、DENTt);voidDeleteNodeBystudentNumber(void);voidChangeMarkByName(void);voidChangeMarkByNumber(void);voidSaveLinkToFile(void);voidDesplayMarkSegment(void);voidCompositorByTotalMark(void);intchoose;/用于接受用户的选择//主函数/main(){CreateHeadLink();ReadInfoFormFile();DesplayMenu();}/函数功
7、能:从文件中读学生信息到链表中/voidReadInfoFormFile(void){FILEfp;STUDENTp;fp=fopen("student.txt","r");if(!fp){printf("文件不存在");return;}p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0){InsertOneNode(p);p=Ma
8、llocNode();}fclose(fp);}/函数功能:显示菜单,根据用户的输入完成相应的功能/voidDesplayMenu(void){STUDENTp;printf("
此文档下载收益归作者所有