C语言课程设计说明书模板
c语言课程设计的模板

c语言课程设计的模板一、课程目标知识目标:1. 学生能掌握C语言的基本语法,包括变量声明、数据类型、运算符、控制结构等。
2. 学生能理解函数的定义和调用,掌握常用的库函数。
3. 学生能运用数组和字符串进行数据处理,了解指针的基本概念和使用。
4. 学生能通过课程学习,理解结构体和文件操作的基础知识。
技能目标:1. 学生能独立编写简单的C语言程序,实现基本的输入、输出、计算等功能。
2. 学生能通过调试和修改程序,培养解决问题的能力和逻辑思维能力。
3. 学生能运用所学知识,完成小型项目的设计与实现,提高实际编程能力。
情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,树立自信心。
2. 学生通过合作学习,培养团队协作精神和沟通能力。
3. 学生在编程实践中,体会科技改变生活的力量,增强社会责任感和创新意识。
课程性质:本课程为C语言入门课程,旨在让学生掌握基本的编程知识和技能,培养逻辑思维和动手能力。
学生特点:学生为初中生,具备一定的数学基础和逻辑思维能力,但对编程知识了解较少。
教学要求:注重理论与实践相结合,以项目驱动教学,激发学生的学习兴趣,培养实际编程能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在学习中取得进步。
通过分解课程目标为具体的学习成果,为教学设计和评估提供依据。
二、教学内容1. C语言概述:介绍C语言的发展历史、特点和应用领域,使学生了解C语言的重要性。
教材章节:第一章2. 基本语法:讲解变量、数据类型、运算符、表达式等基本概念,为后续编程打下基础。
教材章节:第二章3. 控制结构:介绍顺序结构、分支结构、循环结构等控制语句,培养学生逻辑思维能力。
教材章节:第三章4. 函数:讲解函数的定义、调用、参数传递等,使学生掌握模块化编程方法。
教材章节:第四章5. 数组和字符串:介绍一维数组、二维数组、字符串及其操作,提高数据处理能力。
教材章节:第五章6. 指针:讲解指针的概念、使用方法及其在数组、函数中的应用。
C语言课程设计(说明书)

C语言课程设计-猜数游戏(说明书)班级:20111461学号:2011146111姓名:完成日期:2012年6月20日目录:1.题目要求(设计任务)2.设计思路3.设计流程4.设计小结5.参考文献6.附录(源程序)1.题目要求(设计任务)猜数游戏(掌握程序结构及随机函数应用)程序说明及要求:游戏的开始由机器产生一个随机数(1~100之间,用库函数random(),用法见后面的说明),然后游戏者在程序的提示下猜数,若输入的数比这个数大,程序提示:Your answer is HIGH,try again. ,否则,程序提示:Your answer is LOW,try again.,直到猜对为止。
程序可实现连续猜数,直到游戏者退出。
程序输出要求:累计游戏者猜对一个数所需次数n,当n<=7时,给出“Congratulation”字样;当7<n<15时,给出“I can bet you can do it better.”;当n>=15时,用exit(0)库函数退出程序。
附:随机数发生器函数 random()用法函数原型: int random(int num);程序例:#include <stdlib.h> /*包含库函数random()的头文件*/#include <stdio.h>/* prints a random number in the range 0 to 99 */int main(void){ int n;randomize(); /*初始化随机数发生器*/n= random (100); /*产生一个0-100的随机数。
*/printf("Random number in the 0-99 range: %d\n",n);2.设计思路1.利用所学知识,百度及学长帮助收集足够多的资料2.根据老师要求的线索加上自身因素将程序分为几块,逐个解决3.步骤:主程序-封面-登陆界面-主菜单-小程序4.主要利用所学的for,switch,if等循环3.设计流程1. 封面设计2.登陆界面设计3.主菜单设计4.主游戏介绍5.游戏介绍6.游戏帮助7.关于游戏4.设计小结本次课题为:猜数游戏。
C语言课程设计说明书

一问题描述与分析假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开学学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计学生选修课程系统,使之能提供以下功能:1.课程信息录入功能(课程信息用文件保存)2.课程信息浏览功能3.排序:按总学时排序4.查询功能:按开学学期查询5.课程修改,删除(可选项)二总体设计根据题目要求,定义结构体类型如下:struct subjects{char no[10];char name[20];char kind[20];int stime; /*总学时*/int ttime; /*授课学时*/int etime; /*实验或上机学时*/float score;int term;}sub[N];三详细设计1)存储结构的选择在这个程序中,我们选择用结构体数组来存储课程,即顺序存储结构Struct subjects sub[N]2)系统初始化这个模块的主要功能是得到初始的课程。
为了实现“一次输入,多次使用”,我们用文件来保存课程。
第一次运行本程序需从键盘输入所有课程并保存到文件中,以后运行就可以从文件中读取数据,直接使用了。
这样既可以减少输入的麻烦,更重要的是使本程序可以连续运行,每次运行都可以使用上一次保存的结果。
void newfile(){int i;FILE *fp;if((fp=fopen("sub.dat","wb"))==NULL){printf("文件建立失败!请重新运行程序。
\n");exit(0);}printf("请输入课程门数");scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第%d门课程的编号:",i+1);getchar();gets(sub[i].no);printf("课程名称:");gets(sub[i].name);printf("课程性质:");gets(sub[i].kind);printf("总学时:");scanf("%d",&sub[i].stime);printf("授课学时:");scanf("%d",&sub[i].ttime);printf("实验或上机学时:");scanf("%d",&sub[i].etime);printf("学分:");scanf("%f",&sub[i].score);printf("开学学期:");scanf("%d",&sub[i].term);printf("\n");fwrite(&sub[i],1,sizeof(struct subjects),fp);}fclose(fp);printf("你刚才输入的数据共有%d门课程,详情数据为:\n",num);output();}3)课程浏览功能按课程编号进行浏览void read1(){FILE *fp;num=0;fp=fopen("sub.dat","r");if(fp==NULL){printf("文件打开失败!请重新运行程序。
C语言课程设计说明书

本课程设计的源程序具有可读性强、文件大小及内容可灵 活改变和适用范围广等诸多优点!
三、C语言程序功能示例:
利用本课程设计对字符串(内容为右侧表格中的数 据)“sdwfzcl925”和“140 155 136 153 133 156 147 198 205 202”进行加密和解密运算,截图如下所示: 加密: 明文:sdwfzcl925 密文:140 155 136 153 133 156 147 198
一、系统功能分析
1.1设计目的 本课程设计的目的是为了保证个人数据资料不被他人非法 窃取使用,保护个人的隐私及重要文件! 1.2功能描述 本程序主要是对已知文件(为英文字符)通过一定的算法 将其转换成非本身的其他英文字母以达到文件加密的目的。整 个系统由以下几大功能模块组成。 1.2.1主控选择模块 此模块是主程序操作界面,供用户进行选择。用户可选择 执行加密或解密操作。 1.2.2加密模块 加密模块主要是完成对字符串的加密操作。从输入字符串 中读入任意一个字符并将它加密并显示出来! 1.2.3解密模块 解密模块是完成对字符串的解密工作,将密文转换为可被 识别的明文。从输入字符串中读入任意一个字符并将它解密并 显示出来!
虽然在课程设计过程中修改了很多次,但程序还是很不完 美,有一些问题未能解决。比如说程序的界面不够美观,不够 人性化。我将在以后的时间里继续努力,不断充实自己。 总体来说,这次C语言程序设计实验还是比较成功的,虽 然最终程序还存在一些不足,但能取得这样的成绩我还是比较 高兴的。 最后,要感谢学校为我们提供这次实验机会,也要感谢老 师的指导,帮助与支持。
目
录
前 言· · · · · · · · · · · · · · · · · · · · · · · ·1 1. 系统功能分析· · · · · · · · · · · · · · · · · · · ·1 1.1 设计描述· · · · · · · · · · · · · · · · · · · ·1 1.2 功能描述· · · · · · · · · · · · · · · · · · · ·1 1.2.1 主控选择模块· · · · · · · · · · · · · · · 1 1.2.2 加密模块· · · · · · · · · · · · · · · · ·1 1.2.3 解密模块· · · · · · · · · · · · · · · · ·1 2. C语言源程序编写· · · · · · · · · · · · · · · · · ·1 2.1 程序流程图· · · · · · · · · · · · · · · · · · ·1 2.2 程序源代码· · · · · · · · · · · · · · · · · · ·2 3. C语言程序功能示例· · · · · · · · · · · · · · · · · 4 4. 设计总结· · · · · · · · · · · · · · · · · · · · · ·7 5. 参考文献· · · · · · · · · · · · · · · · · · · · · ·8
C语言课程设计说明书正文范本标准

int age;年龄
char sex;性别
char add[30];地址
char pho[13]电话
2.3
int Input(Student stud[],int n) /*输入若干条记录*/
void Display(Student stud[],int n) /*显示所有记录*/
山西工程技术学院
《C语言程序设计》
课程设计说明书
姓 名张雅男
学 号150721035
班 级15级计应1班
指导老师刘红梅
2016年1月6日
摘要------------------------------------------------------2
1引言------------------------------------------------------3
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7和8是对文件的操作,提前准备好数据。
2.1
关于系统的功能结构图如图2-1所示。
图2-1系统功能结构图
2.2
num[10];学号
2.1功能需求------------------------------------------------4
2.2数据需求------------------------------------------------5
2.3程序所需函数--------------------------------------------5
void Sort_by_num(Student stud[],int n) /*按学号排序*/
课程设计报告模板c语言

课程设计报告模板c语言一、课程目标知识目标:1. 理解C语言的基本语法结构,掌握变量定义、数据类型、运算符等基础知识;2. 学会使用控制结构,如顺序结构、分支结构和循环结构;3. 掌握函数定义、声明和调用的方法,理解局部变量和全局变量的概念;4. 了解数组、字符串和指针的使用,并能运用它们解决实际问题。
技能目标:1. 能够运用C语言编写简单的程序,解决问题;2. 培养良好的编程习惯,如规范命名、合理注释、代码缩进等;3. 学会使用编译器进行程序编译、调试和运行;4. 能够阅读和分析简单的C程序代码,提高编程能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情;2. 培养学生的逻辑思维能力,提高问题解决能力;3. 培养学生的团队协作意识,学会与他人分享编程经验;4. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
课程性质:本课程为初中年级的信息技术课程,旨在让学生掌握C语言编程的基本知识和技能。
学生特点:初中学生具有较强的逻辑思维能力和学习兴趣,但对编程知识了解较少。
教学要求:结合学生特点,注重理论与实践相结合,通过实例分析、编程实践等方式,使学生能够掌握C语言的基本知识,提高编程能力。
在教学过程中,关注学生的情感态度,激发学习兴趣,培养良好的编程习惯。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. C语言基础知识- 变量定义、数据类型和运算符- 输入输出函数的使用- 顺序结构程序设计2. 控制结构- 分支结构(if、if-else、switch)- 循环结构(for、while、do-while)3. 函数- 函数定义、声明和调用- 局部变量和全局变量- 递归函数4. 数组、字符串与指针- 数组的使用和操作- 字符串的基本操作- 指针的概念和用法5. 编程实践- 编写简单程序,解决问题- 分析实例代码,提高编程能力- 调试程序,找出并修复错误教学内容安排与进度:第一周:C语言基础知识,顺序结构程序设计第二周:控制结构(分支、循环)第三周:函数的定义和调用,递归函数第四周:数组、字符串与指针第五周:编程实践与总结教材章节关联:教学内容与教材相应章节紧密关联,确保学生能够在学习过程中系统地掌握C 语言知识。
C语言课程设计说明书

break;
}
③删除模块
【需求分析】
该模块的功能是删除通讯录里原有的记录。
删除模块的流程图如图五所示。
图五删除模块流程图
【程序】
/******************************删除模块***********************************/
ch=getch(); /*获得输入字符*/
if(ch=='y') Data_Save();
fclose(fp); /*关闭record.txt文件*/
exit(0); /*退出程序*/
default: printf("Please choose1-4\n"); /*输入的如果不是数字1-4,让其重新输入*/
{ i++;
Data_Input(i);
printf("Please press Enter again to continue\n");
}
if(i==p)printf("\n\tThe data is full\n");
} /*记录完后显示通讯录已满*/
break;}
②显示模块
【需求分析】
该模块的功能是显示所有通讯录里的记录。显示模块的流程图如图四所示。
《C语言程序设计》
课程设计
通讯录管理系统
指导教师:
设计人:
班级:
学号:
设计时间:2010年6月12日
一、题目要求----------------------------------------3
C语言课程设计说明书

1面向过程程序设计(C 语言)课程设计设计说明书学生宿舍管理系统起止日期: 2010 年 01 月 10 日 至 2010 年 01 月 17 日学生姓名 黄庆清 班级 计本091班 学号 09408100103 成绩指导教师(签字)计算机与通信学院2010年 01 月 20日学生宿舍管理系统一、程序设计要求综合运用C语言程序设计课程的主要知识,设计一个用于学生宿舍管理的程序,设计指标由程序的功能要求和技术要求具体说明。
1.功能要求学生宿舍管理程序至少具有以下功能:1)显示功能:能显示宿舍学生的全部记录,在显示时能提供下列5种显示方式:①按记录创建(学生入住)的顺序显示。
②按姓名升序显示。
将字符串(姓名)从小到大排列后输出。
③按学号升序显示。
将字符串(学号)从小到大排列后输出。
④按房号升序显示。
将字符串(房号)从小到大排列后输出。
⑤班按级号升序显示。
将字符串(班级号)从小到大排列后输出。
注:“显示顺序”栏的信息不属于记录的信息,它是连续的自然数,若记录个数不变,则“显示顺序”栏的信息不变。
2)修改功能:能修改学生记录除创建顺序以外的信息。
让用户输入需要修改的旧记录,再检查该记录是否存在,若存在则用户可对记录进行修改。
3)查询功能:能查询宿舍学生的记录。
提供以下5种查询方式。
①按姓名查询。
用户输入学生姓名,系统则检索记录,找到含有该姓名的全部记录,显示到屏幕上,并计算、显示找到的记录个数。
若找不到,则提醒用户:该记录不存在。
②按学号查询。
原理同上所述。
③按房号查询。
原理同上所述。
④按班级号查询。
原理同上所述。
⑤综合查询。
用户输入学生的姓名、学号、房号和班级号,系统自动检索,若找到和和用户输入的信息完全一致的记录,则显示到屏幕上。
该记录若存在,则是唯一的,这是由入住(新建)功能决定的。
4)删除功能:能以某些方式删除宿舍学生的信息。
删除时以记录为单位,既能一次删除一条记录,也能一次删除多条记录。
该程序提供以下7种删除方式:①按姓名删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
辽宁工业大学C语言程序设计课程设计(论文)题目:通讯录院(系):软件学院专业班级:汽电101班学号: *********学生姓名:***指导教师:***教师职称:助教起止时间:2010.12.20至2010.12.31课程设计(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计题目 (2)2.2课程设计整体设计说明 (2)2.2.1课程设计内容 (2)2.2.2系统功能模块结构图............................. 错误!未定义书签。
2.2.3数据结构设计及用法说明 (2)2.2.4程序结构(画流程图) (2)2.2.5各模块的功能 (3)2.3程序源代码及注释 (4)第3章课程设计总结 (14)参考资料 (15)第1章课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行Windows 2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3 课程设计的预备知识熟悉C语言及C语言开发工具。
1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章课程设计内容2.1程序功能介绍通讯录程序,该程序具有输入、显示、查找、添加、删除、插入、保存、读入、拷贝、排序等功能。
2.2程序整体设计说明C语言编制该通讯录,使其具有输入、显示、查找、添加、删除、插入、保存、读入、拷贝、排序等功能,建立通讯录信息文件,对通讯录信息进行有效的管理,并且可按多种方式对通讯录进行查询,标明详细的注释以方便阅读程序。
2.2.1设计思路1) 通讯录编辑(添加、删除、修改)。
2) 按不同的项进行查找。
3) 对已存在的通讯录按不同的项排序。
4) 将通讯录写入文件5) 从文件读入通讯录备注:通讯录至少应该有以下数据项:姓名,工作单位,电话。
2.2.2数据结构设计及用法说明调用stdio.h、stdlib.h、string.h、ctype.h、库函数, 使用数组指针,数据存储姓名,单位,电话,输入数据要按照姓名,联系方式,电话号码的顺序可以添加删除修改以及检索数据, ,输入数据要按照姓名,联系方式,电话号码的顺序可以添加删除修改以及检索数据。
用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Search函数来查找信息,用Data_Insert函数来插入信息,用Data_Alter函数来修改信息,用Data_Delete函数来删除信息,用Data_Save函数来保存信息,用Exit 函数来退出通讯录。
2.2.3程序结构(流程图)改程序流程图如下:2.2.4各模块的功能及程序说明建通讯录,并对它进行增加,查询,删除,修改,显示记录等操作。
第一个模块--主函数main()的功能是:根据选单的选项调用各函数,并完成相映的功能。
第二个模块--Menu()的功能是:显示英文提示选单。
第三个模块--Quit()的功能是推出选单。
第四个模块--Creat()的功能是:创建新的通讯录。
第五个模块--Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
第六个模块--Find()的功能是:查询某人的信息如果找到了,则显示该人的信息,如果未找到,则显示通讯录中没有此人的信息,并返回选单。
第七个模块--Alter()的功能是:删除某人的信息,并返回选单。
第八个模块--Delete()的功能是:删除某人的信息,如果未找到要修改的某人的信息,则提示通讯录中没有此人的信息,并返回选单。
第九个模块--List的功能是:显示通讯录中的所有记录。
2.2.5程序结果该程序的运行结果为:2.3程序源代码及注释#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/{char name[20]; /*姓名*/char units[30]; /*单位*/char tele[10]; /*电话*/}ADDRESS;/******以下是函数原型*******/int enter(ADDRESS t[]); /*输入记录*/void list(ADDRESS t[],int n); /*显示记录*/void search(ADDRESS t[],int n); /*按姓名查找显示记录*/ int delete(ADDRESS t[],int n); /*删除记录*/int add(ADDRESS t[],int n); /*插入记录*/void save(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/void display(ADDRESS t[]); /*按序号查找显示记录*/void sort(ADDRESS t[],int n); /*按姓名排序*/void qseek(ADDRESS t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){int i;ADDRESS adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/clrscr(); /*清屏*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {case 0:length=enter(adr);break;/*输入记录*/case 1:list(adr,length);break; /*显示全部记录*/case 2:search(adr,length);break; /*查找记录*/case 3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break; /*保存文件*/case 6:length=load(adr); break; /*读文件*/case 7:display(adr);break; /*按序号显示记录*/case 8:sort(adr,length);break; /*按姓名排序*/case 9:qseek(adr,length);break; /*快速查找记录*/case 10:copy();break; /*复制文件*/case 11:exit(0); /*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf(" 0.Enter record\n");printf(" 1. List the file\n");printf(" 2. Search record on name\n");printf(" 3. Delete a record\n");printf(" 4. add record \n");printf(" 5. Save the file\n");printf(" 6. Load the file\n");printf(" 7. display record on order\n");printf(" 8. sort to make new file\n");printf(" 9. Quick seek record\n");printf(" 10. copy the file to new file\n");printf(" 11. Quit\n");printf("***********************************************\n");do{printf("\nEnter you choice(0~11):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<0||c>11); /*选择项不在0~11之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADDRESS t[]){int i,n;char *s;clrscr(); /*清屏*/printf("\nplease input num \n"); /*提示信息*/scanf("%d",&n); /*输入记录数*/printf("please input record \n"); /*提示输入记录*/printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/ printf("----------------------------------------------\n"); }return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(ADDRESS t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone\n"); printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch(); /*压任意键继续*/}printf("************************end*******************\n");}/*查找记录*/void search(ADDRESS t[],int n){char s[20]; /*保存待查找姓名字符串*/int i; /*保存查找到结点的序号*/clrscr(); /*清屏*/printf("please search name\n");scanf("%s",s); /*输入待查找姓名*/i=find(t,n,s); /*调用find函数,得到一个整数*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");elseprint(t[i]); /*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/void print(ADDRESS temp){clrscr();printf("\n\n********************************************\n");printf("name unit telephone\n"); printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */int find(ADDRESS t[],int n,char *s){int i;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/return i; /*相等,则返回该记录的下标号,程序提前结结束*/}return i; /*返回i值*/}/*删除函数,参数为记录数组和记录条数*/int delete(ADDRESS t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s);/*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{ strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}/*插入记录函数,参数为结构体数组和记录数*/int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/{ADDRESS temp; /*新插入记录信息*/int i,j;char s[20]; /*确定插入在哪个记录之前*/printf("please input record\n");printf("************************************************\n");printf("name unit telephone\n");printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele); /*输入插入信息*/printf("------------------------------------------------\n");printf("please input locate name \n");scanf("%s",s); /*输入插入位置的姓名*/i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/{strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/strcpy(t[j+1].tele,t[j].tele); /*当前记录的电话拷贝到后一条*/}strcpy(t[i].name,); /*将新插入记录的姓名拷贝到第i个位置*/strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/n++; /*记录数加1*/return n; /*返回记录数*/}/*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t[],int n){int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/ {printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(ADDRESS t[]){int i,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式读入记录*/fclose(fp); /*关闭文件*/printf("You have success read data from file\n"); /*显示保存成功*/return n; /*返回记录数*/}/*按序号显示记录函数*/void display(ADDRESS t[]){int id,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/{printf("can not open file\n"); /*不能打开文件*/exit(1); /*退出*/}printf("Enter order number...\n"); /*显示信息*/scanf("%d",&id); /*输入序号*/fscanf(fp,"%d",&n); /*从文件读入记录数*/if(id>=0&&id<n) /*判断序号是否在记录范围内*/{fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/print(t[id]); /*调用输出函数显示该记录*/printf("\r\n");}elseprintf("no %d number record\n ",id); /*如果序号不合理显示信息*/fclose(fp); /*关闭文件*/}/*排序函数,参数为结构体数组和记录数*/void sort(ADDRESS t[],int n){int i,j,flag;ADDRESS temp; /*临时变量做交换数据用*/for(i=0;i<n;i++){flag=0; /*设标志判断是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,t[j].name); /*交换记录*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/}printf("sort sucess\n"); /*显示排序成功*/}/*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t[],int n){char s[20];int l,r,m;printf("\nPlease sort before qseek!\n"); /*提示确认在查找之前,记录是否已排序*/printf("please enter name for qseek\n"); /*提示输入*/scanf("%s",s); /*输入待查找的姓名*/l=0;r=n-1; /*设置左边界与右边界的初值*/while(l<=r) /*当左边界<=右边界时*/{m=(l+r)/2; /*计算中间位置*/if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/{print(t[m]); /*如果相等,则调用print函数显示记录信息*/return ; /*返回*/}if(strcmp(t[m].name,s)<0) /*如果中间结点小*/l=m+1; /*修改左边界*/elser=m-1; /*否则,中间结点大,修改右边界*/}if(l>r) /*如果左边界大于右边界时*/printf("not found\n"); /*显示没找到*/}/*复制文件*/void copy(){char outfile[20]; /*目标文件名*/int i,n;ADDRESS temp[M]; /*定义临时变量*/FILE *sfp,*tfp; /*定义指向文件的指针*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL) /*打开记录文件*/{printf("can not open file\n"); /*显示不能打开文件信息*/exit(1); /*退出*/}printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/ scanf("%s",outfile); /*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/{printf("can not open file\n"); /*显示不能打开文件信息*/exit(1); /*退出*/}fscanf(sfp,"%d",&n); /*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp,"\r\n"); /*写入换行符*/for(i=0;i<n;i++){fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units,te mp[i].tele); /*读入记录*/fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,te mp[i].units,temp[i].tele); /*写入记录*/fprintf(tfp,"\r\n"); /*写入换行符*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("you have success copy file\n"); /*显示复制成功*/}第3章课程设计总结C语言是国内外广泛使用的计算机语言,学会、学好、使用C语言进行程序设计是时代的要求,也是计算机工作者的一项基本功。