200704033007学生成绩管理2.doc_第1页
200704033007学生成绩管理2.doc_第2页
200704033007学生成绩管理2.doc_第3页
200704033007学生成绩管理2.doc_第4页
200704033007学生成绩管理2.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 200704033007 班 级 7403301 姓 名 邓德齐 指导教师 王 晓 岩 2009 年 3 月 6 日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器设计与工程 班级:7403301学号:200704033007 题目:学生成绩管理2一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写程序完成以下任务:学生基本信息包括学号,姓名,计算机成绩,请编程序,实现如下的功能:(1)创建链表存放学生信息,并将学生信息保存到students.txt文件中。(2)显示学生信息。(3)修改指定学号的学生成绩并可存盘。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“创建链表”、“显示学生信息”、“学生成绩修改”、 “退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语 沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段5四、课设总结10五、参考文献11六、源程序1115一、需求分析通过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,它们的功能分别是:创建链表函数,显示学生信息函数,修改学生信息函数,和退出程序功能。1、创建链表函数 主要实现程序最初运行时,链表的创建以及学生数据录入功能;2、显示学生信息函数 可以实现显示目前所有有效的学生记录信息的功能;3、修改学生信息函数 能够实现对已经记录的学生信息进行除学号以外的随意修改;4、退出程序功能 在程序运行所有目的均已达到后,根据需要终止程序的执行。每一个学生记录都包含学号、姓名,以及计算机成绩,在程序当中,将学生记录类型定义为动态链表类型,添加的学生信息直接写入D盘的students.txt文件中,其它函数每次对学生记录的访问,其数据来源都是students.txt文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)创建链表函数creat() 开辟一个新结点,并使p1,p2指向它读入一个学生数据给p1所指的结点 head=NULL,n=0 当读入的p1-num不是零 n=n+1 真 n=1? 假 head=p1(把p1所指的结点作为第 p2-next=p1(把p1所指的结点连接 一个结点) 到表尾) p2=p1(p2移到表尾) 再开辟一个新结点,使p1指向它 读入一个学生数据给p1所指结点 表尾结点的指针变量置NULL图2 创建链表函数(2)添加学生数据add()假 写方式打开D盘students.txt文件成功? 真 creat() 当stu!=NULL 学生信息写入文件 Stu指向下一个结点 关闭文件图3 添加学生数据函数(3)显示学生信息函数del真 读方式打开文件不成功? 假输出到屏幕 输出文件打不开关闭文件 return 图4 显示学生信息函数(4)修改学生信息函数change()结构体数组stu ,结构体变量t,循环变量i,整形变量n输入待删除的学生学号,赋给t.num 输入待删除的学生姓名和计算机成绩,赋给的puter 写方式打开D盘students.txt文件失败?假 真 循环变量i =0 当未到文件末尾 依次将学生学生信息赋给stu 输出文件打不开 i+ 关闭文件把i的值赋给ni=0当inum=t.num?真 假break i+ 将结构体变量t的值按格式赋给结构体数组stui 写方式打开D盘students.txt文件失败? return 真 假 输出打开文件失败 i=0 return 当inext,接着使p2=p1。再开辟一个结点,以此循环,直到输入的三个数据全为0为止。具体的程序段如下:struct student long num; char name20; float computer;struct student *next;int n;struct student *creat(void)struct student *head; struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);scanf(%ld %s %f,&p1-num,&p1-name,&p1-computer);head=NULL;while(p1-num!=NULL)n=n+1;if(n=1)head=p1;elsep2-next=p1;p2=p1;p1=(struct student *)malloc(LEN);scanf(%ld %s %f,&p1-num,&p1-name,&p1-computer);p2-next=NULL;return(head);2、添加学生数据函数该函数的核心内容是调用创建链表函数创建一个链表,从键盘输入学生数据,保存在链表中,再创建一个新文件,把链表中的数据写入到该文件中。具体程序段如下:void add()/*新建学生文件并添加信息*/ printf(n请依次输入每名学生的学号、姓名、计算机成绩,用空格分开,并按回车键确认!n 注:输入0 0 0结束!n);FILE *fp; struct student *stu; if(fp=fopen(d:students.txt,w)!=NULL) stu=creat(); dofprintf(fp,n%ld %s %f,stu-num,stu-name,stu-computer);/*学生信息写入文件*/ stu=stu-next;while(stu!=NULL);fclose(fp); printf(恭喜!成绩添加成功!n);3、学生数据显示函数显示学生数据所采用的方法是直接将文件输出到屏幕,而不是传统的将数据按指定格式输入到结构体数组或链表中,省时省力效果好。具体的程序段如下:void show()/*显示所有学生信息函数*/ FILE *fp; struct student *stu; int n; int i=0; printf( n !所有学生信息如下!n); if(fp=fopen(d:students.txt,r)=NULL) printf(文件打不开!n); return; else while(!feof(fp) putchar(getc(fp); fclose(fp); printf(n); getch();4、学生数据修改函数 该函数的核心内容是修改任意学生的信息,以及最终对源文件的更新。该函数执行时,首先以读方式打开文件,并将文件中的学生信息读入数组当中,再由用户输入待修改学生学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则修改该组数据,否则输出学生信息不存在的提示信息。对学生信息的具体修改是在结构体数组中实现的,当学生的信息被找到后,通过结构体变量t将其替换,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:void change()/*修改学生信息*/struct student sN,t; FILE *fp;int n,i; printf(n请输入要更改信息的学生学号,按回车键确认!); scanf(%ld,&t.num);printf(n请输入更改后学生的姓名、计算机成绩,按回车键确认!n);scanf(%s%f,,&puter); if(fp=fopen(d:students.txt,r)=NULL) printf(文件打不开!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%ld%s%f,&si.num,,&puter); fclose(fp);n=i; for(i=0;in;i+)if(t.num=si.num) break; si=t;if(fp=fopen(d:students.txt,w)=NULL)printf(文件打不开!); return;elsefor(i=0;in;i+) fprintf(fp,n%ld %s %f,si.num,,puter); fclose(fp); printf(学生信息修改成功!n);四、课设总结 做本次课设所用到的知识,如结构体、链表、文件等,都是以前上课时老师基本没有讲到的。但是通过阅读课本,再结合以前学的知识,我能够将其做出,说明我已经在这一学科上打下了一定的基础,以后可以通过自学来自我提高了。 由于链表和文件相结合的例子课本上并没有举出,所以本程序最终在修改功能上使用了结构体,虽然也达到了目的,但这样一来,前边的链表部分就变得没有意义了!五、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005六、源程序#include#include#include#define NULL 0#define N 50#define LEN sizeof(struct student)struct student long num; char name20; float computer;struct student *next;int n;struct student *creat(void)struct student *head; struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);scanf(%ld %s %f,&p1-num,&p1-name,&p1-computer);head=NULL;while(p1-num!=NULL)n=n+1;if(n=1)head=p1;elsep2-next=p1;p2=p1;p1=(struct student *)malloc(LEN);scanf(%ld %s %f,&p1-num,&p1-name,&p1-computer);p2-next=NULL;return(head);void add();void menu();void show();void change();void main()int n; while(1) menu(); printf(n请输入您要选择的操作序号,按回车确认:); scanf(%d,&n); switch(n)case 1: add();break; case 2: show();break; case 3: change();break; case 4: printf( 谢谢您的使用,再见!n);exit(0); default: printf(友情提示:暂时无法提供该项服务,请输入列表中存在的序号!n );void menu()printf( !#$%&*(*)(*)*&%$#!学生成绩管理系统!#$%&*(*)(*)*&%$#!); printf(n # * * 创建链表 .1 #); printf(n # * * 显示学生信息 .2 #); printf(n # * * 学生成绩修改 .3 #); printf(n # * * 退出 .4 #); printf(n ); void add()/*新建学生文件并添加信息*/ printf(n请依次输入每名学生的学号、姓名、计算机成绩,用空格分开,并按回车键确认!n 注:输入0 0 0结束!n);FILE *fp; struct student *stu; if(fp=fopen(d:students.txt,w)!=NULL) stu=creat(); dofprintf(fp,n%ld %s %f,stu-num,stu-name,stu-computer);/*学生信息写入文件*/ stu=stu-next;while(stu!=NULL);fclose(fp); printf(恭喜!成绩添加成功!n);void show()/*显示所有学生信息函数*/ FILE *fp; struct student *stu; int n; int i=0; printf( n !所有学生信息如下!n); if(fp=fopen(d:students.txt,r)=NULL) printf(文件打不开!n); return; else while(!feof(fp) putchar(getc(fp); fclose(fp); printf(n); getch();void change()/*修改学生信息*/struct student sN,t; FILE *fp;int n,i; printf(n请输入要更改信息的学生学号,按回车键确认!); scanf(%ld,&t.num);printf(n请输入更改后学生的姓名、计算机成绩,按回车键确认!n);scanf(%s%f,,&puter); if(fp=fopen(d:students.txt,r)=NULL) printf(文件打不开!n); return;

温馨提示

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

评论

0/150

提交评论