已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 工 业 学 院 课程设计学 号 200704033046 班 级 7403302 姓 名 范磊 指导教师 王 晓 岩 2009 年 3 月 5 日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业: 飞行器设计 班级:7403302学号:200704033046 题目:学生信息管理2一、课程设计时间20089第2学期第1周,共计1周,20学时。二、课程设计内容:用C语言编写程序完成以下任务:学生基本信息包括学号,姓名,计算机成绩,请编程序,实现如下的功能:(1)创建链表存放学生信息,并将学生信息保存到students.txt文件中。(2)显示学生信息。(3)修改指定学号的学生成绩并可存盘。三、课程设计要求:1贯彻结构化程序设计思想。2用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。3用户界面中的菜单至少应包括“创建链表”、“显示学生信息”、“学生成绩修改”、 “退出”4项。4代码应适当缩进,并给出必要的注释,以增强程序的可读性。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语沈 阳 航 院 设 计 用 纸目录一、需求分析2二、程序流程图2三、核心技术的实现说明及相应程序段5四、个人总结9五、参考文献10六、完整的源程序1017一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,它们的功能分别是:添加学生数据函数,删除数据函数,排序函数,成绩查询函数,更改学生数据函数以及显示学生信息函数。在这些函数当中,前四个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。1、创建链表 主要实现程序最初运行时学生数据的录入2、显示学生信息 实实现的是显示目前所有的有效学生记录信息。3、更改数据函数 可以实现对学生记录中除学号以外的信息进行修改;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名,以及计算机成绩,在程序当中,将学生记录类型定义为结构体类型,添加的学生信息直接写入D盘的student.txt文件中,其它函数每次对学生记录的访问,其数据来源都是student. txt文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图图1程序总体结构图2.具体功能框图(1)创建学生信息链表add真 打开文件students.txt不成功 假输出 “打开文件失败”,创建链表 分配内存地址单元 分配内存地址单元 输入学号等于0,(p1-num!=0)输入学号等于0,(p1-num!=0) 分配内存地址单元分配内存地址单元 输入学生信息输入学生信息 关闭文件关闭文件 返回HEAD结构指针值返回HEAD结构指针值图2建立链表(2)显示学生信息show()真 打开文件student.txt不成功 假 输出“不能打开文件!” 输出“学号 姓名 计算机成绩” 打开文件student.txt 返回 输出文件student.txt 返回 图2 显示学生信息(3)修改学生信息change()输入需要修改的学生的学号change真 打开文件student.txt不成功 假 输出打开文件失败 判断文件student.txt的长度n 真 作循环查找和change相同的学号 假 输入要修改的名字,成绩 输出“无此学生信息” 返回change 更新文件 写入新信息 返回 返回 图3 修改学生信息三、核心技术的实现说明及相应程序段本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,建立链表函数、信息显示、修改学生信息是程序中较为核心的部分,下面分别进行说明。1、建立链表函数 建立链表分为两种情况,其一是在学生文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件(student.txt)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下: void add() FILE *fp; if(fp=fopen(student.txt,w)=NULL)printf(不能打开文件!n); exit(0);int n=0;struct student *head;struct student *p1,*p2;p1=p2=(struct student *)malloc(LEN);printf(输入学号、姓名、计算机成绩,空格隔开,以0 0 0结束:n);scanf(%d %s %f,&p1-num,p1-name,&p1-score);head=NULL; while(p1-num!=0) fprintf(fp,%d %s %fn,p1-num,p1-name,p1-score);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct student *)malloc(LEN); scanf(%d %s %f,&p1-num,p1-name,&p1-score);p2-next=NULL;fclose(fp);2.学生信息显示该函数也分为两种情况,一是存在student.txt文件,使用个体getchar和putchar现实到屏幕上。另外的是不存在student.txt文件,显示不能打开文件。具体的程序段如下:void show()FILE *fp; if(fp=fopen(student.txt,r)=NULL)printf(不能打开文件!n);elseprintf(学号 姓名 计算机成绩n);while(!feof(fp)putchar(getc(fp);fclose(fp);3.修改学生信息先输入要修改的学生的学号,接着判断student.txt文件是否有此学号,有的话就输入要修改的学生姓名,计算机成绩。然后用写的方式打开student.txt文件,使student.txt文件刷新,将新的学生姓名,计算机成绩写入student.txt文件。如果没有此学号,那么输出“无此学生信息!”具体的程序段如下:void change() struct student stuN,change; printf(输入要修改的学生学号:); scanf(%d,&change.num); FILE *fp; int i=0,j,n; if(fp=fopen(student.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%d%s%f,&stui.num,,&stui.score); fclose(fp); n=i; for(i=0;i=n) printf(无此学生信息!n); return; printf(n请输入更改后学生的姓名和计算机成绩,按回车键确认:n); scanf(%s%f,,&change.score); stui=change; if(fp=fopen(student.txt,w)=NULL)/*更新文件*/ printf(打开文件失败!); return; j=1; for(i=0;in-1;i+) fprintf(fp,%d %s %fn,stui.num,,stui.score); fclose(fp);四、个人总结经过这一个星期的课程设计让我深深知道什么是课程设计,我觉得要想自己真正的做出比较好的课设,不仅要对老师所讲的内容理解透彻,还要对课本的主要内容深入学习,除了这些还不够,还要有老师的指导和程序例题的参考。当然在这几天里同学之间的帮助也是比不可少的,要谢谢杨俊堂同学,是他帮助我完成了比较复杂的程序段的编写。通过其他资源也可能更快的了解做题思路。其实学C语言要做到孰能生巧,面对问题要有解题的算法。通过这次课设让我对C语言产生了兴趣,对以后的学习会很有帮助的。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,2007六、完整的源程序#include #include #include #define NULL 0#define N 20struct studentint num;char name10;float score;struct student *next;#define LEN sizeof(struct student)void menu();void add();void show();void change();void main() while(1) int choice;menu(); printf(选择所需操作序号:);scanf(%d,&choice); switch(choice) case 1:add();break; case 2:show();break; case 3:change();break; case 4:exit(0); default:printf(n请输入存在的序号!n); void menu()printf(*学生成绩管理*n);printf( 1.创建链表 n);printf( 2.显示学生信息n);printf( 3.学生成绩修改n);printf( 4.退出n); void add() FILE *fp; if(fp=fopen(student.txt,w)=NULL)printf(不能打开文件!n); exit(0);int n=0;struct student *head;struct student *p1,*p2;p1=p2=(struct student *)malloc(LEN);printf(输入学号、姓名、计算机成绩,空格隔开,以0 0 0结束:n);scanf(%d %s %f,&p1-num,p1-name,&p1-score);head=NULL; while(p1-num!=0) fprintf(fp,%d %s %fn,p1-num,p1-name,p1-score);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct student *)malloc(LEN); scanf(%d %s %f,&p1-num,p1-name,&p1-score);p2-next=NULL;fclose(fp);void show()FILE *fp; if(fp=fopen(student.txt,r)=NULL)printf(不能打开文件!n);elseprintf(学号 姓名 计算机成绩n);while(!feof(fp)putchar(getc(fp);fclose(fp);void change() struct student stuN,change; printf(输入要修改的学生学号:); scanf(%d,&change.num); FILE *fp; int i=0,j,n; if(fp=fopen(student.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%d%s%f,&stui.num,,&stui.score); fclose(fp); n=i; for(i=0;i=n) printf(无此学生信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年【完整版】中国供应链管理行业市场定位策略研究报告
- 仰趾内翻足的护理课件
- 延髓动态未定肿瘤护理措施
- 晚发型Friedreich共济失调的护理课件
- 2026年施工完工验收的合同条款
- 2026年政策咨询服务协议
- 110国庆活动策划方案(3篇)
- 某种药品活动策划方案(3篇)
- 影楼十一活动策划方案(3篇)
- 广州冲浪活动策划方案(3篇)
- 景观模型设计课件
- 三角梅种植工程规划与施工方案
- 人教版高中生物选择性必修1《稳态与调节》必背知识考点提纲填空练习版(含答案)
- 劳动争议调解员培训课件
- 汕头村民住宅管理办法
- 油田开发项目数字化方案(模板范文)
- 面粉厂生产线技术改造项目建议书可研报告
- 债权清收委托协议书
- GB/T 45595-2025离心式制冷剂压缩机
- 2025年杀菌剂混剂项目可行性研究方案
- 二零二五年度联合办学协议书-体育教育专业合作发展框架协议
评论
0/150
提交评论