C语言课程设计-学生信息管理系统2.doc_第1页
C语言课程设计-学生信息管理系统2.doc_第2页
C语言课程设计-学生信息管理系统2.doc_第3页
C语言课程设计-学生信息管理系统2.doc_第4页
C语言课程设计-学生信息管理系统2.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计 报 告课程名称 C语言程序设计 课题名称 学生信息管理系统 专 业 电子信息 班 级 0802 学 号 34 姓 名 谢颖 指导教师 肖伟平 罗敬 肖彬 2009年 6 月 19 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 学生信息管理系统 专业班级 电子信息0802班 学生姓名 谢颖 学 号 34 指导老师 肖伟平 罗敬 肖彬 审 批 任务书下达日期 2009 年 6 月 19日任务完成日期 2009 年 6 月 30 日一、设计内容与设计要求1 设计内容:学生信息管理系统设计涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句; 掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。2 设计要求:1) 用C语言实现系统;利用结构体数组实现学生信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。2) 建立一个学生信息数据库,文件名为xsxxk.txt,并从该文件中读取数据;3) 学生信息管理系统应能提供以下功能:系统以菜单方式工作学生信息显示功能学生信息追加功能学生信息查询功能(要求能分别按学号查询和按姓名查询)学生信息的删除学生信息的修改按学生年龄排序(升序)4) 说明:(1) 要求将修改后的数据写入到一个新的数据文件nwestudk.txt中。(2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。5) 学生信息管理系统采用一个结构体数组,学生信息数据库结构如下:学生信息包括:学号,姓名,性别、年龄,出生年月,地址,电话,E-maillong int xh /*学号*/char name10 /*姓名*/char xb4 /*性别*/int nl /*年龄*/ char czrq10; /*出生年月*/char address10 /*地址*/ char phone15 /*电话号码*/ char e_mail20 /*E-mail*/注意:学号不重复,且数据库应有10条或以上的记录。6) 要求:1 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。二、进度安排第 18 周 星期五 8:0012:00 星期日 15:0018:00第 19 周 星期一 19:00 22:00星期三 8:0012:00 星期四 14:30 17:30附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。 目录一. 认真分析-2(1) 程序功能-2(2) 输入输出要求-2二. 总体设计- 2三. 模块功能详细设计分析-4四. 调试分析及体会-5五 流程图-6六.部分运行界面截取图-14七心得体会-13八.附件-141源程序-142参考书目-22九.评分表一.认真分析: (1)程序功能 该程序是一个实现对学生信息管理的系统。包括显示,追加,修改,删除,查找,排序,及退出等功能。输入学生的学号、姓名及信息对其进行存储,在存储后可以对学生的信息按学号和姓名进行查寻。该系统具有存贮学生数据,按学号、姓名查询,列出学生信息和统计功能。系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。(2)输入输出要求学号输入只能用数字输入,姓名输入只能用字符。此程序在BC2.0下运行通过。二.总体设计:(1) 抽象数据类型定义 学生信息数据库结构: 数据库学生信息包括:学号,姓名,性别、年龄,出生年月,地址,电话,E-maillong int xh /*学号*/char name10 /*姓名*/char xb4 /*性别*/int nl /*年龄*/ char czrq10; /*出生年月*/char address10 /*地址*/ char phone15 /*电话号码*/ char e_mail20 /*E-mail*/注意:学号不重复,且数据库应有10条或以上的记录。(2)程序的模块及其功能和关系 该程序由9个模块组成,由主函数调用计算,显示,添加,删除,修改,排序,查找,统计及其退出等模块.下面将介绍每个模块的功能及与他们之间的关系. 模块图如下: 主菜单模块Main()删除模块 查询模块修改模块追加模块 排 序 成 绩 退 出 统 计 显示模块(3)主函数分析主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。各调用情况如下: case 1调用显示函数、case 2调用追加函数、case 3调用修改函数、 case 4调用删除函数 、 case 5调用查询函数、 case 6调用排序函数、case 7调用退出函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。运行主函数选择菜单框图:三模块功能详细设计分析1显示模块:Void Disp( ) 这个模块的主要功能是用来显示班级中所有人学生信息。在主菜单中选择“1”就可以进入这个模块界面。这个功能的实现是用了一个for循环来完成的。通过这个循环printf()函数依次输出每一个人的学号,姓名,性别,年龄,出生年月,地址,电话号码,E-mail。最后在界面上显示所有人的信息因此我们可以浏览所有人的信息。2追加模块:Void Appe()本模块的主要功能是添加几个人的记录。在主菜单中键入“2”就进入次模块。在这个模块中首先提示输入需要增加的人数,然后用一个for 循环控制。在for循环中包括printf和scanf函数,依照提示依次输入:学号,姓名。再调用计算函数Caculate( )及显示函数Disp( )。3修改模块:void Modi( )本模块的主要功能是按学号查找相应的记录,然后系统判断学号是否存在,如果不存在将提示用户,如果存在再根据提示语句,用户可以按要求修改记录中除学号,姓名以外的指定内容,可按照用户要求修改对应信息,可由用户自行控制修改人数,并重新显示。在主菜单中键入“3”,就可以进入这个模块。此模块是通过if-else和while循环嵌套控制实现的。如果输入的信息不存在系统就提示信息提醒。修改成功系统提示修改成功的语句。4删除模块:Void Dele( )此模块的主要功能是用来删除班级信息管理。可按指定学号,姓名删除记录并重新显示。在主菜单中选择输入“4”就可以进入这个模块的界面。这个模块的设计是通过switch、if-else和for循环嵌套控制实现的。如果输入的信息不存在系统就提示信息提醒。5.查询模块:Void Query( )这个模块可以按学号或姓名查询;然后系统判断所输入信息是否存在,如果存在将显示该人的信息。这个模块是通过字符串比较函数、if-else和for循环嵌套控制实现的。如果输入的信息不存在系统就提示信息提醒。6排序模块:Void Sort( )该模块通过对年龄的排序。运用字符串复制函数,双重for循环嵌套及if语句进行排序。8 退出模块: Void Quit( )该模块是推出全部程序.四程序调试分析 1在调用显示函数前应先调用信息函数,否则显示的信息信息都为零。2在输入函数中设了一个无限循环,可以输入无数个学生的信息,但是不方便退出,后来用了一个输入函数输入要输入的学生信息的个数,在用循环控制,这样就方便多了。3输入太多个学生的信息时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录。4在程序调试的时候,出现函数名变成未定义字符,经过分析后发现是没有在程序的 前面些程序包含的语句,加上前面的头文件包含后就没有这个错误了.5在程序中需要输入的项太多,故在每个输入项前应加一个提示输入项,提示用户输入正确的信息。五.部分运行界面截取图1 、显示模块运行截面图运行程序菜单框图中选则1,按回车。运行结果如下图:结果是显示所有输入的学生的信息2、追加模块运行截面图运行程序菜单框图中选则2, 按回车。运行结果如下图:结果是增加了一个学号为205的学生的信息. 3、修改模块运行截面图结果是根据名字换了姓名.把xieying换成了heshang.从而修改了程序4、删除模块运行截面图结果是删除了学号为234的学生的全部信息.5、查询模块运行截面图根据学号查询出了学号为235的学生的全部信息.6、排序模块运行截面图输入6根据年龄把所有的学生按从小到大的顺序排成序.7、退出模块运行截面图输入7执行退出程序任务.六、流程图1、总体设计流程图主函数流程图:读 入 数 据 菜单界面 输入选择值 menu-selcet() 执行显示函数执行追加函数执行修改函数执行删除函数执行查询函数执 行 排 序 函 数执 行 退 出 函 数 创建新数据库结束2、修改模块流程图输入学号输入修改项目设置标志变量判断条件Switch退出循环判断学号3、查询模块流程图 输入姓名或学号判断姓名或学号是否存在设置标志变量判断条件Switch退出循环七心得体会课程设计这一周感受颇深。我想说实践是检验真理的唯一标准。尤其对于C语言这门对动手能力要求很高的学科。有很多程序你编了也检查了但也许就是发现不了错误,但只要一上机操作隐含的问题就全面暴露出来了。C语言课程设计是一门细致的活。正如熟话所说的:一招不慎,满盘皆输。一个错误的存在整个程序就运行不出结果。对于基础不太牢固的我来真是一个考验,同时有时一个挑战。它需要耐心、仔细和坚持。说句老实话正如肖老师预言的在课程设计的前两天我是在失望、痛苦、焦虑和茫然中度过。一开始我编的程序存在很多问题,这些问题使我头都大了。就拿建立数据库来说我就建了不下十个。真的是无从下手也不知所措!怎么做怎么错,失败全面打击着我。万事开头难,课程设计是前所未有的难。痛定思痛,我强迫自己冷静下来:先弄懂设计思路从整体上对课程设计有一个清晰的了解,接下来就开始着手模块的设计。由于之前受了太多打击,接下来显示模块的成功出世给了我极大的安慰。再接下来的追加、删除、修改和查询模块就顺手多了,因为我找到了一点自信。C语言程序设计既是一个整体,同是各个模块之间相互独立又紧密联系。因为有规律可循,后四个模块基本上就是switch、if-else和for语句的嵌套使用,当然还有基本输入输出函数的大量使用。找到正确的方法才能得出结果。在课程设计的过程中我遇到了很多问题,有过很多茫然,我觉得这是一个既艰辛又快乐的过程。在这个过程中我学到了很多。关于C语言关于人生。碰壁,碰壁,碰多了就会学会。也许真的就是那最后的坚持铸就了程序的结果。更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。通过对数据结构的课程设计,我了解并发现了很多调试程序的方法,而且懂得了如何处理错误的方法。对C语言的使用得到了进一步的提高。针对数据结构的书本知识得到了进一步的巩固,具体化就是加深了我对线性表的结构的理解查找的方法,数的排序等。对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。结构设计的合理性决定了这个程序的价值。在今后的学习中我要注意这方面,使得我的编程能力能有进一步的提高。经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。经过上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。相信这次的课程设计为我以后使用计算机打了一个小小的开头,这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!。我发现现在对于C语言我很感兴趣。课程设计这一周我花了不少时间,流了不少汗水。这说明了一个道理:没有付出就没有收获!八.附录 1源程序#include stdio.h#include string.h#include conio.hint N=0;struct stu long int xh; /*学号*/ char name10; /*姓名*/ char xb4; /*性别*/ int nl; /*年龄*/ char czrq10; /*出生年月*/ char address10; /*地址*/ char phone15; /*电话号码*/ char e_mail20; /*E-mail*/ s40;void Re_file() FILE *fp; fp=fopen(e:xsxxk.txt,r); while( fscanf(fp,%ldn%sn%sn%dn%sn%sn%sn%sn,sN.xh,sN.name,sN.xb,sN.nl,sN.czrq,sN.address,sN.phone,sN.e_mail)!=EOF) N+; fclose(fp); void Wr_file()int i; FILE *fp; fp=fopen(e:newstudk.txt,w); for(i=0;iN;i+) fprintf(fp,%ldn%sn%sn%dn%sn%sn%sn%sn,si.xh,,si.xb,si.nl,si.czrq,si.address,si.phone,si.e_mail); fclose(fp);void Disp() /*显示模块*/ int i;printf( *n);printf(xh name xb nl czrq address phone e_mailn);printf( *n);for (i=0;iN;i+)printf(%-8ld%-10s%-5s%-5d%-10s%-10s%-9s%10sn,si.xh,,si.xb,si.nl,si.czrq,si.address,si.phone,si.e_mail);void Appe() /*追加模块*/ int m,n;printf(please input the number you want to addn);scanf(%d,m);n=N+m;scanf(%ldn%sn%sn%dn%sn%sn%sn%s,sN.xh,sN.name,sN.xb,sN.nl,sN.czrq,sN.address,sN.phone,sN.e_mail); N+;void Modi() /*修改模块*/ int m,n,x,k=0,i,j,t;char st20; printf( * 1.xuehao 2.name *n); scanf(%d,m); if(m=1) printf( * Please input xuehao! *n); scanf(%d,n); for(i=0;iN;i+) if(n=si.xh) k=1;j=i; else if(m=2) printf( * Please input name! *n); scanf(%s,st); for(i=0;iN;i+) if(!strcmp(,st) k=1;j=i; if(k=1) printf( *n); printf( * 1.xuehao 2.name *n); printf( * 3.sex 4.age *n); printf( * 5.date 6.address *n); printf( * 7.phone 8.e-mail *n); printf( *n); scanf(%d,x); switch(x) case 1: scanf(%d,t);sj.xh=t; break; case 2: scanf(%s,st);strcpy(,st); break; case 3: scanf(%s,st);strcpy(sj.xb,st); break; case 4: scanf(%d,t);sj.nl=t; break; case 5: scanf(%s,st);strcpy(sj.czrq,st); break; case 6: scanf(%s,st);strcpy(sj.address,st); break; case 7: scanf(%s,st);strcpy(sj.phone,st); break; case 8: scanf(%s,st);strcpy(sj.e_mail,st); break; else printf( * Eorr! *n); void Dele() /*删除模块*/ int m,n,k=0,x,y; char str10; printf( * 1.xh 2.name *n); scanf(%d,m); if(m=1) printf( * Please input xh! *n); scanf(%d,n); for(y=0;yN;y+) if(n=sy.xh) k=1;x=y; else if(m=2) printf( * Please input name! *n); scanf(%s,str); for(y=0;yN;y+) if(!strcmp(,str) k=1;x=y; if(k=1) for(y=x;yN-1;y+) sy.xh=sy+1.xh; strcpy(,sy+1.name); strcpy(sy.xb,sy+1.xb); sy.nl=sy+1.nl; strcpy(sy.czrq,sy+1.czrq); strcpy(sy.address,sy+1.address); strcpy(sy.phone,sy+1.phone); strcpy(sy.e_mail,sy+1.e_mail); N-; else printf( * Eorr! *n); void Query() /*查询模块*/ long l; int m,n; char st10; printf(1:xh or 2: namen); scanf(%d,n); if(n=1) printf( * Please input xh! *n); scanf(%ld,l); for(m=0;mN;m+) if(l=sm.xh) printf(%-8ld%-9s%-8s%-8d%-13s%-12s%-10s%-11sn,sm.xh,,sm.xb,sm.nl,sm.czrq,sm.address,sm.phone,sm.e_mail); break; if(n=2) printf( * Please input name! *n); scanf(%s,st); for(m=0;mN;m+) if(strcmp(,st)=0) printf(%-8ld%-9s%-8s%-8d%-13s%-12s%-10s%-11sn,sm.xh,,sm.xb,sm.nl,sm.czrq,sm.address,sm.phone,sm.e_mail); void Sort() /*排序*/ int m,n; struct stu

温馨提示

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

评论

0/150

提交评论