C语言课程设计指导书2011

更新时间:2024-03-09 00:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课程设计指导书

C语言课程设计指导书

1 课程设计目标

使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。

课程设计的目的和要求:

1.使学生巩固和加强《C语言程序设计》课程的理论知识。

2.使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。

3.使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。

4.进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。 5.使学生掌握调试程序的基本方法及上机操作方法。 6.掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。

7.通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。

8.初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

9.培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。

10.培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

2 课程设计内容

2.1设计环境

1、硬件:PC机。

2、 软件:操作系统为Win7或Windows xp,设计语言为Visual C++6.0或Turbo C2.0。 2.2基本要求

1.课程设计采取每两人一组,体现团队合作精神,要求选定一人为组长。 2.可以选择老师提供的参考选题(选题方法另行公布),也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用(和网上 1

C语言课程设计指导书

雷同的一律不批准)。 3.要求有欢迎界面、菜单、数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可;可以加以其他功能或修饰,使程序更加完善、合理; 4.模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现; 5.学生所选课题必须上机通过,并获得满意的结果; 6.设计上交内容:设计报告每组一份(按附件1的格式书写);源程序文件; 7.流程图要采用N-S流程图; 10.源程序书写风格:锯齿型书写格式。 2.3设计过程

1.根据问题描述,设计数据存储方式;

2.分析系统功能,划分功能模块,确定各模块函数名称; 3.主程序算法设计和各模块算法设计; 4.编程实现; 5.调试和测试;

6.完成设计文档和课程设计说明书。 2.4、课程设计报告格式及要求

一、封面(见附件1); 二、目录; 三、需求分析;

描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。 四、总体设计(程序设计总流程图及各模块划分);

五、详细设计(各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等);

六、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施;

七、测试结果,用几组测试数据进行测试算法设计的正确性,要包括测试数据和运行结果。

八、附录。

源程序清单和结果:源程序要加注释。 2.5、设计题目

题目一:文件加密与解密 (1)问题描述

①数据的输入和输出;要求使用文件操作。文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。 ②换位加密和解密:

加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密

2

C语言课程设计指导书

文;

解密:输入密文后再输入移位位数则可输出明文; ③凯撒加密和解密:

加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;

解密:输入密文后再输入移位位数则可输出明文; ④统计单词的个数; ⑤退出。

(2)功能要求

①系统以菜单方式工作;菜单形式不限。 ②界面比较美观。

③要有一定的容错能力,比如说输入一个不存在的菜单项编号。 (3)算法分析 注:(1)换位加密的原理:它把明文中的字母重新排列,本身不变,但位置变了,换位密码是靠重新安排字母的次序,而不是隐藏他们。首先将英文句子中的空格去除,然后将句子排成若干行,每行的字符数为换位位数,再按列输出即为密文,不足部分填入a,b,c…。 例如英文Can you come here若换位位数取4,则形成矩阵 c a n y o u c o m e h e r e a b

则密文为comraueenchayoeb ,其中矩阵中的红色a和b是由于不足而填入的。

(2)替代密码原理:通过将字母按顺序推后n位起到加密作用,如果n=3,则将字母A换作字母D,将字母B换作字母E。X变成A,Y变成B,Z变成C,x变成a,y变成b,z变成c。

假如有这样一条指令: Can you come here

用凯撒密码加密后就成为: Fdq Brx Frph khuh 题目二:魔方阵 (1)问题描述

2

把整数1到n排成一个n×n方阵, 使方阵中的每一行, 每一列以及对角线上的数之和都相同。

①n阶魔方阵的产生;生成后的魔方阵要写入文件。 ②最大值的位置;

③指定行的排序,排序方法不限; ④求素数; ⑤求完数; ⑥求水仙花数; ⑦退出。

(2)功能要求

①系统以菜单方式工作;菜单形式不限。 ②界面比较美观。

③要有一定的容错能力,比如说按行排序是输入一个不存在的行号,输入的魔方阵阶数为偶

3

C语言课程设计指导书

数等。

(3)算法分析

如n为奇数, 魔方阵可按下述方法构成:

(1) 把1填在第一行的正中间, 然后填入后续的数;

(2) 若数k填在第i行第j列的格子中, 那么k+1应填在它的左上方, 即第i-1行第j-1列的那个格子中, 如果左上方无格子,即:若i-1为0, 那么填在第n行第j-1列的格子中;若j-1为0, 那么填在第i-1行第n列的格子中; 若i-1和j-1都为0, 那么填在第n行第n列的格子中。

(3) 若按(2)的方法找到的格子中已填过数了, 那么数k+1改填在第k个数的正下方。即填在第i+1行和第j列的那个格子中。

3成绩评定

3.1考核内容和方式

1.在设计期间,学生要按时上课(2-4学时,时间地点另行通知),设计结束根据记录的设计材料整理成设计说明书。设计说明书中应写下设计中的主要收获,要求对问题有一定的分析,文字简短明确流畅。 2.通过设计答辩方式(开学第4周检查),并结合学生的动手能力,独立分析解决问题的能力和创新精神,设计成绩由指导教师根据设计说明书质量、答辩表现以及程序质量综合评定。 3.2评价标准

课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序。 优(90分以上):必须要有一定的创意,有自己独特的算法。按要求完成课题的全部功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好;

良(80-89分):完成课题规定的功能,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进,无明显错误;

中(70-79分):完成课题规定的功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确,但有少于失误;

及格(60-69分):完成课题规定的大部分功能,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确,个别功能没有实现,但错误不多;

不及格(59分以下):没有完成课题规定的功能,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。

4

报告封面

课程设计报告

课程设计名称: C语言程序设计

指导教师:

学 生:

学 号:

学 院:

完成时间: 2011.9.17

嘉应学院电子信息工程学院

1

附件1

C语言课程设计说明书

目录

1 需求分析 ................................................................................................. 1 2总体设计 .................................................................................................. 3 2.1 ....................................................................... 错误!未定义书签。 2.2 ....................................................................... 错误!未定义书签。 3详细设计 .................................................................................................. 4 4调试与测试.............................................................................................. 8 5测试结果 ................................................................................................ 11 6附录 ........................................................................................................ 14

I

C语言课程设计说明书

1 需求分析

(描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。)

课程设计的目的和要求:

1.使学生巩固和加强《C语言程序设计》课程的理论知识。

2.使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。

3.使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。

4.进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。

5.使学生掌握调试程序的基本方法及上机操作方法。

6.掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。

7.通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。

8.初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,

1

C语言课程设计说明书

又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

9.培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。

10.培养学生良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

2

C语言课程设计说明书

2总体设计

(程序设计总流程图及各模块划)

开始 生成文件 在文档中生成一个文件 魔方 主菜单 显示出一个子函数选择的介绍菜单 构建五个子函数 子函数调用 结果 结束

3

C语言课程设计说明书

3详细设计

(各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等)

1. 魔方流程图

输入一个奇数n n%2=0 输入 c=(n-1)/2 错误, s=1,nn=n*n 请重 新输 当s<=nn 入 magic[i][c] = s , s++ (s-1) % n == 0 i-- , c++ i++ i<0 i=n i = n-1 i=0 c<0 c= c>=n n-1 c=0 for (i = 0; i < n; i ++) for (c = 0; c < n; c ++) 输出magic[i][c] 输出换行 输出换两行 x-- 4

C语言课程设计说明书

2 最大值函数

输入:c, k, i, l, max max = magic[0][0] for (i = 0; i < n; i ++) for (c = 0; c < n; c ++) magic[i][c] > max max = magic[i][c] k = i l = c 输出最大值,行数,列数数 输出: ◇◆◇◆◇◆◇◆◇◆◇◆ 3 排序子函数

5

C语言课程设计说明书

int j, x, temp, b 输出:需要排序的行数b 输出: ◇◆◇◆◇◆◇◆◇◆◇ for (j = 0; j < n - 1; j ++) for (x = 0; x < n - 1 - j; x ++ ) magic[b-1][x] > magic[b-1][x + 1] 真 假 temp =magic[b-1][x] magic[b-1][x] = magic[b-1][x + 1] magic[b-1][x + 1] = temp for (j = 0; j < n; j ++) 输出:magic[b-1][j] 输出:◆◇◆◇◆◇◆◇◆ 4素数子函数

6

C语言课程设计说明书

输入:i , j, m 输出:◆◇◆◇◆◇◆◇◆◇ for (j=0; j

7

C语言课程设计说明书

输入:j, sum, h, m 输出:◇◆◇◆◇◆◇◆◇◆◇◆ for (m = 0; m < n; m ++) for (h = 0; h < n; h ++) sum = 0 for(j = 1; j <= magic[m][h]/2; j ++) magic[m][h]%j = 0 sum=sum+j sum=magic[m][h] 输出:magic[m][h] for(j=1;j<=magic[m][h]/2;j++) magic[m][h]%j=0 输出:j 6 水仙花数子函数

8

C语言课程设计说明书

输入:i, k, s, l, m, sum = 0 输出:◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ n<13 输出:水仙花数有: for (l = 0; l < n; l ++) for (m = 0; m < n; m ++) 魔方 i = magic[l][m] 方阵 k = i 没有 s = k % 10 水仙 k = k / 10 花数 sum = sum + s * s * s while (k > 0) (i == sum)&&(i!=1) 输出 magic[l][m] sum = 0 输出:◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆

4调试与测试

9

C语言课程设计说明书

(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)

1. 发生不少错误和一些程序上的问题。

解决办法:通过与同学的讨论和自己的反复思考和练习,中途还通过重装软件形式完成此项设计。 2. 对设计魔方矩阵的设计不懂

解决办法:通过网上百度,和同学们之间多交流。 3. 对课文中已经学过的完数,排序和最大值这几个函数还不太了解,不知道如何是好。

4. 存在一些应粗心而造成的小错误,例如:括号漏写,导致程序出错

解决问题:反复测试,找出问题所在。

10

C语言课程设计说明书

5测试结果

(用几组测试数据进行测试算法设计的正确性,要包括测试数据和运行结果)

11

C语言课程设计说明书

12

C语言课程设计说明书

13

C语言课程设计说明书

6附录

(源程序清单和结果:源程序要加注释) #include

void daxiao (int magic[][100], int n); //最大值函数声明 void paixu (int magic[][100], int n); //行数排序函数声明 void sushu (int magic[][100], int n); //素数函数声明 void wangshu (int magic[][100], int n); //完数函数声明

void shuixianhuashu (int magic[][100], int n); //水仙花数函数声明

void main() {

FILE *fp;

int i=0, n, nn, c, s,v,x=1,t=1; int magic[100][100];

char *filename=\

fp=(filename,\ //生成文件 if((fp=fopen(\ {

printf(\ exit(0); }

while(x) {

printf (\请输入一个奇数:\\n\ //生成魔方阵 scanf (\ if((n%2)==0)

printf(\数据输入错误,请重新输入\\n\ else {

c=(n-1)/2; s=1; nn=n*n;

while (s <= nn) {

magic[i][c] = s; s ++;

if((s-1) % n == 0)

14

C语言课程设计说明书

\\n\

\\n\

\\n\

\\n\

\\n\

\\n\

i++; else {

i --; c ++; }

if(i < 0) i = n-1; else if (i == n) i = 0; if(c < 0) c = n-1; else if(c >= n) c = 0; }

for (i = 0; i < n; i ++) {

for (c = 0; c < n; c ++) {

fprintf(fp,\ printf (\ }

printf (\ }

printf (\ x--; } }

while (t) //显示菜单 {

printf(\ 1 求魔法阵的最大值以及所在行列

printf(\ 2 求各行的排序

printf(\ 3 求素数

printf(\ 4 求完数

printf(\ 5 求水仙花数

printf(\ 6 退出 printf(\请输入以上你想要求得的数字: \\n\\n\\n\scanf (\

15

C语言课程设计说明书

if (v >= 1 && v <= 6)

switch (v) //子函数调用 {

case 1 :daxiao (magic, n);break; case 2 :paixu (magic, n);break; case 3 :sushu (magic, n);break; case 4 :wangshu (magic, n);break;

case 5 :shuixianhuashu (magic, n);break; case 6 :t--; } else {

printf (\数据输入错误\\n\ }

} }

void daxiao (int magic[][100], int n) //最大值子函数 {

int c, k, i, l, max; printf (\#####################################################\\n\ max = magic[0][0];

for (i = 0; i < n; i ++) {

for (c = 0; c < n; c ++) {

if (magic[i][c] > max) {

max = magic[i][c]; k = i; l = c; } } }

printf (\最大值= %d\\n行数 = %d\\n列数数 = %d\\n\ printf

(\

printf (\}

void paixu (int magic[][100], int n) //排序子函数 {

16

C语言课程设计说明书

int j, x, temp, b; printf (\

printf (\请输入需要排序的行数: \\t\ scanf (\ {

printf (\ printf

(\

for (j = 0; j < n - 1; j ++)

for (x = 0; x < n - 1 - j; x ++ )

if (magic[b-1][x] > magic[b-1][x + 1]) {

temp =magic[b-1][x];

magic[b-1][x] = magic[b-1][x + 1]; magic[b-1][x + 1] = temp; } }

for (j = 0; j < n; j ++) {

printf (\ }

printf

(\

}

void sushu (int magic[][100], int n) //素数子函数 {

int i, j, m; printf

(\

printf (\此魔方阵中的素数有:\\n\ for (j=0; j

for (i=0; i

for (m=2; m <=magic[j][i]; m ++) {

if (m

if (magic[j][i]%m==0)break; if(magic[j][i]==m) printf (\

17

C语言课程设计说明书

} } }

printf

(\

}

void wangshu (int magic[][100], int n) //完数子函数 {

int j, sum, h, m; printf (\ printf

(\

for (m = 0; m < n; m ++) {

for (h = 0; h < n; h ++) {

sum = 0;

for(j = 1; j <= magic[m][h]/2; j ++) if(magic[m][h]%j == 0) sum+=j;

if(sum==magic[m][h]) {

printf(\的因子是:\ for(j=1;j<=magic[m][h]/2;j++) if(magic[m][h]%j==0) printf(\ printf(\ } } }

printf

(\

}

void shuixianhuashu (int magic[][100], int n) //水仙花数子函数

{

int i, k, s, l, m, sum = 0; printf (\¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\\n\

if(n<13)

18

C语言课程设计说明书

printf(\此魔方阵没有水仙花数\ else

printf(\水仙花数有:\\t\

for (l = 0; l < n; l ++) {

for (m = 0; m < n; m ++) {

i = magic[l][m]; k = i; do {

s = k % 10; k = k / 10;

sum = sum + s * s * s; }

while (k > 0);

if ((i == sum)&&(i!=1))

printf (\ sum = 0; } }

printf(\ printf

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\\n\\n\\n\

}

19

(\

本文来源:https://www.bwwdw.com/article/bu6a.html

Top