资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软 件 编 程 训 练 任 务 书 专 业计算机科学与技术班 级12 级 2 班姓 名于颖设 计 起 止 日 期2013 年 6 月 246 月 30设计题目: 同学通信录信息管理系统设计任务(主要技术参数):硬件环境:CPU:2.8GHz 以上; 内存:256MB 以上;硬盘大小:80G 以上。软件环境:(1)操作系统:WINDOWS XP;(2)开发软件: Turbo C 或 Visual C+实现功能:1)管理同学的通讯录2)使通讯录更加明了 3)使同学查找更加方便指导教师评语:成绩: 签字:年 月 日软 件 编 程 训 练 说 明 书 NO.1同学通信录信息管理系统一、软件编程训练的目的(1)较熟练地掌握语言的基本内容及程序设计的基本方法与编程技巧。(2)较熟练地掌握在系统上编辑、编译、连接和运行 C 程序的方法。(3)通过设计一个完整程序,掌握数据结构的算法编写、类 C 语言算法转换成 C 程序并上机调试的基本方法。二、软件编程训练的主要内容需求分析通过对程序设计题目和要求的分析整个程序的设计实现主要分五个模块,其中每一个模块对应一个函数,他们的功能分别是:添加学生信息数据函数(add),查询学生信息数据函数(query),显示学生信息数据函数(show),改变学生数据函数(change)以及删除学生信息数据函数(delete) 。在这些函数当中,前三个函数的实现严格按照题目要求,是程序的核心,较为复杂。而后两个函数属于附加功能。1、添加学生信息数据函数 主要实现程序最初运行时学生通讯录的录入及其后运行中录入学生信息的追加功能;2、查询学生信息函数 主要功能是按照学号对学生的通讯录信息记录进行查询;3、显示学生信息函数 主要功能是将学生通讯录的全部信息显示出来4、改变学生信息函数 可以实现对学生记录中除学号以外的信息进行修改;5、删除学生信息数据函数 实现的功能是按照学号对学生的数据记录进行删除。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含序号、姓名、电话号码和地址,在程序当中,将学生沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.2通讯录类型定义为结构体类型,添加以及追加的学生信息直接写入 D 盘的student.dat 文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat 文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。三、软件编程训练方案论证设计思路1、程序总体设计图图 1 程序总体结构图沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.32、具体功能框图(1) 、添加学生数据函数 add图 2 添加学生数据函数沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.4(2)读取学生数据 reads图 3 读取学生数据沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.5(3)删除学生记录函数 del图 4 删除学生记录函数reads(stu,循环变量循环变量 i=0; 输入待删除的序号输入待删除的序号 xuhao xuhao number假假i+当当 i=n?真真假假j=i+1沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.6四、软件编程训练运行结果与分析添加数据分为两种情况,其一是在学生文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将新录入的学生信息写入该文件当中;其二是在学生文件(student.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。 沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.7该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用 reads 函数将文件中的学生信息读入数组当中,并由用户输入待删除学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则采用删除算法删除,否则输出学生信息不存在的提示信息。对学生信息的具体删除算法是在结构体数组中实现的,当学生的信息被找到后,位于数组中该学生后面的学生记录依次向前移动一个元素的位置,这些操作完成后,要删除的学生信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.8该函数的核心内容是按照学生序号查询录入的同学通讯录学生信息,并且显示出来。在执行该函数的时候,首先输入要查询的学生序号,如果在录入的文件中有该序号则将会显示出该序号学生的信息,如果输入的序号在文件中不存在则显示没有找到该学生信息。该函数的核心内容是更改学生信息并且最终对源文件更新。在执行该文件的时候,输入想要更改学生的序号,在文件中查找,如果有该序号,则输入要更改的学生信息,并且保存到源文件中,修改学生信息成功。若文件中没有输入的学生序号,则输出无此学生信息。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.9该函数的核心是显示通讯录中所有学生信息。四、设计体会通过这次 C 语言软件编程训练的学习,我对 C 语言的学习有了更深一层的认识和了解,同时也提高了对 C 语言的掌握和操作能力。在做 C 语言的软件编程训练过程中,我虽然遇到很多困难,有很多不明白的细节和小错误,但通过老师认真仔细而且很有耐心的讲解,还有上网查一些相关资料和同学们的帮助,最后顺利的完成了本次课设。而且在做的过程中也体会到 c 语言的用处及应用,也能更好地使用函数及调用函数问题。通过这次学习让我更多的认识和掌握一门知识,有了更多的体会。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.10五、参考文献1、谭浩强C 程序设计北京:清华大学出版社,20072、刘成等C 语言程序设计实验指导与习题集北京:中国铁道出版社,20073、张基温C 语言程序设计教程 北京:高等教育出版社,20064、刘大有数据结构北京:高等教育出版社,20065、朱若愚数据结构北京:电子工业出版社,2006沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.11附录源函数本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加学生信息数据函数、删除学生信息数据函数和显示学生信息函数是这个程序中较为核心的部分,下面分别对这些函数进行说明。#include /*I/O 函数*/ #include /*标准库函数*/ #include /*定义了 getch()函数*/ #include /*字符串函数*/ #define N 20 /*定义常数表示记录数*/struct student /*定义数据结构*/ char num20; /*学生序号*/char name10; /*姓名*/char tel20; /*电话号码*/char adr20; /*地址*/void menu(); /*主菜单函数*/ void reads(struct student stuN,int *n);/*从文件中读取学生数据*/ void add(); /*添加学生信息函数*/ void del(); /*删除学生信息函数*/void query(); /*学生信息查询函数*/ void change(); /*改变学生信息函数*/ void show(); /*显示所有学生信息函数*/void main() /*主函数*/int n;while(1) menu();printf(“n 请输入您要选择的操作序号,按回车键确认:“);scanf(“%d“,switch(n)case 1: add();break;沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.12case 2: show();break;case 3: del();break;case 4: change();break;case 5: query();break;case 6: exit(0);default: printf(“输入错误,请输入列表中存在的序号!n “); void menu() printf(“ * 同学通讯录信息管理* “);printf(“n 1 添加数据“);printf(“n 2 显示数据“);printf(“n 3 删除数据“);printf(“n 4 更改数据“);printf(“n 5 查询“);printf(“n 6 退出“);void reads(struct student stuN,int *n) FILE *fp;int i=0;if(fp=fopen(“d:student.txt“,“r“)=NULL) printf(“文件打开失败!n “);return;else/*n=getw(fp);for(i=0;!feof(fp);i+)fscanf(fp,“%s%s%s%s“,stui.num,stui.name,stui.tel,stui.adr);*n=i;fclose(fp); 沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.13void add() /*添加学生信息函数*/ FILE *fp;int n,i;struct student stu;if(fp=fopen(“d:student.txt“,“r+“)!=NULL) printf(“请输入要添加的学生数量,按回车键确认:“); scanf(“%d“,fseek(fp,0L,2);for(i=1;i=n)printf(“没有找到该学生信息n“);return;else for(j=i+1;j=n)printf(“无此学生
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号