已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*实践教学* 兰州理工大学软件职业技术学院2009年秋季学期 计算机语言 课程设计题 目: 简单学生成绩程序设计 专业班级: 计算机网络 姓 名: 黄晓丽 学 号: 09780036 指导教师: 包广斌 成 绩:_2010年秋季期语言课程设计说明书学 院:软件职业技术学院 班 级:计算机网络技术学 号:09780036姓 名:黄晓丽提交日期:2010年1月13日目 录(一)文中摘要.关键字.1(二)前言2.(三)正文1. 程设计的目的3 2. 系统菜单的主要功能33. 题目分析34. 程序设计正文部分45. 设计测试流程10(四)参考文献11.(五)课程设计总结12摘要及关键字:引用库函数#include; 定义结构体数组typedef struct;菜单函数int menu_select();显示所有记录void Display;主函数main():录入函数Input():统计函数Statistic():查询函数Lookup():修改函数Modify(): 删除函数Delete():输出函数print(): 排序函数Sort(): 插入函数Insert();循环函数for():查找并显示一个记录void Query_a_record;从文件中读入数据int AddfromText;定义文件指针FILE *fp;指针函数strcpy():1页前言我刚刚接触C语言课程,深感学习C语言的难处,借这次设计的机会,在包广斌老师的指导下,我编写了简单学生成绩程序设计,该系统是我这学期实践课的课题。对于我学习掌握指针、结构体数组等数据类型有一定的帮助,使我对学习C语言的设计方法有一个全面的综合性的理解和提高。同时通过该设计达到提高本人的程序设计能力、提高本人今后的实践动手能力。 C语言是当今世界上最具影响力的程序设计语言之一,它的数据类型丰富,表达能力强,运输符多而灵活,程序结构性和可读性好,有利于培养良好的编程风格。它既具有高级程序设计语言的特点,又具有汇编语言的功能;既能有效地进行算法描述,又能直接对硬件进行操作;既适合于编写应用程序,又适合于开发系统软件。 简单学生成绩程序设计采用结构化程序设计,各函数模块功能单一,结构清晰,较好的利用了指针、结构体数组等数据类型以及不同的使用方法,将一些难以理解的指针、结构体数组等数据类型、函数调用以及文件操作等内容较好的融合到该系统中。2页简单学生成绩程序设计一、 课程设计目的:本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C+系统编程有一个大致的了解。二、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增) (8)从正文中添加数据到结构体数组中 (9)将所有数据写入文件中 (0)退出程序三 题目分析 该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。 菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语 言学过的技巧,下面就各个子程序中的功能进行说明: 功能1和4算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。 功能2是显示所有的记录,通过循环输出,格式也比较重要。 功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。 功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。 功能6算法在5中就已经体现了,输入姓名,一一比较。 功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计 3页功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。 功能8和9对文件的操作,提前准备好数据。四、程序正文部分 #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ char num10; /*学号*/ char name20; /*姓名*/ int score; /*成绩*/ Student; Student stu80; /*结构体数组变量*/ int menu_select() /*菜单函数*/ char c; do system(cls); /*运行前清屏*/ printf(tt*Students Grade Management System*n); /*菜单选择*/ printf(tt | 1. Input Records |n); printf(tt | 2. Display All Records |n); printf(tt | 3. Sort |n); printf(tt | 4. Insert a Record |n); printf(tt | 5. Delete a Record |n); printf(tt | 6. Query |n); printf(tt | 7. Statistic |n); printf(tt | 8. Add Records from a Text File|n); printf(tt | 9. Write to a Text file |n); printf(tt | 0. Quit |n); printf(tt*n); printf(tttGive your Choice(0-9):); c=getchar(); /*读入选择*/ while(c9); return(c-0); /*返回选择*/ int Input(Student stud,int n) /*输入若干条记录*/ int i=0; char sign,x10; /*x10为清除多余的数据所用*/4页while(sign!=n&sign!=N) /*判断*/ printf(tttstudents num:); /*交互输入*/ scanf(ttt%s,studn+i.num); printf(tttstudents name:); scanf(ttt%s,studn+); printf(tttstudents score:); scanf(ttt%d,&studn+i.score); gets(x); /*清除多余的输入*/ printf(tttany more records?(Y/N); scanf(ttt%c,&sign); /*输入判断*/ i+; return(n+i); void Display(Student stud,int n) /*显示所有记录*/ int i; printf(ttt-n); /*格式头*/ printf(tttnumber name scoren); printf(ttt-n); for(i=1;i1&i%10=0) /*每十个暂停*/ printf(ttt-n); /*格式*/ printf(ttt); system(pause); printf(ttt-n); printf(ttt); system(pause); void Sort_by_num(Student stud,int n) /*按学号排序*/ int i,j,*p,*q,s; char t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t); strcpy(t,studj+1.name); 5页strcpy(studj+1.name,); strcpy(,t); p=&studj+1.score; q=&studj.score; s=*p; *p=*q; *q=s; int Insert_a_record(Student stud,int n) /*插入一条记录*/ char x10; /*清除多余输入所用*/ printf(tttstudents num:); /*交互式输入*/ scanf(ttt%s,studn.num); printf(tttstudents name:); scanf(ttt%s,); printf(tttstudents score:); scanf(ttt%d,&studn.score); gets(x); n+; Sort_by_num(stud,n); /*调用排序函数*/ printf(tttInsert Successed!n); /*返回成功信息*/ return(n); int Delete_a_record(Student stud,int n) /*按姓名查找,删除一条记录*/ char s20; int i=0,j; printf(ttttell me his(her) name:); /*交互式问寻*/ scanf(%s,s); while(strcmp(,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(tttnot find!n); /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(studj.num,studj+1.num); strcpy(,studj+1.name); studj.score=studj+1.score; printf(tttDelete Successed!n); /*返回成功信息*/ return(n-1); void Query_a_record(Student stud,int n) /*查找并显示一个记录*/ 6页 char s20; int i=0; printf(tttinput his(her) name:); /*交互式输入*/ scanf(ttt%s,s); while(strcmp(,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(tttnot find!n); /*输入失败信息*/ return; printf(ttthis(her) number:%sn,studi.num); /*输出该学生信息*/ printf(ttthis(her) score:%dn,studi.score); void Statistic(Student stud,int n) /*新增功能,输出统计信息*/ int i,j=0,k=0,sum=0; float aver; /*成绩平均值*/ for(i=0;istudi.score) j=i; if(studk.scorestudi.score) k=i; aver=1.0*sum/n; printf(tttthere are records%dn,n); /*总共记录数*/ printf(tttthe hignest score:n); /*最高分*/ printf(tttnumber:%sname:%sscore:%dn,studj.num,,studj.score); printf(tttthe lowest score:n); /*最低分*/ printf(tttnumber:%sname:%sscore:%dn,studk.num,,studk.score); printf(tttthe average score is %5.2fn,aver); /*平均分*/ int AddfromText(Student stud,int n) /*从文件中读入数据*/ int i=0,num; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(tttInput the filename:); scanf(ttt%s,filename); /*输入文件名*/ if(fp=fopen(filename,rb)=NULL) /*打开文件*/ printf(tttcannt open the filen); /*打开失败信息*/ printf(ttt); system(pause); 7页 return(n); fscanf(fp,%d,&num); /*读入总记录量*/ while(inum) /*循环读入数据*/ fscanf(fp,%s%s%d,studn+i.num,studn+,&studn+i.score); i+; n+=num; fclose(fp); /*关闭文件*/ printf(tttSuccessed!n); printf(ttt); system(pause); return(n); void WritetoText(Student stud,int n) /*将所有记录写入文件*/ int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(tttWrite Records to a Text Filen); /*输入文件名*/ printf(tttInput the filename:); scanf(ttt%s,filename); if(fp=fopen(filename,w)=NULL) /*打开文件*/ printf(tttcannt open the filen); system(pause); return; fprintf(fp,%dn,n); /*循环写入数据*/ while(in) fprintf(fp,%-16s%-15s%dn,studi.num,,studi.score); i+; fclose(fp); /*关闭文件*/ printf(Successed!n); /*返回成功信息*/ void main() /*主函数*/ int n=0; for(n=0;=9;n+) 8页 switch(menu_select() /*选择判断*/ case 1: printf(tttInput Recordsn); /*输入若干条记录*/ n=Input(stu,n); break; case 2: printf(tttDisplay All Recordsn); /*显示所有记录*/ Display(stu,n); break; case 3: printf(tttSortn); Sort_by_num(stu,n); /*按学号排序*/ printf(tttSort Suceessed!n); printf(ttt); system(pause); break; case 4: printf(tttInsert a Recordn); n=Insert_a_record(stu,n); /*插入一条记录*/ printf(ttt); system(pause); break; case 5: printf(tttDelete a Recordn); n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ printf(ttt); system(pause); break; case 6: printf(tttQueryn); Query_a_record(stu,n); /*查找并显示一个记录*/ printf(ttt); system(pause); break; case 7: printf(tttStatisticn); Statistic(stu,n); /*新增功能,输出统计信息*/ printf(ttt); system(pause); break; 9页case 8: printf(tttAdd Records from a Text Filen); n=AddfromText(stu,n); /*新增功能,输出统计信息*/ break; case 9: printf(tttWrite to a Text filen); WritetoText(stu,n); /*循环写入数据*/ printf(ttt); system(pause); break; case 0: printf(tttHave a Good Luck,Bye-bye!n); /*结束程序*/ printf(ttt); system(pause); exit(0); 五、设计测试流程1、进入界面 2、输入选项1,回车; 按提示输入数据: 3、回到主菜单; 输入选项7,回车; 输入文件名:data.txt,回车; 出现成功提示,则读入文件操作成功。 4、回到主菜单,输入2,回车 每10个暂停显示数据 5、回到主菜单,输入3,回车 出现排序成功信息。 6、回到主菜单,输入4,回车 按提示插入一组数据 7、回到主菜单,输入5,回车 按提示输入姓名,删除数据 出现删除成功的信息 8、回到主菜单,输入6,回车 输入姓名进行查询 9、回到主菜单,输入7,回车 出现统计信息 10页10、回到主菜单,输入9,回车 输入result.txt,回车 出现成功写入文件的信息 11、回到主菜单,输入0,回车退出系统10页六、课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过此次学生成绩管理系统的设计,使我对C+程序设计有了深一步的了解,对系统设计及开发有了比较全面的思路。首先,通过对系统进行需求分析,确定各个功能函数;然后一个个具体地对他们进行编程,并且仔细检查看是否有错;在完成这一步之后才开始构造主函数,通过主函数把各个功能函数联系起来,编译修改错误和不足之处在实际编程过程中会遇到很多不同的错误,有时候是一些很明显很细节的语法错误,这些可以通过编译来查找错误的所在,然而那些并不明显难以查找的隐性错误却真让人头痛,没有办法只好利用断点调试来一步步检查代码中的错误,这样为了找一个错误花费了大量的时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年百特中秋国庆双节主题营销传播方案
- 宜宾市高县2025年面向社会公开招聘社区综合岗(8人)备考题库附答案解析
- 中国通信服务湖南公司2026秋季校园招聘历年真题汇编带答案解析
- 2026年陕西省选调生招录(面向西安电子科技大学)笔试模拟试卷附答案解析
- 四川省盐业集团宜宾有限公司2025年度营销人员招聘历年真题汇编附答案解析
- 2026年陕西省选调生招录(面向中国政法大学)笔试备考试卷附答案解析
- 2026年县直事业单位招聘公共基础知识真题200道附参考答案【黄金题型】
- 2025江西赣州市全南县选调机关事业单位人员13人历年真题汇编带答案解析
- 2025年11月沈阳市医疗卫生系统面向部分医学院校应届毕业生公开招聘175人历年真题库带答案解析
- 2025国家农业农村部食物与营养发展研究所评价认证中心科研助理招聘历年真题汇编附答案解析
- 四川美术学院2025年设计考研《64中外设计史》真题与试题解析及答案
- 雨课堂学堂云在线《医患沟通与调适(广州医大 )》单元测试考核答案
- 离职手续委托书范本
- JJF 1099-2018表面粗糙度比较样块校准规范
- GB/T 5095.2-1997电子设备用机电元件基本试验规程及测量方法第2部分:一般检查、电连续性和接触电阻测试、绝缘试验和电压应力试验
- 医疗卫生事业单位结构化面试题打印
- GB/T 12467.1-2009金属材料熔焊质量要求第1部分:质量要求相应等级的选择准则
- 2023年版毛概知识点归纳
- klar乐莱原材料成份与功效 图文课件
- 纳米材料合成方法-很全教材课件
- 唾液腺疾病影像学课件
评论
0/150
提交评论