1、 课程设计报告 科目: C 语言课程设计 专业: 姓名: 学号: 2011 年 5 月 25 日 一、题目学生成绩管理系统一、题目学生成绩管理系统 二、目的二、目的 1、通过课程设计全面掌握C 语言程序设计关键知识点,掌握 C 语言中 数组、指针、结构体、文件等方面的基本知识。 2、通过课程设计了解并掌握 C 语言程序设计的方法,熟悉 C 程序设计的开 发环境及 C 程序的调试过程。 3、培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研有关 问题,学会自己分析、解决问题的方法 三、要求三、要求 1、整个系统均用 C 语言实现。 2、利用指针、链表来实现学生成绩的数据结构设计。 3、系
2、统具有输入、显示、查询、删除、排序、插入、保存、读取基本功能。 4、系统的各个功能模块都用函数的形式来实现。 5、可以将学生成绩信息保存在文件中。 6、可以将学生信息从文件中读取出来。 四四、内容、内容 1、每一条记录包括一个学生的学号、姓名、3 门成绩、平均成绩。 2、输入功能:可以一次完成无数条记录的输入。 3、显示功能:完成全部学生记录的显示。 4、查找功能:完成按姓名、学号查找学生记录,并显示。 5、排序功能:按学生平均成绩、最高分进行排序。 6、插入功能:按平均成绩高低插入一条学生记录。 7、保存功能:将学生记录保存在任何自定义的文件中,如保存在:s:score。 8、读取功能:将保
3、存在文件中的学生记录读取出来。 9、有一个清晰美观界面来调用各个功能。 各个函数的详细设计说明分别如下: 五、五、程序结构图程序结构图 1、 主函数 main() 利用无限次循环 for()和 swithch()实现各函数的调用,系统根据输入的数字选 项来调用相应的函数。void main() Link l;/连表 FILE *fp; /文件指针 int sel; char ch; char jian; 开始 可以读写的方式打开一个 数据文件 将此文件的内容读出,并存入一个新的单 链表中 调用 menu ()菜单函数 进入 while ( 1 )主循环 输入 09 中的一数值,选择相应的判断
4、输入是否为 0 ? 判断键值,调用相应函数,完成相应功能 否 是否对修改进行存盘? 调用 Save() 函数,进行写数据 文件操作 否 结束 是 int count=0; Node *p,*r; printf(“tttt 学生 成绩管 理系统ntttt-10 机电学 院 赵史伟 (1030620326)n“); l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l; fp=fopen(“C:student“,“rb“); if(fp=NULL) printf(“n=提示:文件还不存在,是否创建?(y/n)n“); scanf(“%c“, if(jian=
5、y|jian=Y) fp=fopen(“C:student“,“wb“); else exit(0); printf(“n=提示:文件已经打开,正在导入记录n“); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /将文件的内容放入接点中 p-next=NULL; r-next=p; r=p; /将该接点挂入连中 count+; fclose(fp); /关闭文件 printf(“n=提示:记录导入完毕,共导入%d 条记录.n“,count); while(1) menu(); printf
6、(“请你选择操作:“); scanf(“%d“, if(sel=0) if(shoudsave=1) getchar(); printf(“n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n“); scanf(“%c“, if(ch=y|ch=Y) Save(l); printf(“n=提示:你已经退出系统,再见!n“); break; switch(sel) case 1:Add(l);break; /增加学生 case 2:Del(l);break;/删除学生 case 3:Qur(l);break;/查询学生 case 4:Modify(l);break;/修改学生 case 5:Disp(l);bre