C语言课程设计5.doc_第1页
C语言课程设计5.doc_第2页
C语言课程设计5.doc_第3页
C语言课程设计5.doc_第4页
C语言课程设计5.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告目录第一章 程序设计目的及要求3 11设计目的312 设计要求3第二章 课程设计任务内容321 设计内容3第三章 程序设计说明3-731 方案设计3-432 模块说明4-73-2-1 输入模块53-2-2 查询模块53-2-3 删除模块63-2-4 排序模块73-2-5 统计模块7第四章 调试情况及运行结果842 在设计中的感受841 对自己的设计提出评价8参考文献附录第一章 课程设计目的及要求11设计目的1. 熟悉c语言的编译连接和运行过程。2. 掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。3. 掌握if语句及switch语句的运用方法及嵌套应用方法。4. 掌握实现循环结构的三种语句while、 do-while.、for 的使用。5. 掌握函数的定义方法和调用方法。6. 能够采用模块化思想调试程序。12 设计要求1. 该程序可用于对学生的成绩信息的存储、更新、查询、输出等操作,以实现对学生成绩的管理。2. 其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多个学生信息,也可对个别学生信息进行适当的删除或修改。以便随时更新学生信息。3. 程序中设计的查询功能可根据需要从若干数据中查询某个学生信息,并且可根据两种不同的方法查询:按学号查询和按姓名查询。以满足不同的需要。第二章 课程设计任务内容21 设计内容1. 编写程序并进行调试运行。2. 输入学生资料,并保存于文件。每个学生包含信息如:学号、姓名、班级、成绩信息等。3. 对已存入的学生信息进行更新操作,包括添加一个学生信息、删除某个学生信息和修改某个学生信息。4. 通过输入姓名、学号的方式查询学生信息。5最后输出学生信息,供需要时打印第三章 程序设计说明31 方案设计对系统进行分析,给出结构图 分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计 结构图如下:学生成绩管理系统 退出系统排序模块查询模块更新模块输出模块输入模块按平均分排序按英语排序按c语言排序按数学排序按总分排序按学号查寻按姓名查询 退出系统删除学生信息修改学生信息添加学生信息 退出系统32 模块说明1-2-2 输入模块录入需要管理的学生信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。流程图示:输入学生信息判断inum开始3-2-3 查询模块输入要按学号还是姓名查询,如果输入的是2则按学号查找,如果输入的是1则按姓名查找,如果输入0则退出,输入要查找的姓名或者学号然后开始查找,如果找到时此记录则输出,否则输出无此学生记录输入choice的值判断choice的值(switch语句)choice=1,按姓名查询利用for语句查找与输入姓名相同的学生并输出其信息,若未找到输出学生不存在choice=2,按学号查询利用for语句查找与输入学号相同的学生并输出其信息,若未找到输出学生不存在choice=0break开始3-2-4删除模块输入要按学号还是姓名删除,如果输入的是sum则再输入要删除学生记录的学号,根据输入的学号查找并删除,如有此记录则删除,无此记录则输出无此学生记录。如果输入的是name则再输入要删除学生记录的姓名,然后根据输入的姓名查找并删除,如有此记录则删除,无此记录则输出无此学生记录 输入choice的值判断choice 值按学号删除按姓名删除开始choice=numchoice=name输入学号是否有输入学号的记录删除该记录输出无此记录输入姓名是否有输入姓名的记录删除该记录输出无此记录有无有无3-2-5排序模块输入要按数学、英语、c语言、平均分还是总分排序,如果输入1则按数学排序,如果输入2则按英语排序,如果输入的是3则按c语言进行排序,如果输入的是4则按平均分进行排序,如果输入的是5则按总分进行排序,如果输入的是0则返回主菜单。然后根据输入的关键字排序,根据关键字排序。输入choice的值判断choice 值按总分排序按英语排序按c语言排序按平均分排序开始按数学排序choice=3choice=2choice=1choice=4choice=5breakchoice=0 3-2-6统计模块先输入要求的科目,如果输入的是1则求数学的及格率,如果输入的是2则求英语的及格率,如果输入的是3则求c语言的及格率,如果输入的是0则返回主菜单,然后求数学,英语或c语言的及格率 输入choice的值判断choice 值求数学的及格率求英语的及格率开始求c语言的及格率choice=1choice=3choice=2第四章 调试情况及运行结果41 对自己的设计提出评价此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可着毕竟是第一次独立完成这样的大程序,结果还不是太理想。由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示,如果成绩输的是负值程序也继续执行,这就给运用上带来一些不便;没有设计按各科成绩排序的功能。42 在设计中的感受本次c 语言的实习课让我对c 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。参考文献c语言程序设计(第四版) 谭浩强 清华大学出版社 2010年7月附录定义结构体#include#includestruct studentchar num10;char name10;char clas5;int math;int english;int c;int aver;int total;stud50;int sum;/*录入信息*/void input_message()int i=0;printf(* 输入学生个数: *n);scanf(%d,&sum);printf(t* 录入学生信息(最多%d个) *n,sum);printf(*n);doprintf( 第%d个学生,i+1);printf(n 学号:);scanf(%s,studi.num);printf(n 姓名:);scanf(%s,);printf(n 班级:);scanf(%s,studi.clas);printf(n 数学:);scanf(%d,&studi.math);printf(n 英语:);scanf(%d,&studi.english);printf(n c语言:);scanf(%d,&studi.c); studi.total=studi.math+studi.english+studi.c;studi.aver=studi.total/3;i+;printf(n);while(inum)!=0)p2=p1; p1=p1-next; if(p1!=null) printf(学号 姓名 班级 数学 英语 c语言 平均分 总分n); printf(%st%st%st%dt%dt%dt%dt%d,p1-num,p1-name,p1-clas,p1-math,p1-english,p1-c,p1-aver,p1-total); else printf(n *对*不*起*该*学*生*不*存*在* );/*添加学生信息*/insert_message() char choice;int i=sum; printf(t* 添加一个学生信息 *n); printf(*-*-*-*-*-*-*-*-*-*n); do printf(n 学号:); scanf(%s,studi.num); printf(n 姓名:); scanf(%s,); printf(n 班级:); scanf(%s,studi.clas); printf(n 数学:); scanf(%d,&studi.math); printf(n 英语:); scanf(%d,&studi.english); printf(n c语言:); scanf(%d,&studi.c); studi.total=studi.math+studi.english+studi.c; studi.aver=studi.total/3; sum+;i+; printf(n 要继续吗?(y/n); getchar(); scanf(%c,&choice); while (choice=y|choice=y); return;/*修改学生信息*/revise_message() int i=0; char choice; char revise_name10; do printf(n 输入要修改的学生的姓名:); scanf(%s,revise_name); for (i=0;isum;i+) if(strcmp(,revise_name)=0&!=0) printf(n 您要修改哪一项?n); printf(n 1、数学n); printf(n 2、英语n); printf(n 3、c语言n); printf(n 请选择(1-3):); scanf(%d,&choice); switch(choice) case 1: printf(n 输入修改后的数学成绩:); scanf(%d, &studi.math); break; case 2: printf(n 输入修改后的英语成绩:); scanf(%d, &studi.english);break; case 3: printf(n 输入修改后的c语言成绩:); scanf(%d, &studi.c);break; break; if (i=sum) printf(n 该学生不存在!); printf(n 要继续修改吗?(y/n); getchar(); scanf(%c,&choice); while(choice=y|choice=y); return; /*删除学生信息*/ void del_message() int choice; do printf(nn *删除学生信息* nn); printf( 1、按学生姓名删除n); printf( 2、按学生学号删除n); printf( 0、返回主菜单 n); printf( 请选择(0-2): n); scanf(%d,&choice); switch(choice) case 1: del_name(); break; case 2: del_num(); break; case 0: break; while(choice!=0); del_name() /按姓名删除 int i,j; char del_name10; char choice; do printf(n 输入要删除的学生姓名:); scanf(%s,del_name); for(i=0;isum;i+) if(strcmp(,del_name)=0 & !=0) for(j=i;jsum;j+) studj=studj+1;sum+; printf(n 删除成功!); break; if(i=sum) printf(n 该学生不存在); printf(nn 要继续修改吗?(y/n); getchar(); scanf(%c,&choice); while(choice=y|choice=y);/*成绩信息排序*/order_message() int choice; do rintf(nn *成绩名次信息* nn); printf( 1、按总分排名次n); printf( 2、按平均分排名次n); printf( 3、按数学排名次n); printf( 4、按英语排名次n); printf( 5、按c语言排名次n); printf( 0、返回主菜单 n); printf( 请选择(0-5): n); scanf(%d,&choice); switch(choice) case 1: order_total(); break; case 2: order_average(); break; case 3: order_math(); break; case 4: order_english(); break; case 5: order_c(); break; case 0: break; while(choice!=0); order_total() /按总分排名 struct student *p,*q50; int i,j,t; printf(nn 总分成绩名次 n); printf(*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*n); printf(学号 姓名 班级 数学 英语 c语言 平均分 总分n); p=stud; for(i=0;isum;i+) qi=p+; for(i=0;isum;i+) t=i; for(j=i+1;jtotaltotal) t=j; if(t!=i) p=qi;qi=qt;qt=p; for(i=0;inum,qi-name,qi-clas); printf(%dt%dt%dt%dt%dn,qi-math, qi-english,qi-c,qi-aver,qi-total); /*成绩统计*/tongji_message()int choice; do printf(nn *成绩及格率* nn); printf( 1、数学的及格率n); printf( 2、英语的及格率n); printf( 3、c语言的及格率n); printf( 0、返回主菜单 n); printf( 请选择(0-3): n); scanf(%d,&choice); switch(choice) case 1: tongji_math(); break; case 2: tongji_english(); break; case 3: tongji_c(); break; case 0: break; while(choice!=0);tongji_math() /求数学的及格率int i,n=0,s;for(i=0;i=60)n+;s=n/sum*100;printf(输出数学的及格率:%2.2f%n,s);

温馨提示

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

评论

0/150

提交评论