C语言编程实践
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言编程实践
主讲:姜立秋 办公室:教学楼1908
内容向导
1.1 1.2 1.3 1.4
课程介绍 题目要求 开发技术 注意事项
1.1 课程介绍
1.1.1时间安排
机房:24 学时 课外: 8 学时
合计:32 学时
1.1.2课程内容安排
内容
第1部分 课程安排、项目题目和开发 工具简介
机房
4 8
第2部分 技术讲解和指导:
1.2.3相关工具:
1. VC6.0环境; 2. microsoft office visio 2003 (1)模块图 (2)流程图
(1)模块图
球队人员信息管理系统
主菜单
添加信息
删除信息
输出信息
读取信息
写入信息
查询
报表
按姓名 查询
按编号 查询 排序
统计人数
按角色 汇总
统计薪水 总额
例子:学生信息结构体
如: struct student{ char xh[9]; char name[6]; char tel[11]; float score; };
例子:球员信息结构体 typedef struct MEM{ char number[10]; char name[20]; int role; int age; float high; float weight; float salary; struct date joinDate; struct MEM *next; }MEMBER;
1.4.3实践报告 格式要求(见实践报告模版) 内容要求 主要包含:功能模块图、流程图、程序开发详解、主要代
码及注释、测试过程及原理、执行效果图及说明、小组总 结、个人总结、分工说明、参考文献
上交要求 以小组为单位,上交小组报告、个人报告及电子 版程序代码
4.文件操作 (1)打开文件 要对文件进行操作,首先必须要打开文件 文件的打开通过函数fopen实现 fopen(char *filename, char *mode); 两个指针型的参数用来接收两个字符串 第一个指定要打开的文件名信息 第二个指定要打开的方式
经常把函数的返回值赋给一个文件指针判断打开是否成功
(1)含义 用一个指针连接的多个结点序列 -21 (2)说明 常常用一个指针指向第一个结点,以便于操作 head -21 89 … 89 76 ^
76
^
(3)链表建立例子 如: struct singer{ int xh; char name[20]; float score[3]; float averageScore; struct singer *next; }NODE;
练习1: 定义十佳运动员信息的结构体
//运动员数据 /* 运动员编号 */ /* 运动员姓名 */ /* 运动员的得票数 */
练习2: 定义球员信息的结构体 //运动员数据 /*编号*/ /*姓名*/ /*角色*/ /*年龄*/ /*身高*/ /*体重*/ /*薪酬*/ /*加入球队的日期*/
1.3.2链表
小组报告(30分) 每组答辩(20分)
书山有路勤为径 学海无崖苦做舟
1.1.4注意事项
1.先修课程:《C语言程序设计》
2.后续课程:《C++语言程序设计》 《JAVA语言程序设计》等
3.分组: (1)三个题目,5-7人左右为一组,一组指定一个 题目; (2)每组设组长一人,组员分工明确(标明每人负 责项目中的模块及相关函数)。
for(i=1;i<n-1;i++) q=q->next; q->next=(q->next)->next;
return h;
}
练习2 编程实现指定球员的插入 编程实现指定十佳运动员的删除
1.3.3文件读写
1.概念 (1)文件是存储在外存储器上的相关数据的集合 (2)文件都有一个名字叫文件名,用于相互区别 (3)文件名包含主文件名和扩展名,中间以句点(.)相连 如: myFile.c introduction.doc
//加入球队的日期
(3)定义变量、数组与指针 ①声明的同时 ②先声明后定义
如:struct singer sun,s[50];
struct singer *ps1=&sun,*ps2=s; (4)成员访问 ① 变量名.成员名 ② 指针名->成员名
如: sun.xh = 1001; ps1->score = 544.5; s[2].xh = 1002;
score *next
歌手3
p
NODE *insertdata(NODE *h,int n)//在第n个点后插入新节点 { NODE *p,*q; int i; q = h; p = (NODE *)malloc(sizeof(NODE));
for(i=1;i<n;i++) q=q->next;
p->next = q->next; q->next = p; return h;
5.文件关闭 (1)文件操作完成后,必须要用fclose函数进行关闭 (2)格式是:
int fclose(FILE *fp);
文件写举例
//从键盘输入字符后,写入到磁盘文件datafile1.txt中 #include<stdio.h> main() { FILE * fp1; char str1; if((fp1=fopen("C:\\datafile1.txt","w"))==NULL) { printf("file cannot be opened\n"); exit(1); } scanf("%c",&str1); while(str1!='\n') { fputc(str1,fp1); scanf("%c",&str1); }
fclose(fp1);
}
文件读举例
//读出磁盘文件datafile.txt中的内容,将它们显示在屏幕上
#include<stdio.h> main() { FILE * fp; char str1; if((fp=fopen("C:\\datafile1.txt","r"))==NULL) { printf("file cannot be opened\n"); exit(1); } while((str1=fgetc(fp))!=EOF) printf("%c",str1); fclose(fp); }
1.3 开发技术
1.3.1结构体
(1)含义
由不同(可以相同)的数据类型的成员组成的一种新类型
(2)声明
struct 结构名{
数据类型标识符
„„
成员名1;
};
例子:歌手信息结构体
如: struct singer{ int xh; char name[10]; float score[9]; float averageScore; };
(5) 创建单链表参考算法 ① 动态分配第一个结点使h,q指向它 ② 分配一个新结点p ③ 把p成为q的后继 ④ 令q指向p
⑤ 重复②-④
运用链表来存储所有歌手的信息 建立歌手信息链表
head
xh name score *next 歌手1
q
xh name score *next 歌手2
源自文库
p
NODE *creatLink(int n)//返回头指针 { int i; NODE *head,*p,*q; head=q=p=(NODE *)malloc(sizeof(NODE)); for(i=1;i<n;i++) { p=(NODE *)malloc(sizeof(NODE)); q->next=p; q=p; q->next=NULL; } return head; }
2.分类 (1)文件可分为ASCII码文件和二进制码文件 (2)ASCII文件也称为文本文件或顺序文件,这种文件在磁 盘中存放的是每个字符的ASCII码,文件的内容可在屏 幕上按字符显示 (3)二进制文件,又叫随机文件,这种文件是按二进制编码
3.文件指针 (1)在C中,对文件的操作是通过文件指针进行 (2)定义文件指针的一般形式为: FILE *指针名;
定制报表 按薪水 排序 按年龄 排序
(2)流程图
开始
人数统计变量count=0 结点指针变量p指向链表的第 一个有效结点
链表是否查找结束? 否 人数统计变量count加1; 指针p向后移动一个结点; 是 输出统计结果
结束
1.2.3系统运行效果举例
球队信息管理系统 (1)项目功能及要求; (2)执行效果。
1.4 注意事项
1.4.1输入数据检测 系统应能对输入的数据进行检测,例如: (1)当为姓名输入空串时, 那么系统应提示错误,并 允许用户重新输入; (2)当输入分数范围不对时,那么系统应提示错误, 并允许用户重新输入; (3)当日期输入错误时,那么系统应提示错误,并允 许用户重新输入;
1.4.2系统对信息进行增、删、改、查四种基本操 作 其中“增”即是插入,“删”即是删除; “改”指对指定节点修改给定信息; “查”指对指定节点进行“查找”,并显示其信 息。
typedef
data
next
数据域
指针域
(4)malloc函数
①原型 void *malloc(usigned size)
②作用
③说明
分配size个字节的存储区
成功返回首地址,失败返回NULL 若要存储数据,必须进行强制类型转换 应该使用指针指向分配的区域 如: struct singer *ps; ps=(struct singer *)malloc(sizeof(struct singer));
}
歌手删除参考代码
xh name score *next xh name score *next xh name score *next
歌手1
歌手2
歌手3
q
q->next = (q->next)->next;
NODE *deletedata(NODE *h,int n)//删除第n个节点 { NODE *q=h; int i;
1.2 题目要求
1.2.1题目: 1. 歌手评分系统 2. 十佳运动员评选系统 3. 球队信息管理系统
1.2.2总体要求: 1.系统在VC6.0环境下,用纯c语言编 写; 2.系统采用结构化方法设计和实现,每 个功能模块对应一个.c文件和一个或多 个函数; 3.设计中包括模块图和流程图 (microsoft office visio 2003)。
包括结构体、函数、链表和 文件
第3部分 项目开发过程指导:
工程项目开发、多文档链接 和项目调试技术
10
第4部分 测试项目执行效果
第5部分 答辩
2
1.1.3课程考核标准
总成绩=平时成绩+小组报告+小组答辩 平时成绩(50分)=
课堂表现(10)+个人报告(20)+代码编写(20)
练习1 建立球员信息动态链表 建立十佳运动员信息动态链表
歌手插入参考代码
xh name score *next 歌手1 xh name score *next 歌手2
q
xh name score *next 歌手4 xh name
p->next = q->next; q->next = p;
主讲:姜立秋 办公室:教学楼1908
内容向导
1.1 1.2 1.3 1.4
课程介绍 题目要求 开发技术 注意事项
1.1 课程介绍
1.1.1时间安排
机房:24 学时 课外: 8 学时
合计:32 学时
1.1.2课程内容安排
内容
第1部分 课程安排、项目题目和开发 工具简介
机房
4 8
第2部分 技术讲解和指导:
1.2.3相关工具:
1. VC6.0环境; 2. microsoft office visio 2003 (1)模块图 (2)流程图
(1)模块图
球队人员信息管理系统
主菜单
添加信息
删除信息
输出信息
读取信息
写入信息
查询
报表
按姓名 查询
按编号 查询 排序
统计人数
按角色 汇总
统计薪水 总额
例子:学生信息结构体
如: struct student{ char xh[9]; char name[6]; char tel[11]; float score; };
例子:球员信息结构体 typedef struct MEM{ char number[10]; char name[20]; int role; int age; float high; float weight; float salary; struct date joinDate; struct MEM *next; }MEMBER;
1.4.3实践报告 格式要求(见实践报告模版) 内容要求 主要包含:功能模块图、流程图、程序开发详解、主要代
码及注释、测试过程及原理、执行效果图及说明、小组总 结、个人总结、分工说明、参考文献
上交要求 以小组为单位,上交小组报告、个人报告及电子 版程序代码
4.文件操作 (1)打开文件 要对文件进行操作,首先必须要打开文件 文件的打开通过函数fopen实现 fopen(char *filename, char *mode); 两个指针型的参数用来接收两个字符串 第一个指定要打开的文件名信息 第二个指定要打开的方式
经常把函数的返回值赋给一个文件指针判断打开是否成功
(1)含义 用一个指针连接的多个结点序列 -21 (2)说明 常常用一个指针指向第一个结点,以便于操作 head -21 89 … 89 76 ^
76
^
(3)链表建立例子 如: struct singer{ int xh; char name[20]; float score[3]; float averageScore; struct singer *next; }NODE;
练习1: 定义十佳运动员信息的结构体
//运动员数据 /* 运动员编号 */ /* 运动员姓名 */ /* 运动员的得票数 */
练习2: 定义球员信息的结构体 //运动员数据 /*编号*/ /*姓名*/ /*角色*/ /*年龄*/ /*身高*/ /*体重*/ /*薪酬*/ /*加入球队的日期*/
1.3.2链表
小组报告(30分) 每组答辩(20分)
书山有路勤为径 学海无崖苦做舟
1.1.4注意事项
1.先修课程:《C语言程序设计》
2.后续课程:《C++语言程序设计》 《JAVA语言程序设计》等
3.分组: (1)三个题目,5-7人左右为一组,一组指定一个 题目; (2)每组设组长一人,组员分工明确(标明每人负 责项目中的模块及相关函数)。
for(i=1;i<n-1;i++) q=q->next; q->next=(q->next)->next;
return h;
}
练习2 编程实现指定球员的插入 编程实现指定十佳运动员的删除
1.3.3文件读写
1.概念 (1)文件是存储在外存储器上的相关数据的集合 (2)文件都有一个名字叫文件名,用于相互区别 (3)文件名包含主文件名和扩展名,中间以句点(.)相连 如: myFile.c introduction.doc
//加入球队的日期
(3)定义变量、数组与指针 ①声明的同时 ②先声明后定义
如:struct singer sun,s[50];
struct singer *ps1=&sun,*ps2=s; (4)成员访问 ① 变量名.成员名 ② 指针名->成员名
如: sun.xh = 1001; ps1->score = 544.5; s[2].xh = 1002;
score *next
歌手3
p
NODE *insertdata(NODE *h,int n)//在第n个点后插入新节点 { NODE *p,*q; int i; q = h; p = (NODE *)malloc(sizeof(NODE));
for(i=1;i<n;i++) q=q->next;
p->next = q->next; q->next = p; return h;
5.文件关闭 (1)文件操作完成后,必须要用fclose函数进行关闭 (2)格式是:
int fclose(FILE *fp);
文件写举例
//从键盘输入字符后,写入到磁盘文件datafile1.txt中 #include<stdio.h> main() { FILE * fp1; char str1; if((fp1=fopen("C:\\datafile1.txt","w"))==NULL) { printf("file cannot be opened\n"); exit(1); } scanf("%c",&str1); while(str1!='\n') { fputc(str1,fp1); scanf("%c",&str1); }
fclose(fp1);
}
文件读举例
//读出磁盘文件datafile.txt中的内容,将它们显示在屏幕上
#include<stdio.h> main() { FILE * fp; char str1; if((fp=fopen("C:\\datafile1.txt","r"))==NULL) { printf("file cannot be opened\n"); exit(1); } while((str1=fgetc(fp))!=EOF) printf("%c",str1); fclose(fp); }
1.3 开发技术
1.3.1结构体
(1)含义
由不同(可以相同)的数据类型的成员组成的一种新类型
(2)声明
struct 结构名{
数据类型标识符
„„
成员名1;
};
例子:歌手信息结构体
如: struct singer{ int xh; char name[10]; float score[9]; float averageScore; };
(5) 创建单链表参考算法 ① 动态分配第一个结点使h,q指向它 ② 分配一个新结点p ③ 把p成为q的后继 ④ 令q指向p
⑤ 重复②-④
运用链表来存储所有歌手的信息 建立歌手信息链表
head
xh name score *next 歌手1
q
xh name score *next 歌手2
源自文库
p
NODE *creatLink(int n)//返回头指针 { int i; NODE *head,*p,*q; head=q=p=(NODE *)malloc(sizeof(NODE)); for(i=1;i<n;i++) { p=(NODE *)malloc(sizeof(NODE)); q->next=p; q=p; q->next=NULL; } return head; }
2.分类 (1)文件可分为ASCII码文件和二进制码文件 (2)ASCII文件也称为文本文件或顺序文件,这种文件在磁 盘中存放的是每个字符的ASCII码,文件的内容可在屏 幕上按字符显示 (3)二进制文件,又叫随机文件,这种文件是按二进制编码
3.文件指针 (1)在C中,对文件的操作是通过文件指针进行 (2)定义文件指针的一般形式为: FILE *指针名;
定制报表 按薪水 排序 按年龄 排序
(2)流程图
开始
人数统计变量count=0 结点指针变量p指向链表的第 一个有效结点
链表是否查找结束? 否 人数统计变量count加1; 指针p向后移动一个结点; 是 输出统计结果
结束
1.2.3系统运行效果举例
球队信息管理系统 (1)项目功能及要求; (2)执行效果。
1.4 注意事项
1.4.1输入数据检测 系统应能对输入的数据进行检测,例如: (1)当为姓名输入空串时, 那么系统应提示错误,并 允许用户重新输入; (2)当输入分数范围不对时,那么系统应提示错误, 并允许用户重新输入; (3)当日期输入错误时,那么系统应提示错误,并允 许用户重新输入;
1.4.2系统对信息进行增、删、改、查四种基本操 作 其中“增”即是插入,“删”即是删除; “改”指对指定节点修改给定信息; “查”指对指定节点进行“查找”,并显示其信 息。
typedef
data
next
数据域
指针域
(4)malloc函数
①原型 void *malloc(usigned size)
②作用
③说明
分配size个字节的存储区
成功返回首地址,失败返回NULL 若要存储数据,必须进行强制类型转换 应该使用指针指向分配的区域 如: struct singer *ps; ps=(struct singer *)malloc(sizeof(struct singer));
}
歌手删除参考代码
xh name score *next xh name score *next xh name score *next
歌手1
歌手2
歌手3
q
q->next = (q->next)->next;
NODE *deletedata(NODE *h,int n)//删除第n个节点 { NODE *q=h; int i;
1.2 题目要求
1.2.1题目: 1. 歌手评分系统 2. 十佳运动员评选系统 3. 球队信息管理系统
1.2.2总体要求: 1.系统在VC6.0环境下,用纯c语言编 写; 2.系统采用结构化方法设计和实现,每 个功能模块对应一个.c文件和一个或多 个函数; 3.设计中包括模块图和流程图 (microsoft office visio 2003)。
包括结构体、函数、链表和 文件
第3部分 项目开发过程指导:
工程项目开发、多文档链接 和项目调试技术
10
第4部分 测试项目执行效果
第5部分 答辩
2
1.1.3课程考核标准
总成绩=平时成绩+小组报告+小组答辩 平时成绩(50分)=
课堂表现(10)+个人报告(20)+代码编写(20)
练习1 建立球员信息动态链表 建立十佳运动员信息动态链表
歌手插入参考代码
xh name score *next 歌手1 xh name score *next 歌手2
q
xh name score *next 歌手4 xh name
p->next = q->next; q->next = p;