程序设计基础报告书_第1页
程序设计基础报告书_第2页
程序设计基础报告书_第3页
程序设计基础报告书_第4页
程序设计基础报告书_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE25程序设计基础课程设计报告书设计题目班级成绩管理系统姓名李和桓专业班级信息管理及信息系统10-1班学号1010030106指导教师温廷新成绩工商管理学院信息管理系2011年3月目录TOC\o"1-2"\h\z\u一、引言 21.1课程设计目的 21.2实践依据 21.3拟创新点 31.4实践意义 3二、系统功能和原始数据 32.1原始数据 32.2系统功能 3三、程序总体设计 43.1数据结构 43.2模块划分和层次结构 43.3函数原型清单 63.4程序总体框架 6四、功能模块函数设计和调试 74.1模块函数的设计 74.2模块函数的调试 13五、程序清单 18六、课程设计总结 24七、参考文献 25一、引言1.1课程设计目的随着计算机技术的普及,计算机已成为各行各业最基本的工具之一。C语言作为国际上广泛流行的程设语言,它的功能强大,使用灵活,既具有高级语言的特点,又具有低级语言的特点;既可以编写系统软件,又可以编写应用软件。所以我们要好好掌握这门语言。C语言课程设计可以使我们进一步掌握C语言的运用和程序设计能力,培养我们的理解和运用程序化设计的思想和方法。1.2实践依据班级成绩管理系统这一题目贴近我们的生活,有很强的实践性,这一程序我运用switch语句对各个模块的分支选择,用结构体数组实现对学生数据的输入和整理,使整个程序能够并实现其功能。1.3拟创新点本程序运用switch语句实现各个模块的分支选择,简化了程序的结构,是程序表达简练,模块结构分明,方便程序的调试,switch语句的运用是本程序的一个创新点。通过函数的调用使整个程序层次分明,利于读程序,函数的调用是本程序的另一创新点。1.4实践意义班级成绩管理系统对于班集体学生成绩信息的管理有很大的帮助作用,通过这一程序可实现学生成绩的录入,排序等功能。同时在设计此程序时又可以将理论知识运用到实践当中,可以对课上知识更好的理解,曾强自己的运用能力,强化编程思维,所以此课程设计有很强的实践意义。二、系统功能和原始数据2.1原始数据1.数据录入:录入系统所需数据,运用结构体数组组织数据;2.数据显示:将输入的数据显示出来,用循环体来实现数组数据的显示;3.数据排序:对要求的数据进行排序,运用循环嵌套和冒泡法实现对学生平均成绩的降序排列。4.数据添加:根据需求添加所需数据;5.数据删除:根据需求删除指定数据,运用循环和条件语句实现。2.2系统功能此系统具有录入学生信息,显示学生信息,成绩排序,添加学生信息,删除学生信息,退出系统的六大功能。系统功能图如图2-1所示:主菜单主菜单录入学生信息显示学生信息成绩排序信息添加学生信息删除学生信息退出 图2-1图2-1三、程序总体设计3.1数据结构班级成绩管理系统采用一个结构体数组,学生信息数据结构如下:structstudent/*定义结构体数组*/{intno;/*定义整型变量学号no*/charname[20];/*定义字符串变量姓名name[20]*/charsex[4];/*定义字符串变量性别sex[4]*/floatscore1;/*定义浮点型变量成绩score1*/floatscore2;/*定义浮点型变量成绩score2*/floatscore3;/*定义浮点型变量成绩score3*/floatsort;/*定义浮点型变量排序sort*/floatave;/*定义浮点型变量平均成绩ave*/floatsum;/*定义浮点型变量总成绩sum*/}3.2模块划分和层次结构3.2.1模块划分本程序划分为七个模块,分别为功能选择模块,录入学生信息模块模块,显示学生信息模块,成绩排序信息模块,添加学生信息模块,删除学生信息模块和退出模块。功能选择模块:运用switch函数实现以下各个功能模块的分支选择。录入学生信息模块:调用input函数,主要使用scanf语句定义input函数,用来实现学生信息数据的录入。显示学生信息模块:调用display函数,主要使用for循环实现已输入学生信息数据的读取和输出。成绩排序信息模块:调用sort函数,采用for循环语句和冒泡法实现按学生平均成绩降序排序。添加学生信息模块:调用insert函数,运用do…while函数实现循环,运用gets语句实现结构体的输入。删除学生信息模块:调用del函数,用for语句的循环嵌套和if条件语句实现对指定学生信息数组的替换,达到删除学生信息数据的目的。退出模块:调用exit(0)函数,正常结束程序运行。3.2.2层次结构层次结构如图3-1所示:主函数主函数功能选择模块功能选择模块退出模块删除学生信息模块添加学生信息退出模块删除学生信息模块添加学生信息模块成绩排序信息模块显示学生信息模块录入学生信息模块息图3-1图3-13.3函数原型清单main()函数:主调函数,控制菜单函数提供用户选择界面input()函数:输入函数,学生数据输入。sort()函数:排序数据函数,将学生的平均成绩数据按降序排序。display()函数:显示数据函数,将输入的数据学生信息及成绩数据输出显示出来。insert()函数:插入数据函数,输入学生编号,之后输入学生的姓名,性别,各科成绩,建立一个数组,将此编号后的学生编号依次加一。del()函数:删除数据函数,输入要删除的学生编号,查找此编号下的学生数据,此数据被下一编号的学生数据替换,此编号之后的学生编号依次减一。3.4程序总体框架程序总体框架如图3-2所示:开始选择系统功能1~6开始选择系统功能1~6Break是执行input函数执行input函数Break是执行input函数执行input函数Case1是执行exit(0)函数BreakCase6Case5Case4Case3Case2是是否否否否否是执行exit(0)函数BreakCase6Case5Case4Case3Case2是是否否否否否否是是执行display函数执行sort函数执行insert函数执行del函数BreakBreakBreakBreak结束结束图3-2图3-2四、功能模块函数设计和调试4.1模块函数的设计4.1.1功能选择模块运用switch函数实现功能的分支选择,运用printf语句显示模块功能,使用scanf语句实现功能的选择。程序流程图如图4-1所示:开始选择系统功能1~6开始选择系统功能1~6Case1Case1是执行input函数Break执行input函数BreakCCase2CCase3Case4Case4CCase5Break执行exit(0)函数Break执行exit(0)函数Case6是是否是是否是是执行display函数执行sort函数执行insert函数执行del函数BreakBreakBreakBreak是否否否否否结束结束图4-1图4-14.1.2录入学生信息模块输入模块采用do…while函数进行循环控制,主要用printf和scanf函数实现数据的输入和输出。程序流程图如图4-2所示:开始开始i=0输入数据i++输出:是否继续输入?(y/n)输入:&chch==n清屏否否是是图4-2图4-24.1.3显示学生信息模块采用do…while循环控制,里面嵌套for循环,实现按照学生序号输出信息,运用printf语句输出。程序流程图如图4-3所示:开始开始输出所需文字输出所需文字i=0i=0stu[i]stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;输出:按任意键返回主菜单返回主菜单输出:按任意键返回主菜单返回主菜单输出学生信息i<now_noi++否否是是图4-3图4-34.1.4成绩排序信息模块采用for循环的嵌套使用和if条件语句构成冒泡法,实现对数据的降序排序并用printf语句输出。程序n-s图如图4-4所示:for(i=1;i<now_no;i++)for(j=1;j<=now_no-i;j++)if(stu[j-1].ave<stu[j].ave)假真stu[j-1].avestu[j-1].ave和stu[j].ave和stu[j].ave不互换位置互换位置清屏图4-4图4-44.1.5添加模块采用do…while循环控制。运用printf语句输出提示所需输入信息,运用scanf语句实现添加输入信息。函数流程图如图4-5所示:开始开始输出所需输入数据输入学生编号:&stu[now_no].no输入其他所需信息now_no=now_no+1输出:是否继续输入?(Y/N)输入字符:&chch==n清屏 否否是是是是图4-5图4-54.1.6删除学生信息模块采用for循环的嵌套和if条件语句实现对指定数据的替换,达到删除的目的,采用scanf语句实现指定需要删除数据的功能。函数流程图如图4-6所示:开始开始定义定义intinum,i,j输出:输出:输入要删除学员的编号输入编号&inum输入编号&inumi=0i=0否是stu[i].no==inum否是stu[i].no==inumi++i++j=ij=ij++j++stu[i]=stu[i+1]stu[i]=stu[i+1]否否j<now_noj<now_no是是图4-6清屏图4-6清屏4.2模块函数的调试4.2.1运行选择模块界面运行选择模块界面如图4-7所示:图4-7图4-74.2.2选择输入模块功能输入1,按回车键,界面如图4-8所示:图4-8图4-8每次输入数据按回车键显示所需输入的下一数据,最后若输入Y,重复上述输入,界面显示第二个学员信息,以此类推。界面显示如图4-9所示:图4-9图4-9若输入N.则返回主菜单界面显示如图4-10所示:图4-10图4-104.2.3选择显示学生信息模块功能输入5组学生数据,选择第二个功能项,界面如图4-11所示:图4-11图4-114.2.4选择成绩排序模块功能按任意键返回主菜单,之后选择排序功能模块从新输入学生数据,输入3,按回车键,界面显示如图4-12所示:图4-12图4-124.2.5选择添加学生信息模块功能按任意键返回主菜单,之后选择第四个添加功能模块,输入4,按回车键,界面显示是如图4-13所示:图4-13图4-13按照界面提示完成数据的输入最后输入n,(例如输入编号6,姓名ff,性别吧,语文成绩91,数学成绩98,英语成绩82,)界面显示如图4-14示图4-14图4-144.2.6选择删除学生信息模块功能按任意键返回主菜单,输入5,选择删除功能,显示界面如图4-15示:图4-15图4-15按照界面提示完成数据输入,(例如输入01),运行界面如图4-16示:图4-16图4-164.2.7选择退出模块功能按任意键返回主菜单之后,输入6,选择退出,界面显示如图4-17所示:图4-17图4-17按任意键程序停止运行,退出程序。五、程序清单#include<time.h>#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<math.h>#defineMAX50voidinput();voidsort();voiddisplay();voidinsert();voiddel();voidaverage();intnow_no=0;structstudent{intno;charname[20];charsex[4];floatscore1;floatscore2;floatscore3;floatsort;floatave;floatsum;};structstudentstu[MAX],*p;main()//主函数{charas;start:printf("\t\t\t欢迎使用学生成绩管理系统\n\n");//一下为功能选择模块do{printf("\n\t\t\t\t1.录入学生信息\n\t\t\t\t2.显示学生信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学生信息\n\t\t\t\t5.删除学生信息\n\t\t\t\t6.退出\n");printf("\t\t\t\t选择功能选项:");as=getch();switch(as){case'1':system("cls");input();break;case'2':system("cls");display();break;case'3':system("cls");sort();display();break;case'4':system("cls");display();insert();break;case'5':system("cls");del();display();break;case'6':system("exit");exit(0);default:system("cls");gotostart;}}while(1);//至此功能选择结束}voidinput()//原始数据录入模块{inti=0;charch;do{printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);printf("\n输入学生编号:");scanf("%d",&stu[i].no);fflush(stdin);printf("\n输入学员姓名:");fflush(stdin);gets(stu[i].name);printf("\n输入学员性别:");fflush(stdin);gets(stu[i].sex);printf("\n输入学员语文成绩:");fflush(stdin);scanf("%f",&stu[i].score1);printf("\n输入学员数学成绩:");fflush(stdin);scanf("%f",&stu[i].score2);printf("\n输入学员英语成绩:");fflush(stdin);scanf("%f",&stu[i].score3);printf("\n\n");i++;now_no=i;printf("%d",now_no);printf("是否继续输入?(Y/N)");ch=getch();system("cls");}while(ch!='n');system("cls");}voidsort()//排序数据函数{structstudenttemp;inti,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].ave<stu[j].ave){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}voiddisplay()//显示数据函数{inti;charas;floatave;do{printf("\t\t班级学员信息列表\n");printf("编号\t姓名\t性别\t语文成绩\t数学成绩\t英语成绩\t平均值\n");for(i=0;i<now_no;i++){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%d\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);}printf("\t\t按任意键返回主菜单.");as=getch();gotoexit;}while(as!='n');exit:system("cls");}voidinsert()//插入数据函数{charch;do{printf("\n\t\t输入新插入学员队信息\n");printf("\n输入学生编号:");scanf("%d",&stu[now_no].no);fflush(stdin);printf("\n输入学员姓名:");fflush(stdin);gets(stu[now_no].name);printf("\n输入学员性别:");fflush(stdin);gets(stu[now_no].sex);printf("\n输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score1);printf("\n输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score2);printf("\n输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score3);printf("\n\n");now_no=now_no+1;sort();printf("是否继续输入?(Y/N)");ch=getch();system("cls");}while(ch!='n');}voiddel()//删除数据函数{intinum,i,j;printf("输入要删除学员的编号:");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论