C语言程序设计课程设计报告专业:统计学班级: 088131 姓名:罗钰莹指导教师:薛思清2015 年 01 月 26 日目录1...................................课程设计目的2......................................问题需求分析3........................................系统设计(数据结构,总体软件框架,程序模块设计)4................................................编程实现(描述主要实现过程,主要模块设计必须用流程图或伪代码等)4.1.................................................... 流程图4.2.............................. .....................伪代码4.3 ....................................................程序容5........................................系统测试(设计测试样例,验证程序,用截图的形式表达出来)6......................................(可选)附:部分关键源程序7...........................................实习总结(评价对你所开发的软件,实习过程中的难题,解决过程,你的收获与经验等)一,课程设计的目的随着计算机的普及,计算机在生活中得到越来越多的应用其中在计算机上的运行的各种软件在解决生活中的实际问题中起着重大作用,而目前在编写程序时C 语言是各种语言最基础的,对于普通用户能够使用C语言设计出小型软件对于解决生活中的繁琐问题非常必要,在学校和班级中经常会对某次考试所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理学生总成绩和平均成绩时工作会相对繁重,所以争对这种情况,同时对分析成绩管理所需要的功能,在利用C语言及VC++6.程序运行平台之下,设计了一种小型的成绩管理系统所需要的功能,该系统具有学生成绩相关信息的录入,显示,查询,排序,修改删除和统计功能。
学生成绩管理系统为提供高校信息的管理【要求】设计“学生成绩管理系统”,实现学生信息的输入,显示,查找,保存,删除以及成绩排序等功能模块。
要求功能选择用菜单实现,数据输入和结果输出要求用文件存放。
原始数据文件格式(具体数据自行编写);学号年龄英语高等数学 C语言平均成绩1 珊 19 85 80 75 802 四 20 95 85 90 90 .................................................................功能要求极其说明:(1)数据录入功能:录入每个学生的学号、年龄、课程名称、英语成绩、数学成绩,C语言成绩、平均成绩、共7个数据。
(2)查询功能:分为学生基本情况查询和成绩查询两种学生基本情况查询:输入一个学号或及年龄(可实现选择)查出此学生的基本信息并显示输出。
称号查询:输入一个学号时,查出此学生所有课程情况,格式如下:学号:XX :XX 年龄:XX 英语成绩:XX 数学成绩:XX C语言成绩XX 平均成绩XX(3)添加功能:要求可以添加学生的成绩信息(4)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(5)排序功能:能够实现按英语成绩排序,按数学成绩排序,按C语言成绩排序,按平均成绩排序以及按学号排序数据结构采用结构体数组,提供学生基本信息和学生成绩基本信息结构体数组。
二问题需求分析根据题目要求,该程序具备的功能有程序总体设计程序总体设计1根据题目要求,该程序应具备的功能有:(1)数据录入功能:录入每个学生的学号、年龄、课程名称、英语成绩,数学成绩,平均成绩共7个数据。
因而实现文章的输入输出功能。
(2)查询功能:分为学号情况查询和查询两种,要求用户可以查询各个学生的成绩,通过不同方式实现查询功能。
(3)添加功能:可以添加学生的信息,因而要提供查找和添加功能(4)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。
(5)排序功能:能实现选择按学号,英语成绩,数学成绩,C语言成绩或平均成绩升序或降序排序并显示数据。
(6)菜单功能:应该提供键盘式的选择菜单以实现其功能选择。
三总程序设计四程序详细设计⒈主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
流程图::int main()//主函数{void Add(FILE *fp,STUDENT one);//函数声明void Show(FILE *fp);//函数声明int Find(FILE *fp,char *no,int K);//函数声明int Del(FILE *fp,char *no);//函数声明void Mod(FILE *fp,char *p);//函数声明void Zap(FILE *fp);//函数声明struct student Input(void);long num=0,iItem;int res,K;STUDENT temp;char strNo[10];FILE *fp=fopen("student.dat","r+"); /*判断该文件是否存在*/ if(fp==NULL){fp=fopen("student.dat","w+");}else{fseek(fp,0L,SEEK_END);num=ftell(fp)/sizeof(STUDENT);/*统计多少个字节,除以一个学生需要的字节得到学生的数*/rewind(fp);}while((iItem=menu(num))!=5){switch(iItem){case 1: temp=Input();Add(fp,temp);num++;printf("学生信息已添加,按任意键返回...");break;case 2: Show(fp);printf("按任意键返回...");break;case 3: if(num>0){printf("输入要删除的学号:");scanf("%s",strNo);res=Del(fp,strNo);if(res){printf("学号[%s]记录已删除,按任意键返回...",strNo);Zap(fp);num--;}elseprintf("没有学号[%s]记录,按任意键返回...",strNo);}elseprintf("目前没有记录,无法删除!按任意键返回...");break;case 4: if(num>0){printf("选择查询方式\n");printf("1--基本情况查询\n");printf("2--成绩查询\n");scanf("%d",&K);switch(K){case 1:printf("输入要查找的学号或:");scanf("%s",strNo);printf("\t\t学号\t性别\t年龄\n");break;case 2:printf("输入要查找的学号或:");scanf("%s",strNo);printf("\t\t学号\t性别\t年龄\t英语\t高数\tc语言\t平均分\n");break;default :printf("输入有误!");}res=Find(fp,strNo,K);if(!res)printf("没有此学生记录,按任意键返回...");elseprintf("按任意键返回...");}elseprintf("目前没有记录,无法删除!按任意键返回...");break;default: printf("命令错误,按任意键返回...");break;}getch();}if(fp) fclose(fp);return 0;}2菜单:先定义空函数#include "stdio.h"#include "conio.h"#include "stdlib.h"//函数声明//下面这些函数可以分别对应不同的功能模块,但一个功能模块可以有多个函数来实现//这些函数暂时不做具体设计,包括函数参数,返回值等。
//在后续逐步添加功能模块具体设计与实现这些函数int function1();//。
函数void function2();//。
函数void function3();//。
函数int function4();//。
函数void function5();//。
函数void function6();//。
函数int menu();//菜单程序,也可以把后面的菜单的具体实现函数放在main函数之前,则不需要做此声明//主函数void main(){//调用菜单程序int choice;do{choice = menu();if (choice == 0) break;switch (choice) /*switch结构*/{case 1: /*case事件*/printf("输入入一个新的学生的记录");function1();break;case 2:printf("查询一个学生记录");function2();break;case 3:printf("插入一个学生记录");function3();break;case 4:printf("修改一个学生记录");function4();break;case 5:printf("登记学生成绩");function5();break;case 6:printf("删除学生成绩");function6();break;getch();}} while (0);}//菜单程序int menu(){int num;do /*do-while循环,也可以考虑用while循环加上break*/{system("cls");//清屏printf("***********************\n");printf("菜单:\n");/*输出MENU并换行*/printf("1: 输入一个新生的记录【1】\n");printf("2: 查询一个学生的记录【【2】\n");printf("3: 插入一个学生记录【3】\n");printf("4: 修改一个学生记录【4】\n");printf("5: 登记学生成绩【5】\n");printf("6: 删除学生成绩【6】\n");printf("0: 退出【0】\n");printf("***********************\n");printf("请选择选项:");scanf("%d", &num);} while (num<0 || num>5);/*while循环执行条件num<1或num大于4*/ return num;}//功能模块的具体实现部分//函数。