ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:182.32KB ,
资源ID:5195818      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5195818.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(综合课程设计学生成绩管理系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

综合课程设计学生成绩管理系统.docx

1、综合课程设计学生成绩管理系统目录一、各功能模块程序流程图 2二、程序解析 5三、调试分析 7四、设计体会 8五、参考书目 9六、源代码 10一、各功能模块程序流程图:(1)学生成绩管理系统总流程图(图4.1) N Y (2)查询学生记录流程图(图4.3) Y N N(3)学生记录排序流程图(图4.5)(4)显示文件流程图(图4.7) Y N 二、程序解析1数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优

2、点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。且对结点的定义如下:typedef struct message_student /*结构体定义*/ char number6; char name20; char sex4; float subjectnumsubs; float score; float average; int index; studen2查询学生记录类C码算法:函数说明:#include stdio.h int findrecord(student stud) /*查找信息*/ 定义相关变量:char str2; int i,num;如果没

3、有保存文件:if(numstus=0) 输出没有可被查找的记录:printf(没有可被查找的记录n); 返回函数:return -1;否则,输出“按何种方式查询”:printf(以何种方式查找?n1.学号t2.姓名t3.名次n);选择1,按学号查找: if(str0=1) /*按学号查找*/ 输出“请输入学号”:printf(请输入学号:);进行for和if语句的循环,进行选择:for(i=0;inumstus)输出“没有查找所要的信息”printf(没有查找所要的信息。n);返回函数:return -1; 返回主函数:return i;三、调试分析错误结果分析 在实验过程中,我们遇到许多的问

4、题,但是在老师的指导下和同组成员的交流中得到了解决。其中,主要的错误有主函数mian()重复,缺少分号等。主函数main()重复(图5.10)缺少分号(图5.11)分号是C语句中不可缺少的一部分,语句末尾必须有分号。缺少或多加分号都会引起错误,下面是对这两种情况的简单分析:(a)忘记加分号: a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下,上一行是否漏掉了分号。 z=x+y; t=z/100; printf(%f,t); 对于复合语句来说,最后一个语句中最后的

5、分号不能忽略不写。 (b)多加分号: 对于一个复合语句,如: z=x+y; t=z/100; printf(%f,t); ; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 以上这些错误是由于对于课本知识的不熟悉,本来不应该出现的错误,却多次出现,说明对于课本知识不能够灵活的运用。四、设计体会C语言是一门计算机基础语言,通过这一学期的学习,对于它的一些特点和算法有了一定程度的了解,并能够做一些中等的题目,但并没有完全掌握。这周的课程设计正是让我们巩固以前的知识并在此基础上能够有所突破的好时机。C语言程序设计是过程性程序设计语言,它的发展贯穿了计算机发展的整个历程,它蕴含了程序设计的基本思想

6、,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。在C语言程序设计过程中,了解了Turbo C与Visual C+在使用过程中的不同之处。学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因,这样才能掌握其中的知识。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,C语言编程已经成为当今计算机应用中空前活跃的领域, 在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握

7、C语言的编译与开发技术是十分重要的。在同组人员的共同努力下,经过几天的奋斗,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料,相互合作是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序。回顾起此次C语言程序课程设计,至今我仍感慨颇多,从理论到实践,在编程的那些日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识

8、与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。五、参考书目1 杨路明. C语言程序设计教程.北京:北京邮电大学出版社,20052 杨路明.C语言程序设计上机指导与习题选解(第二版).北京:北京邮电大学出版社,20053 李莎等. Visual C+数据库通用模块与系统移植.北京:清华大学出版社,20074 林瑞仲等. C语言实例解析精粹.北京:人民邮电出版社,2005、六、源程序清单源程序清单(带注释)如下:#include stdio.h /*头文件名*/#include string.h #include malloc.h #defin

9、e LEN sizeof(struct message_student)/*一个结构体数组元素的长度*/ #define numsubs 4 /*学科数目*/ typedef struct message_student /*结构体定义*/ char number6; char name20; char sex4; float subjectnumsubs; float score; float average; int index; student; extern int numstus; /*学生数目*/ extern student *pointer; /*指向结构体数组*/ exter

10、n int lens; int menu_select(); /*函数声明*/ int openfile(student stu); int findrecord(student stud); int writetotext(student stud); void welcome(); void display1(); void showtable(); void sort(student stu); void deleterecord(student stu,int i); void addrecord(student stud); void display(student stud,int

11、 n1,int n2); void amendrecord(student stud); void count(student stud); void sortnum(student stud); void sortnum2(student stud); void sortname(student stud); void sortname2(student stud); void sortcount(student stud); void sortcount2(student stud); void statistic(student stud); void display1(); #incl

12、ude stdio.h int menu_select() /*界面显示*/ char c; printf(nn); printf( | 1. 增加学生记录 5.统计信息 |n); printf( | 2. 查询学生记录 6.打开文件 |n); printf( | 3. 修改学生记录 7.保存文件 |n); printf( | 4. 学生纪录排序 8.显示记录 |n); printf( | 0.退出系统 | n); printf(nn); printf(请选择(0-8):); c=getchar(); getchar(); return (c-0); #include stdio.h void

13、 sort(student stud) /*排序文件*/ int i,j=0; char str5; student *p; p=stud; if(numstus=0) printf(没有可供查询的记录!); while(1) for(i=0;i+) printf( 请输入查询方式:); printf((直接输入回车则结束查询操作)n); printf(1.按照学号t); printf(2.按照姓名t); printf(3.按照名次n); gets(str); if(strlen(str)=0) break; if(str0=1) printf(请输入排序次序:n); printf(1.升序排

14、列t); printf(2.降序排列n); gets(str); if(str0=1) sortnum2(p); else sortnum(p); display(stud,0,numstus-1); else if(str0=2) printf(请输入排序次序:n); printf(1.升序排列t); printf(2.降序排列n); gets(str); if(str0=1) sortname2(p); else sortname(p); display(stud,0,numstus-1); else if(str0=3) printf(请输入排序次序:n); printf(1.升序排列t

15、); printf(2.降序排列n); gets(str); if(str0=1) sortcount2(p); else sortcount(p); display(stud,0,numstus-1); else printf(请输入13); printf(是否退出排序?(y/n); gets(str); if(str0=y|str0=Y) break; return; void sortnum(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+

16、j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortnum2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j)

17、; *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;j0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;jstudj.index) t

18、emp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;inumstus;i+) for(j=0;jstudj+1.index) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; #includestdio.h #include void amendrecord(student stud) char password10;again:printf(请输入密码:);

19、scanf(%s,password);if(strcmp(password,123)=0)printf(密码确认!n); printf(请修改!n);elseprintf(密码不正确,请重新输入!n);goto again;char str5; /*供用户输入*/ int i=-1,j; if(numstus=0) /*没有记录返回*/ printf(没有可供修改的记录!); while(i=0) printf(要删除这个学生的信息吗?(y/n); gets(str); if(str0=y|str0=Y) deleterecord(stud,i); count(stud); else prin

20、tf(确定要修改这个学生的信息吗?(y/n); gets(str); if(str0=y|str0=Y) printf(下面请重新输入学生的信息:n); printf(请输入学号:n); gets(studi.number); printf(请输入姓名:n); gets(studi.name); printf(请输入性别(男/女 1/0):n); gets(str); if(str0=0) strcpy(studi.sex,女); else strcpy(studi.sex,男); studi.score=0; printf(请按顺序输入成绩:); for(j=0;j=0) for(j=i;j

21、numstus;j+) stuj=stuj+1; numstus-; printf(删除成功!n); void count(student stud) int i,j; for(i=0;inumstus;i+) studi.index=1; for(j=0;jstudi.score) studi.index+; #include stdio.h void addrecord(student stud) int i=0,j,num; char str4; if(numstus!=0) printf(已有记录存在是否覆盖?(y/n)n); gets(str); if(str0=Y|str0=y)

22、i=0; else i=numstus; printf(请输入增加的学生信息条目数:); scanf(%d,&num); if(i=0) numstus=num; else numstus+=num; if(numstuslens) lens+=50; pointer=(student *)realloc(pointer,lens*LEN); printf(请输入学生信息:n); for(;inumstus;i+) getchar(); printf(请输入学号:n); gets(pointeri.number); printf(请输入姓名:n); gets(pointeri.name); p

23、rintf(请输入性别(男/女 1/0):); gets(pointeri.sex); if(pointeri.sex0=0) strcpy(pointeri.sex,女); else strcpy(pointeri.sex,男); printf(请输入各科成绩:(按语文,数学,英语,政治的顺序):n); studi.score=0; for(j=0;j0) i=menu_select(); /*控制菜单*/ switch(i) case 1:addrecord(pointer);break; /*增加学生信息*/ case 2:findrecord(pointer);break; /*查询学生信息*/ case 3:amendrecord(pointer);break; /*修改学生信息*/ case 4:sort(po

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1