版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 软 件 编 程 训 练 任 务 书 专 业计算机科学与技术班 级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、语言的基本内容及程序设计的基本方法与编程技巧。(2)较熟练地掌握在系统上编辑、编译、连接和运行C程序的方法。(3)通过设计一个完整程序,掌握数据结构的算法编写、类C语言算法转换成C程序并上机调试的基本方法。二、软件编程训练的主要内容 需求分析 通过对程序设计题目和要求的分析整个程序的设计实现主要分五个模块,其中每一个模块对应一个函数,他们的功能分别是:添加学生信息数据函数(add),查询学生信息数据函数(query),显示学生信息数据函数(show),改变学生数据函数(change)以及删除学生信息数据函数(delete)。在这些函数当中,前三个函数的实现严格按照题目要求,是程序的核心,较为复
3、杂。而后两个函数属于附加功能。1、添加学生信息数据函数 主要实现程序最初运行时学生通讯录的录入及其后运行中录入学生信息的追加功能;2、查询学生信息函数 主要功能是按照学号对学生的通讯录信息记录进行查询;3、显示学生信息函数 主要功能是将学生通讯录的全部信息显示出来4、改变学生信息函数 可以实现对学生记录中除学号以外的信息进行修改;5、删除学生信息数据函数 实现的功能是按照学号对学生的数据记录进行删除。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含序号、姓名、电话号码和地址,在程序当中,将学生 沈 阳 大 学软
4、 件 编 程 训 练 说 明 书 NO.2通讯录类型定义为结构体类型,添加以及追加的学生信息直接写入D盘的student.dat文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。三、软件编程训练方案论证设计思路1、程序总体设计图图1程序总体结构图沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.32、具体功能框图 (1)、添加学生数据函数add图2 添加学生数据函数沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.4(2)读取学生数据reads图3
5、读取学生数据沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.5(3)删除学生记录函数delreads(stu,&n);循环变量i=0; 输入待删除的序号xuhao xuhao number假i+当i<n-1时stui与number相等?真break;输出该学生记录不存在!记录写回文件i+关闭文件return;当i<=n-2显示打开文件失败!i=0写方式打开student.dat不成功?假真数租元素依次前移 j+当j< ni>=n?真假j=i+1图4删除学生记录函数沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.6四、软件编程训练运行结果与分析添加
6、数据分为两种情况,其一是在学生文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将新录入的学生信息写入该文件当中;其二是在学生文件(student.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。 沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.7该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待删除学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则采用删除算法删除,否则输出学生信息不存在的提示信息。对学生信息
7、的具体删除算法是在结构体数组中实现的,当学生的信息被找到后,位于数组中该学生后面的学生记录依次向前移动一个元素的位置,这些操作完成后,要删除的学生信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.8该函数的核心内容是按照学生序号查询录入的同学通讯录学生信息,并且显示出来。在执行该函数的时候,首先输入要查询的学生序号,如果在录入的文件中有该序号则将会显示出该序号学生的信息,如果输入的序号在文件中不存在则显示没有找到该学生信息。 该函数的核心内容是更改学生信息并且最
8、终对源文件更新。在执行该文件的时候,输入想要更改学生的序号,在文件中查找,如果有该序号,则输入要更改的学生信息,并且保存到源文件中,修改学生信息成功。若文件中没有输入的学生序号,则输出无此学生信息。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.9该函数的核心是显示通讯录中所有学生信息。四、设计体会 通过这次C语言软件编程训练的学习,我对C语言的学习有了更深一层的认识和了解,同时也提高了对C语言的掌握和操作能力。在做C语言的软件编程训练过程中,我虽然遇到很多困难,有很多不明白的细节和小错误,但通过老师认真仔细而且很有耐心的讲解,还有上网查一些相关资料和同学们的帮助,最后顺利的完成了本次
9、课设。而且在做的过程中也体会到c语言的用处及应用,也能更好地使用函数及调用函数问题。通过这次学习让我更多的认识和掌握一门知识,有了更多的体会。沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.10五、参考文献1、谭浩强C程序设计北京:清华大学出版社,20072、刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,20073、张基温C语言程序设计教程 北京:高等教育出版社,20064、刘大有数据结构北京:高等教育出版社,20065、朱若愚数据结构北京:电子工业出版社,2006沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.11附录源函数本程序主要由五个自定义函数和一个主函数组
10、成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加学生信息数据函数、删除学生信息数据函数和显示学生信息函数是这个程序中较为核心的部分,下面分别对这些函数进行说明。#include<stdio.h> /*I/O函数*/#include<stdlib.h> /*标准库函数*/#include<conio.h> /*定义了getch()函数*/#include<string.h> /*字符串函数*/#define N 20 /*定义常数表示记录数*/struct student /*定义数据结构*/char num20;
11、/*学生序号*/ 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; wh
12、ile(1) menu(); printf("n请输入您要选择的操作序号,按回车键确认:"); scanf("%d",&n); 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 &qu
13、ot;); 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(&
14、quot;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.tel,stui.adr); *n=i; fclose(fp);沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.13void add() /*添加学生信息函数*/FILE *fp; int n,i; struct student
15、stu; if(fp=fopen("d:student.txt","r+")!=NULL) printf("请输入要添加的学生数量,按回车键确认:"); scanf("%d",&n); fseek(fp,0L,2); for(i=1;i<=n;i+) printf("n请输入第%d个学生的学生序号,姓名,用空格分开,并按回车键确认:n",i); scanf("%s%s",stu.num,); printf("n请输入第%d个学生的电话号
16、码,地址,用空格分开,并按回车键确认:n",i); scanf("%s%s",stu.tel,stu.adr); fprintf(fp,"n%s %s %s %s",stu.num,,stu.tel,stu.adr); else if(fp=fopen("d:student.txt","w")!=NULL) printf("请输入要添加的学生数量,按回车键确认:"); scanf("%d",&n); for(i=1;i<=n;i+) p
17、rintf("n请输入第%d个学生的学生序号、姓名,用空格分开,并按回车键确认:n",i); scanf("%s%s",stu.num,); printf("n请输入第%d个学生的电话号码,地址,用空格分开,并按回车键确认:n",i); scanf("%s%s",stu.tel,stu.adr);fprintf(fp,"n%s %s %s %s",stu.num,,stu.tel,stu.adr); fclose(fp);void show() /*显示所有学生信
18、息函数*/ 沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.14struct student stuN;int i,n=20;reads(stu,&n); /*从文件中读出所有学生信息*/printf(" *所有的学生信息如下*n");puts("t学生序号 姓名 电话 地址");for(i=0;i<n;i+) printf("n%s %s %s %sn",stui.num,,stui.tel,stui.adr);getch();void del() /*删除学生信息函数*/ struct st
19、udent stuN; char number20; FILE *fp; int n,i,j; reads(stu,&n); printf("n请输入要删除信息的学生序号,按回车键确认:"); getchar(); scanf("%s",number); for(i=0;i<n;i+) if(strcmp(number,stui.num)=0) break; if(i>=n) printf("没有找到该学生信息n"); return; else for(j=i+1;j<n;j+) stuj-1=stuj; i
20、f(fp=fopen("d:student.txt","w")=NULL)/*更新文件*/ printf("文件打开失败n"); return; else沈 阳 大 学软 件 编 程 训 练 说 明 书 NO.15 for(i=0;i<n-1;i+) fprintf(fp,"n%s %s %s %s",stui.num,,stui.tel,stui.adr); fclose(fp); printf("删除成功n");void change() /*改变学生信息函数*/ struct student stuN,temp; int n,i; FILE *fp; printf("n请输入要更改信息的学生序号,按回车键确认:"); scanf("%s",temp.num); reads(stu,&n); for(i=0;i<n;i+) if(strcmp(temp.num,stui.num)=0) break; if(i>=n) printf("无此学生信息n"); return; printf("n请输入更改后的学生姓名,电话号码,地址,用空格分开:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消化内镜护理中的科研方法与论文写作
- 消化内镜护理中的并发症处理技巧
- 手机版护理课件检索系统
- 如果不遵守交通规则果然素材
- 企业瑜伽协议书范本
- 创业投资合作协议书
- 潍坊一中素质考试题及答案
- 2026年颅内静脉血栓后遗症诊疗试题及答案(神经内科版)
- 2026年写字楼广告投放效果评估合同协议
- 楚雄州禄丰市公安局招聘辅警考试试题及答案
- 2026广东广州市越秀区人民街道办事处招聘社区退管专职人员2人笔试参考题库及答案详解
- 13.1 在劳动中创造人生价值 课件(内嵌视频)2025-2026学年统编版道德与法治七年级上册
- 2026年青山湖区住房和城乡建设局下属事业单位招聘工作人员8人笔试备考题库及答案解析
- GB/T 214-2026煤中全硫的测定方法
- 2026广东中考历史押题必刷卷含答案
- 2026年公共营养师三级月技能真题(附答案)
- 水泥基渗透结晶防水涂料安全交底
- 2026年上海市徐汇区高三下学期二模化学试卷和答案
- 会诊转诊服务中心工作制度
- 银川市、石嘴山市、吴忠市三市2026年高三年级学科教学质量检测语文
- 2026届广东省汕头市金平区~中考数学全真模拟试卷含解析
评论
0/150
提交评论