C语言课程设计报告-新生报到系统.doc_第1页
C语言课程设计报告-新生报到系统.doc_第2页
C语言课程设计报告-新生报到系统.doc_第3页
C语言课程设计报告-新生报到系统.doc_第4页
C语言课程设计报告-新生报到系统.doc_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

题目:新生报到系统一、课程设计时间 201011第2学期第15周,即6月13日6月17日,共计1周,20学时。二、课程设计内容 用c语言编写软件完成以下任务:(1) 录入新生的信息(学号、姓名、来自省份、专业、高考分数),并保存到磁盘文件中;(2) 新生报到签到;(3) 转专业;(4) 查询统计:可以按专业或来自省份查询符合条件的所有学生;(5) 退出。三、课程设计要求1. 程序质量:l 贯彻结构化的程序设计思想。l 用户界面友好,功能明确,操作方便,用户界面中的菜单至少应包括“新生信息录入”、“新生报到”、“转专业”、“查询统计”等选项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩六、教师评语沈阳航空航天大学设计用纸 目录一、需求分析1二、设计分析2三、主要界面截图9四、技术要点12五、个人总结14六、参考文献15七、源程序1627沈阳航空航天大学设计用纸一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。该系统是一个较典型的数据管理系统,其使用者被假定为某办公室的新生报到的管理人员,系统应该具有准确、稳定、功能齐全的特点。1.准确性分析:系统管理的数据涉及到学院的所有同学,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以该程序录入的信息必须准确,该程序录入信息后,一定要查询录入是否准确,然后才能进行任何步骤,这样就确保了录入信息的准确性。 2. 稳定性分析:指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。3. 主要功能分析:(1)数据输入:允许用户输入学号、姓名、专业、省份、高考分数。(2)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。文件的具体格式题目未作具体要求,所以可采用随机文件,也可采用文本文件。不管采用哪种文件形式,文件中的数据应有固定的格式,以便于程序自动读取或人工阅读。(3)数据查询:用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。当输入省份时,可查询到该学生的学号、姓名、高考成绩、到没到校、专业;当输入专业时,可查询到匹配的学生名单和信息。二、设计分析本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,录入信息函数、新生报到函数,转专业函数和查询函数是程序中较为核心的部分,下面分别进行说明。1、 录入信息函数:定义一个文件型指针变量fp,用(fp=fopen(stud.dat,wb)=null,若不能打开,输出(“不能打开文件”)从磁盘文件中读入新生的信息,并输入到结构体studi中,再经结构体studi和指针fp传递到磁盘文件中,实现文件的录入和保存。2、 新生报到函数:确立循环次数,再令用户输入报到学生的学号,用strcmp( )函数对用户输入学生学号与读入到结构体studi中成员学号进行比较,若相同,则报到成功(输出1)。3、 学生转专业函数: 学生转专业函数的功能是对学生信息进行修改,首先输入修改的学生学号,并且读取文件信息,判断学号是否相同,当学号相同时,重新输入学生信息。并且把信息保存到文件中。4、 查询统计函数:输入查询的专业或省份,用while循环实现查询。输入i=0,i增至100,就结束循环。输入省份或专业就可以查询出符合条件的学生。5、 主函数:输出菜单,并用switch语句定义了5个分支,实现多功能结构的选择。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。1、 程序整体流程图 图一 整体结构图2、录入学生信息流程图在学号处加over图二 录入学生信息流程图3新生报到签到流程图新 生 报 到定义文件类型指针 定义整形变量 i=0 输入一个学生的信息 、dao为 1、i自增1i小于100进行循环关闭文件,并且把学生信息输出到屏幕上 清 屏 退 出while 图三 新生报到签到流程图4转专业流程图 图四 转专业流程图 5查询统计流程图图五 查询统计流程图三、主要界面截图 图一 程序主界面截图图二 录入学生信息截图 图三 新生报到截图 图四 转专业截图 图五 按专业查询截图 图六 按省份查询截图 图七 退出截图四、技术要点1、结构体的应用定义了结构体用来描述学生的姓名、学号、专业、省份、高考分数。具体的定义如下:char sno12; char name10; char home20; char sc20; int bcome; float score;所定义的结构体主要用于定义数组。2、文件操作包括了文件的写入和读取两个方面。文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。例如如下程序段用于保存录入的学生信息:void write() int i=0; file *fp;if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0);while(tempi.sno!=null) fwrite(&tempi,sizeof(temp),1,fp); i+ ; 3、关于程序详细说明 (1)学生信息录入:定义一个文件型指针变量fp,从磁盘文件中读入新生的信息,并输入到结构体studi中,再经结构体studi和指针fp传递到磁盘文件中,实现文件的录入和保存。(2)新生报到:程序的主要内容是根据录入的学生信息,先判断文件是否能打开,如能打开文件,然后通过输入学生学号,实现新生报到,成功报到,用fwrite储存在磁盘文件中。(3)转专业:学生转专业函数的功能是对学生信息进行修改,首先输入修改的学生学号,并且读取文件信息,判断学号是否相同,当学号相同时,重新输入学生信息。并且把信息保存到磁盘文件中。(4)查询:实现从系统中查询专业与省份的相关信息,其实质是对数组某个或某些元素的查询操作。对数组元素的查询,用while循环实现查询,把查询的结果显示出来,这就实现了查询功能。(5)退出:只要输入服务类型5,按回车,然后按任意键就可以退出。五、个人总结 一周的c语言课设结束了,我学到了很多知识,积累了很多经验,我通过这次课设从新复习了c语言,发现编程并不是那么简单,而最难的就要数调试了,无论多么小的错误都可能是程序运行出错,我就是因为忘加一个括号,我整整用了一个多点才找出这个错误,真让我哭笑不得,这次c语言课程设计还消除了我对c语言的错误认识,以前认为c语言就是简单的学科,其实不然,通过这次c语课程设计,使我加深了对c语言的了解,也提高了c语言的应用能力。在多次查书翻资料请教老师同学之后,使我能够完成整个任务.这次课设使我熟练掌握知识的同时还增强了我的动手能力,使我受益终生。此程序的优点:储存数据大,查询功能强大,录入信息不能更改,保证安全性,且先录入学生信息,然后一定要查询看看录入没有,然后才可以执行任何步骤(1至5都可),保证准确性。缺点:程序中有些没用的重复语句,程序步骤较复杂,应简化些。六、参考文献1. 谭浩强c程序设计北京:清华大学出版社,20052. 刘成等c语言程序设计实验指导与习题集北京:中国铁道出版社,20063.袁蒲佳,唐谦等 c语言程序设计 华中科技大学出版社,2007年1月七、源程序#include#include#include#include#define n 100struct stud char sno12; char name10; char home20; char sc20; int bcome; float score;stud tempn;int number=0;/输入 学生信息/int input() stud temp; file *fp; printf(输入学生信息:(输入结束在学号处输over)n);if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0); while(1) printf(输入学生学号:); scanf(%s,temp.sno); if(!strcmp(temp.sno,over) fclose(fp);return 0; printf(输入学生姓名:); scanf(%s,); printf(输入学生来自省份:); scanf(%s,temp.home); printf(输入学生专业:); scanf(%s,temp.sc); printf(输入高考分数:); scanf(%f,&temp.score); temp.bcome=0; fwrite(&temp,sizeof(temp),1,fp); fclose(fp);/void write() int i=0; file *fp;if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0);while(tempi.sno!=null) fwrite(&tempi,sizeof(temp),1,fp); i+ ;/改变专业void change() file *fp;printf(输入新到学生的学生号:);char buffer_no12;char buffer_sc20;scanf(%s,buffer_no); int i=0; if(strcmp(buffer_no,tempi.sno)=0) while(strcmp(buffer_no,tempi.sno)=0)i+; if(i=n)printf(没有要找的学生信息); elseprintf(you); printf(所换专业:); scanf(%s,&buffer_sc); if(fp=fopen(stud.dat,rb)=null) printf(文件打开失败!); exit(0); fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); i=0; fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0); fwrite(&tempi,sizeof(temp),1,fp); printf(专业转换成功n); /elseprintf(you); printf(所换专业:); scanf(%s,&buffer_sc); int i=0; if(fp=fopen(stud.dat,rb)=null) printf(文件打开失败!); exit(0); while(strcmp(buffer_no,tempi.sno)!=0) fread(&tempi,sizeof(stud),1,fp);i+; fclose(fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0); i=0;if(strcmp(buffer_no,tempi.sno)=0&strcmp(tempi.sc,buffer_sc)=0)strcpy(tempi.sc,buffer_sc); while(strcmp(buffer_no,tempi.sno)!=0) fwrite(&tempi,sizeof(temp),1,fp);i+; printf(专业转换成功n);fclose(fp); /新生报到/void set() file *fp; printf(输入新到学生的学生号:); char buffer_no20; scanf(%s,buffer_no); int i=0;if(strcmp(buffer_no,tempi.sno)=0) while(strcmp(buffer_no,tempi.sno)=0)i+; if(i=n)printf(没有要找的学生信息); else if(fp=fopen(stud.dat,rb)=null) printf(文件打开失败!); exit(0); fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)tempi.bcome=1; i=0; fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)tempi.bcome=1; if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0); fwrite(&tempi,sizeof(temp),1,fp); printf(新生报到成功n); /else int i=0; if(fp=fopen(stud.dat,rb)=null) printf(文件打开失败!); exit(0); while(strcmp(buffer_no,tempi.sno)!=0) fread(&tempi,sizeof(stud),1,fp);i+; fclose(fp);if(strcmp(buffer_no,tempi.sno)=0)tempi.bcome=1; if(fp=fopen(stud.dat,wb)=null) printf(文件打开失败!); exit(0); i=0;while(strcmp(buffer_no,tempi.sno)!=0) fwrite(&tempi,sizeof(temp),1,fp);i+; printf(新生报到成功n);fclose(fp); /查询/void showstu()file *fp;int i=0;int m=-1;char a100;printf(输入查询条件:1、专业 2、来自省份:);scanf(%d,&m);switch(m)case 1:printf(输入查询专业:); scanf(%s,a); if(fp=fopen(stud.dat,rb)=null) printf(文件打开失败!);exit(0); printf(学号 姓名 来自省份 专业 分数 到校否n); while(fread(&tempi,sizeof(stud),1,fp)!=0) if(strcmp(tempi.sc,a)=0) printf(%s %s %s %s %.2f %dn,tempi.sno,,tempi.home,tempi.sc,tempi.score,tempi.bcome); i+; fclose(fp); break

温馨提示

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

评论

0/150

提交评论