已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
吉林工程技术师范学院C语言程序课程设计报告书设计题目: 学生成绩管理系统 专 业: 电子信息工程 班 级: 学生姓名: 学 号: 指导教师: 设计地点: 2010年5月6摘 要学生管理系统是一款简单实用的小程序,虽然外观看起来没有其他软件那样漂亮,但其功能却很实用。他可以帮你把学生成绩资料整理得井井有条,让你的效率大大提高。而其体积小不占内存更是其一大特点。本程序主要是真对学生成绩资料多、内容单一却不易于管理的特点而设计,其主作用是可以从众多的学生成绩资料中实现增、删、查、改、显示等功能,方便用户对繁杂的学生成绩资料进行管理。其程序的内容并不复杂。主要编程思想是通过用户输入选项,经由switch()函数进行判断,再由其调用各部分增、删、查、改、显示等功能的函数来实现。只是具体的子函数为满足某种功能和函数之间的调用会有一些复杂。学生成绩管理的功能实现了包要求用户输入数据,并将数据写入一定的文件中、需用时还可以读出来共查看。当然还有查找和排序的功能。这一切旨在学历并练习c语言的开发实践。本程序常用关键字:C语言,结构体,数组,指针,学生管理,成绩查询目 录摘要第一章 绪论11.1课题背景 11.2国内外研究状况 11.3本文研究目标和内容 1第二章 系统分析与概要设计 22.1 功能需要与性能需要 22.2 功能模块图 32.3 数据结构设计 32.4 函数功能设计 3第三章 详细设计 4第四章 系统实现 10第五章 测试与调试 17第六章 总结与心得 20附录一:所有原代码 21附录二:参考文献 27第一章 绪论1.1课题背景 C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗W卡尼汉和丹尼斯M利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:1兼备高级语言与低级语言的优点,属于一种中间语言。 2它是一种结构化程序设计语言,非常适合结构化程序设计。3有较丰富的数据类型、运算符以及函数供以选用。 4直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。1.2国内外研究状况随着多媒体技术、网络技术的日益成熟,教育正走向信息化和现代化。教育技术的发展不仅改变了教学手段、教学方法,同时也带来了教学内容、教学观念的更新。教学改革势在必行,网络教学成为当前计算机辅助教育的热点。据了解,国内一些院校和科研单位都不同程度地开展了网络教学系统方面的研究和开发,但仍未脱离传统的教学模式,缺乏系统性和实践性,特别是缺乏适合非计算机专业的C语言程序设计的网络教学系统。因此,开发出一套符合教学大纲要求,并具有较强系统性的实用C语言网络教学系统是十分必要的。国外教学系统目前就较未为成熟,国内水平较国外相对较落后,大多数存在的问题是查询时易出差,不易模糊查询,制作比较粗糙。1.3本文研究目标和内容通过对该程序的编写,更深一步了解C语言在编程中所起到的作用。对以后程序的开发,理解有了更进一步的认识。主要是对源函数和所需函数的变写,编译,链接,测试和调试。第二章 系统分析与概要设计2.1 功能需要与性能需要功能需要: 1能够输入学生的学号、姓名、三科成绩并且计算出平均成绩。2能够以表格的形式输出学生记录3能够按照学生三科的平均成绩进行排序4能够按照学生的单科成绩进行排序5能够按照学号查询学生记录6往表中插入学生记录7从表中删除学生记录8存储记录到文件中9从文件中读取记录10退出性能需求:需要系统反应快,安全稳定。2.2 功能模块图快速查找按姓名排序 按序号查找 保存读取录入显示查找删除插入开始文件复制菜 单显示单条记录 2.3 数据结构设计本程序的总体设计思路是跟据由用户输入选项,经过switch函数判断,通过各部分功能子函数实现所需功能。主要功能模块有对多人的户籍资料进行录入、显示、查找、删除、插入、保存、读取、按序号查找、按姓名排序、快速查找、文件复制、显示单条记录等。2.4函数功能设计各个函数的功能分别如下:void input()/*原始数据录入模块*/void sort()/*排序数据函数*/void display()/*显示数据函数*/void insert()/*插入数据函数*/void del()/*删除数据函数*/void save()/*保存数据函数*/void find()/*查询函数*/void average()/*求平均数*/void modify()/*修改数据函数*/void read()/*读取数据函数*/void del_file()/*删除文件函数*/第三章 详细设计3.1 流程图1、main()主函数模块实现调用其他各部分功能函数定义变量定义结构体数组Switc函数exit输入记录显示记录elect()=1各级函数反回length值break;list(rec,length);break;break;算法:定义循环变量i,结构体数组和接收记录条数length.设置无限环,调用各级子菜单函数选择需要的功能。2、enter()录入函数模块 输入记录定义变量初始循环值设置i=0ini+return n;按格式输入记录 算法:定义循环变量i,记录数n,变量i循环n次入n条记录3、list()显示函数模块 用于显示输入的记录inti;i=0in-1return nprint(ti);ch=y|ch=YYES算法:定义一个存放姓名的数组S10。调用find()函数进行判断,如果找到则系统提示是否确认删除,记录删除后,系统会自动将其后语句依次向前移动,重新排序。6、add()增加函数模块 追加一条新记录RECORDtemp;j=n-1j=ij-strcpy(,);return n;strcpy(tj+1.name算法:定义一个中间结构体数组temp,输入记录,find()函数自动找到相应排放位置,再利用中间结构体数组temp将其后面的记录依次向后移动。7、save()保存记录函数模块将输入的记录保存为文本形式算法:定义文件指针变量fp,打开要存储的文件record.txt,看文件是否已存在,如不存在,则新建一个,输入存入记录数n,保存文件。int i;打开文件printf(nSaving filen);printf(can not open filen);i=0ini+fclose(fp);写入记录8、load()载入记录函数模块读入已存档的文件int i,n;打开文件fscanf(fp,%d,&n);printf(can not open filen);i=0i=0&idnfclose(fp);YESprintf(no %d number record!n ,id);11、sort()按姓名排序函数模块 按姓名首字排序,方便查找。 算法:定义临时变量RECORD temp做交换数据用,设置标志flag=0判断是否发生过交换。strcmp(,tj+1.name)比较两个姓名排序,当发生排序时标志flag=1,排序后,显示排序成第四章 系统实现系统各模块(函数)的组成。功能、参数说明、相互调用关系1.main()主函数利用swithch(),do while文化实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 main() int as; start: printf(nttt欢迎您使用学生成绩管理系统n);do printf(ntttt1.录入学员信息ntttt2.显示学员信息ntttt3.添加学员信息ntttt4.删除学员信息ntttt5.修改学员信息ntttt6.查询学员信息ntttt7.保存学员信息ntttt8.退出n); printf(tttt选择功能选项:); fflush(stdin); scanf(%d,&as); switch(as) case 1:system(cls);input();break; case 2:system(cls);display();break; case 3:system(cls);insert();break; case 4:system(cls);del();break; case 5:system(cls);modify();break; case 6:system(cls);find();break; case 7:system(cls);save();break; case 8:system(exit);exit(0); default:system(cls);goto start; while(1); 2.void input()这是一个无参函数,用来执行第学生成绩记录的输入,输入的学生姓名,当学生姓名为0时停止输入,函数结束后,并记录其他的一些相关信息。void input() int i=0; char ch; do printf(tttt1.录入学员信息n输入第%d个学员的信息n,i+1); printf(n输入学生编号:); scanf(%d,&stui.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(); printf(n输入学员性别:); fflush(stdin); gets(stui.sex); printf(n输入学员成绩:); fflush(stdin); scanf(%f,&stui.score); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls);3.void display()这是一个不返回值的有参函数,负责对全部学生成绩记录的输出,在屏幕上进行显示,然而不足之处就是不能对学生成绩进行分页显示。void display() int i; char as; do printf(ttt班级学员信息列表n); printf(t编号t姓名t性别t成绩n); for(i=0;inow_no&0;i+)printf(t%dt%st%st%.2fn,stui.no,,stui.sex,stui.score); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls);4.void insert()这是一个有参函数,按照原来成绩进行插入,先输入学生的姓名,然后进行把该学生的所有信息插入其中。void insert() char ch; do printf(ntt输入新插入学员队信息n); printf(n输入学生编号:); scanf(%d,&stunow_no.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(stunow_); printf(n输入学员性别:); fflush(stdin); gets(stunow_no.sex); printf(n输入学员成绩:); fflush(stdin); scanf(%f,&stunow_no.score); printf(nn); now_no=now_no+1; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N);5.void del()这是一个有参函数,先输入要删除的学生记录的学号,找到后显示该学生信息,等确认后便可进行删除学生的记录。void del() int inum,i;int static j; printf(输入要删除学员的编号:); fflush(stdin); scanf(%d,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; break; system(cls);6.void save()这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件进行保存。void save() FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow_no;i+) fprintf(fp,t%dt%st%st%.2fn,stui.no,,stui.sex,stui.score); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls);7.void find()这是一个不返回值的有参函数,实现按学生姓名对某个学生进行查找,并显示所查找到的记录。void find() int i; char str20,as; do printf(输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) printf(t编号t姓名t性别t成绩n); printf(t%dt%st%st%.2fn,stui.no,,stui.sex,stui.score); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls);8.void modify()这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录修改并保存在电脑上由自己任意命名的二进制文件void modify() int i; static char str20,as; printf(输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) system(cls); printf(ntt输入新插入学员队信息n); printf(n输入学生编号:); fflush(stdin); scanf(%d,&stui.no); printf(n输入学员性别:); fflush(stdin); gets(stui.sex); printf(n输入学员成绩:); fflush(stdin); scanf(%f,&stui.score); printf(nn); break; system(cls);第五章 测试与调试5.11.程序运行时的“warning”对整个程序的影响?2.如果程序出现执行错误,硬如何修改?3.静态变量在该程序里的作用是什么?没有静态变量会带来什么后果?5.2(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!(2)刚开始执行输入函数,按学号顺序输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常顺序显示,但暂时没有成功。(3)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为0。(4)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,当学号为0的时候则停止输入。(5)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。(6)在没有输入任何信息的情况下,去执行排序功能,最后显示有一个记录,学号、姓名为空白,成绩都为0,名次为1。(7)在输入选项时不能输入字母,否则会死循环,建议不要乱输字母5.3在调试过程中如果在没有记录的存在一定要先输入记录才能使用以下的功能,否则会出现错误!第六章 总结与心得通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是完成了任务。课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。在设计中我们遇到了很多编程问题,最后在老师的指导下,我们慢慢的进入状态,我做的是一个简单的户籍管理程序设计,虽说简单但内容却包括很多。运用的函数也是比较复杂,在编程过程中首先完成了结构体,然后再跟据所要求功能一一设计其中子函数。几天的努力终于完成了程序的编写工作,但是运行的过程中总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,是我最大的问题,不过,通过看书复习和与同学探讨也把这个难题克服了。附录一:源代码#include #include #include #include #include #define MAX 100void input();void display();void insert();void del();void find();void save();void modify();int now_no=0;struct student int no; char name20; char sex4; float score;struct student stuMAX,*p;main()/*主函数*/ int as; start: printf(nttt欢迎您使用学生成绩管理系统n); /*一下为功能选择模块*/ do printf(ntttt1.录入学员信息ntttt2.显示学员信息ntttt3.添加学员信息ntttt4.删除学员信息ntttt5.修改学员信息ntttt6.查询学员信息ntttt7.保存学员信息ntttt8.退出n); printf(tttt选择功能选项:); fflush(stdin); scanf(%d,&as); switch(as) case 1:system(cls);input();break; case 2:system(cls);display();break; case 3:system(cls);insert();break; case 4:system(cls);del();break; case 5:system(cls);modify();break; case 6:system(cls);find();break; case 7:system(cls);save();break; case 8:system(exit);exit(0); default:system(cls);goto start; while(1);void input() int i=0; char ch; do printf(tttt1.录入学员信息n输入第%d个学员的信息n,i+1); printf(n输入学生编号:); scanf(%d,&stui.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(); printf(n输入学员性别:); fflush(stdin); gets(stui.sex); printf(n输入学员成绩:); fflush(stdin); scanf(%f,&stui.score); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls);void display() int i; char as; do printf(ttt班级学员信息列表n); printf(t编号t姓名t性别t成绩n); for(i=0;inow_no&0;i+)printf(t%dt%st%st%.2fn,stui.no,,stui.sex,stui.score); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls);void insert() char ch; do printf(ntt输入新插入学员队信息n); printf(n输入学生编号:); scanf(%d,&stunow_no.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(stunow_); printf(n输入学员性别:); fflush(stdin); gets(stunow_no.sex); printf(n输入学员成绩:); fflush(stdin); scanf(%f,&stunow_no.score); printf(nn); now_no=now_no+1; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N);void del()/*删除数据函数*/ int inum,i;int static j; printf(输入要删除学员的编号:); fflush(stdin); scanf(%d,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; break; system(cls);void save() FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务器机柜安装施工方案
- 废机油处置方案
- 2025年执业药师考试《中药学综合知识与技能》真题及答案
- 骨科护理中的质量控制与改进
- 护理记录安全管理的环境因素
- 2026年广东省深圳市34校中考英语二模试卷
- 羊水栓塞的实验室检查
- 天津市和平区2025届高三语文二模试题【含答案】
- 人防工程设计优化方案
- 胃癌患者的护理研究进展
- 赤子城科技-市场前景及投资研究报告-全球化社交娱乐公司灌木丛矩阵出海壁垒
- 2026上海市众仁慈善服务中心招聘20人备考题库含答案详解(夺分金卷)
- 中国红斑狼疮诊疗指南(2026版)
- 2026年北京西城区高三一模化学试卷及答案
- 内蒙古包头市2026届中考生物四模试卷含解析
- 雨课堂学堂在线学堂云《人工智能安全与伦理(北京航空航天)》单元测试考核答案
- 2026年安庆岳西县县级公立医院公开招聘专业技术人员12名考试备考题库及答案解析
- 水库护坡除草方案(3篇)
- 2025年软件开发环境考题及答案
- 2024年国家民委直属事业单位招聘笔试真题
- 中职《劳动教育》课程标准
评论
0/150
提交评论