沈 阳 航 空 工 业 学 院
课程设计
学 号
班 级
姓 名
指导教师 王 晓 岩
2009 年 6 月 30 日
沈阳航空工业学院
课程设计任务书
院系: 专业:
班级
班级管理量化考核细则初中班级管理量化细则班级心理健康教育计划班级建设班级德育计划
:
学号: 题目:同学通讯录信息管理
一、课程设计时间
2008年6月23日至2008年6月27日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
能够对同学的通讯信息进行数字化管理,人数不少于3人。通讯信息应保存到文件myfile.dat中。
三、课程设计要求
1. 程序质量:
? 贯彻结构化的程序设计思想。
? 用户界面友好,功能明确,操作方便。
? 用户界面中的菜单至少应包括“同学信息录入”、“同学信息查询(根据姓名,或编号等)”、“显示全部同学信息”、“退出”4项。
? 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:________ 学生签名:________
五、说明书成绩
六、教师评语
目 录
一、需求分析 1
二、程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图 2
三、核心技术的实现说明及相应程序段 5
四、课设
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
9
五、参考文献 9
六、源程序 10
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为九个模块,每一个模块对应一个函数。在这些函数当中,添加学生数据函数,删除数据函数,排序函数,成绩查询函数的实现严格按照题目的要求,而更改数据函数和显示函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
1. 添加学生数据函数 主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;
2. 删除学生数据函数 实现的功能是按照学号对学生的数据记录进行删除;
3. 排序函数 按照题目的具体要求实现的是总成绩的递减排序以及名次显示,其中总成绩相同者名次相同;
4. 成绩查询函数 允许按照学号对学生的各科成绩进行查询;
5. 更改数据函数 可以实现对学生的各项信息进行修改;
6. 显示函数 实现的是显示目前所有的有效学生记录信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名,以及英语、计算机和数学三门成绩,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入E盘的student.txt文件中,其它函数每次对学生记录的访问,其数据来源都是student.txt文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1. 程序总体结构图
图1程序总体结构图
2. 具体功能框图
(1)添加学生数据函数add
图2 添加学生数据函数
(2)读取学生数据函数reads
图3读取学生数据
(3)删除学生记录函数del
图4 删除学生记录
(4)按总分排序函数sort
图5按总分排序
三、核心技术的实现说明及相应程序段
本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。
1. 添加数据函数
添加数据分为两种情况,其一是在学生文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件(student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:
if((fp=fopen("e:\\student.txt","a"))==NULL) /*如果文件已经存在,可以追加学生信息*/
{
if((fp=fopen("e:\\student.txt","w"))==NULL) // 文件不存在时,创建新文件,输入学生信息
{
printf("文件打开失败!\n");
return;
}
}
printf("请输入要添加的学生数量,按回车键确认:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:\n",i);
scanf("%s%s",stu.num,stu.name);
printf("\n请输入第%d个学生的英语、计算机和数学三门成绩,用空格分开,并按回车键确认:\n",i);
scanf("%f%f%f",&stu.english,&stu.computer,&stu.math);
fprintf(fp,"%s %s %f %f %f\n",stu.num,stu.name,stu.english,stu.computer,stu.math);
}
2. 删除数据函数
该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待删除学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则采用删除算法删除,否则输出学生信息不存在的提示信息。对学生信息的具体删除算法是在结构体数组中实现的,当学生的信息被找到后,位于数组中该学生后面的学生记录依次向前移动一个元素的位置,这些操作完成后,要删除的学生信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:
n=reads(stu);
printf("\n请输入要删除信息的学生学号,按回车键确认:");
scanf("%s",number);
for(i=0;i
=n)
{
printf("没有找到该学生信息!\n");
return;
}
else
{
for(j=i+1;j
#include
#include
#include"conio.h"
#define N 20
struct student
{char num[20];
char name[10];