资源描述
.
成
绩
《C语言程序设计》
课程设计报告
专 业:
班 级:
姓 名:
指导教师:
二零一二年十二月 二十六日
目 录
一、设计题目……………………………………………………………2
二、设计目的……………………………………………………………2
三、设计内容……………………………………………………………2
3。1需求分析……………………………………………………………2
3.2 概要设计…………………………………………………………3
3.3 详细设计…………………………………………………………6
3.5 编写过程中遇到的问题及解决办法……………………………7
3.4 调试结果…………………………………………………………8
3。6课程设计总结……………………………………………………16
四、参考书目…………………………………………………………17
附录A 程序源代码…………………………………………………18
一、设计题目:课程信息管理系统
二、设计目的
1、熟练掌握C语言课程中所学的理论知识;
2、通过综合C语言的基本知识来解决实际问题;
3、加强分析和解决问题的能力。
三、设计内容
3.1 需求分析
设计对n门课程进行管理的课程信息管理系统,每门课程有课程编号,课程名称,课程性质(B为必修,X为选修),总学时,学分等。系统功能包括:
1、系统以菜单方式工作,密码登陆。
2、课程信息的录入功能(增加数据)。用数组数据类型赋初值的方法把课程信息送到各个数组中(但注意要是合法数据),然后把它们输出显示。
3、课程信息的删除(删除数据)。任意输入一门课程的编号,将它所有的信息从数组中删除.
4、课程信息的浏览功能(查找数据)。任意输入一门课程的编号,打印出所有 相关数据。要求能多次查找.
5、课程信息的删除(修改数据)。任意输入一门课程的编号,打印出所有相关信息后,可对某一项信息进行修改并保存。
6、课程信息的计算并排序.计算所有课程的总学分及平均学分(aver,单精度,输出一位小数),将包括所有数据的数组元素按价格从高到低的顺序排序打印出来.
3。2 概要设计
程序流程图:
开始
根据菜单输入d的值选择程序
Quit()函数
输入c==1
查询课程信息
课程信息的录入
退
出
删除课程信息
修改课程信息
输入3
输入2
输入1
输入4
输入5
浏览课程信息
课程学分排序
保存
是否继续进行
结束
菜单
N
Y
模块分解:
void pasd(); //声明密码函数
声明部分
(1)主函数模块 void zhujie(); //声明zhujie()函数
zhujie(); //调用zhujie()函数
调用部分
pasd(); //调用密码函数
联系
联系
声明部分:void yewu(); //声明业务函数
(2)密码模块
调用部分:yewu(); //调用业务函数
联系
联系 void inputcouinfo(void); //声明输入函数
void updatecouinfo(void); //声明修改函数
void addcouinfo(void); //声明添加函数
声明部分
void findcouinfo(void); //声明查询函数
void ordercouinfo(void); //声明排序函数
(3)业务模块 void delcouinfo(void); //声明删除函数
inputcouinfo(); //调用输入函数
case ’1':findcouinfo();break; //调用课程信息查询
调用部分 case ’2':delcouinfo();break; //调用课程信息删除
case ’3’:updatecouinfo();break; //调用课程信息修改
case ’4':ordercouinfo();break; //调用课程信息排序
case '5':addcouinfo(); break; //调用课程信息添加
数据结构的说明:
#define n1 20 //控制课程个数的存储空间
#define m1 5 //控制课程属性个数的存储空间空间
char couinfo[n1][m1][16]; //定义全局数组
char password[]={"123456”}; //原密码
int a, i,j,t=0,c=0,n=4,m=5; //定义全局变量
密码模块:
char p[9]; //定义密码数组
p[i]==8 //控制退格
p[i]==13 //回车控制
strcmp(p,password)==0 //密码匹配 字符串比较函数
int n=3; //密码输入次数控制
业务模块:
system(”cls”); //清屏函数
3.3 详细设计
密码模块:
定义数组密码
int n=3;n=3; n=3;
int n=3; int i;
密码是否匹配
n为控制输入密码次数
注释
进 入 业 务 函 数
Y (是) N(否)
Y N
结束 始
开 始
删除模块:
char y[16]; char y1[16]; int d,x,z;
定义变量数组
开 始
scanf("%d",&x);
输入一个X值
注释
X值是否等于0
注释
Y与Y1是否相等
输入Y,Y1的值
结 束
Y N
显示没有删除的课程
删除该课程
结 束
Y N
3。4 编写过程中遇到的问题及解决办法
(1)在调试函数的过程时,一般高级语言要求函数实参与形参个数与类型一致,但在C语言编译在该点检查不严格。当出现实参与形参类型不一致时,编译运行时,系统不报错.因此,错误隐含了下来,给程序调试带来了困难。
解决方法是:一开始,我自己仔细查找自己的程序的错误,但最终在老师的帮助下,找到了程序的错误。并将其改正,使程序正常运行。
(2)当要求从键盘读入一字符串时,若选用输入的函数不当时,则容易造成错误,并很难发现.解决方法:自己认真并且反复检查以及老师的帮助。
3.5 调试结果
界面
3.6 课程设计总结
课程管理信息系统心得
课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在.因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识.通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
我做的是课程管理信息系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。更加是第一次做这样的课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是函数调用和数组的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法. 经过一波三折,终于开始正式编程。
编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。
通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!
四。参考书目:
[1] 谭浩强,《C程序设计教程》,北京,清华大学出版社,2007年
[2] 康莉,《零基础学C语言》,北京,机械工业出版社,2010年
[3] 方风波,《C语言程序设计》,北京,地质出版社,2006年
附录A 源程序代码
#include <stdio.h>
#include 〈conio.h〉 //Console Input/Output(控制台输入输出)
#include 〈string.h>
#define n1 20 //控制课程个数的存储空间
#define m1 5 //控制课程属性个数的存储空间空间
char couinfo[n1][m1][16]; //定义全局数组
char d[16], b[6];
char password[]={"123456"}; //原密码
int a, i,j,t=0,c=0,n=4,m=5; //定义全局变量
//主函数模块
void main()
{
void pasd(); //声明密码函数
void zhujie(); //声明zhujie()函数
zhujie(); //调用zhujie()函数
pasd(); //调用密码函数
}
void zhujie()
{
printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");
printf("★******************************************************************************\n");
printf(”★** * **************************** * **\n”);
printf("★* *★★★★* * ★★★★ **欢迎进入课程管理信息系统** ★★★★ * * ★★★★ * *\n");
printf(”★** * **************************** * **\n”);
printf("★************Welcome to the course information management system***************\n");
printf("★******************************************************************************\n”);
printf(”★***★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★***\n”);
printf("★** ★ ★★★★★★★★ ★★ ★★★★★★★★ ★ **\n”);
printf("★* ★ ★★ ★ *\n”);
printf("★* ★ **************** ★★ **************** ★ *\n");
printf("★* ★ * 添加课程信息 * ★★ * 删除课程信息 * ★ *\n");
printf("★* ★ **************** ★★ **************** ★ *\n”);
printf(”★* ★ ★★ ★ *\n");
printf(”★* ★ ★★ ★ *\n");
printf(”★*★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★*\n”);
printf("★* ★ ★★ ★ *\n");
printf(”★* ★ ★★ ★ *\n”);
printf("★* ★ **************** ★★ **************** ★ *\n”);
printf("★** ★ * 查询课程信息 * ★★ * 修改课程信息 * ★ **\n”);
printf("★***★ **************** ★★ **************** ★***\n”);
printf(”★******************************************************************************\n");
printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n”);
}
//密码模块
void pasd(void) //定义密码函数
{
void yewu(); //声明业务函数
int i;
char p[9];
int n=3; //密码输入次数控制
do
{
printf(”please enter password:\n"); //输入密码
for(i=0;i〈6;i++)
{
p[i]=getch();
if (p[i]==8) //控制退格
{
i=i-2;
printf("\b \b");
}
else
{
printf(”*");
if(p[i]==13) break; //回车控制
}
p[6]=’\0';
}
if(strcmp(p,password)==0) //密码匹配strcmp(p,password)
{
//printf(”\n");
c=1;
yewu(); //调用业务函数
break;
}
else
{
printf(”please enter password again:\n”);
n—-;
}
}
while(n〉0);
}
//业务模块
void yewu() //定义业务函数
{
void inputcouinfo(void); //声明输入函数
void addcouinfo(void); //声明添加函数
void findcouinfo(void); //声明查询函数
void ordercouinfo(void); //声明排序函数
void delcouinfo(void); //声明删除函数
void updatecouinfo(void); //声明修改函数
char d;
system(”cls”);
if (c==1)
{
inputcouinfo(); //调用输入函数
printf("\t课程信息查询请输入: 1 \n\t课程信息删除请输入: 2 \n\t课程信息修改请输入: 3 \n\t课程信息排序请输入: 4 \n\t课程信息添加请输入:5\n");
printf("您是否进行其他操作,否输入0,否则输入其他:");
scanf(”%d",&a);
for (i=0;;i++)
{
if(a!=0)
{
printf("请输入要操作的选项:”);
scanf("%s",&d);
switch(d)
{
case ’1':findcouinfo();break; //调用课程信息查询函数
case '2’:delcouinfo();break; //调用课程信息删除函数
case '3’:updatecouinfo();break; //调用课程信息修改函数
case '4':ordercouinfo();break; //调用课程信息排序函数
case '5’:addcouinfo(); break; //调用课程信息添加函数
default: break;
}
}
}
}
}
//课程信息输入模块
void inputcouinfo(void) //定义课程信息输入函数
{
int x=1;
printf(”\t\t\t **********************\n”);
printf(”\t\t\t 欢迎进入信息输入系统!!\n");
printf("\t\t\t **********************\n");
printf("请注意:性质为必修(B)或选修(X)\n");
printf(”\t\t课程号 名称 性质 总学时 学分\n");
for (i=0;i〈n;i++)
{
printf(”输入课程编号%d:",x++);
for (j=0;j〈m;j++)
{
scanf(”%s",&couinfo[i][j]);
}
}
printf(”课程号 名称 性质 总学时 学分\n");
for (i=0;i〈n;i++)
{
for (j=0;j〈m;j++)
{
printf("%s\t",couinfo[i][j]);
}
printf("\n”);
}
}
void addcouinfo(void) //课程信息添加函数
{
int d,t,z;
printf(”\t\t\t**********************\n”);
printf("\t\t\t欢迎进入信息添加系统!!\n”);
printf(”\t\t\t**********************\n”);
for(d=1;;d++)
{
printf("\n是否进行添加,“否” 请输入0,进行输入其他\n”);
scanf(”%d",&t);
if(t!=0)
{
printf(”请输入要添加的第%d个课程信息:\n",d);
printf("课程号 名称 性质 总学时 学分\n”);
z=n++;
for (j=0;j<m;j++)
{
scanf("%s”,&couinfo[z][j]);
printf(”%s\t”,couinfo[z][j]);
}
}
else break;
}
system("cls”);
printf(”\t课程查询请输入: 1 \n\t课程删除请输入: 2 \n\t课程修改请输入: 3 \n\t课程排序请输入: 4 \n\t课程添加请输入:5\n”);
}
void findcouinfo(void) //课程信息查询函数
{
char y[16];
int d,t,z;
printf(”\t\t\t**********************\n");
printf("\t\t\t欢迎进入信息查询系统!!\n");
printf(”\t\t\t**********************\n");
for(d=1;;d++)
{
printf(”\n是否进行查询,“否” 请输入0\n");
scanf(”%d",&t);
if(t!=0)
{
printf("请输入要查询的课程号:");
scanf("%s”,&y);
printf(”课程号 名称 性质 总学时 学分\n”);
for(i=0;z=i,i〈n1;i++)
{
if(strcmp(y,couinfo[i][0])==0)
{
for (j=0;j〈m;j++)
{
printf("%s\t”,couinfo[i][j]);
}
break;
}
}
if(z==n) printf("没有此课程号信息\n”);
}
else break ;
}
system(”cls");
printf("\t课程查询请输入: 1 \n\t课程删除请输入: 2 \n\t课程修改请输入: 3 \n\t课程排序请输入: 4 \n\t课程添加请输入:5\n”);
}
void delcouinfo(void) //课程信息删除函数
{
char y[16];
char y1[16];
int d,x,z;
printf("\t\t\t**********************\n”);
printf(”\t\t\t欢迎进入信息删除系统!!\n");
printf("\t\t\t**********************\n”);
for(d=1;;d++)
{
printf(”是否进行删除信息,否请输入: 0 进行输入其他数字:\n");
scanf("%d”,&x);
if(x!=0)
{
printf(”请输入要删除的课程号:”);
scanf("%s”,&y);
printf(”请再次输入要删除的课程号:");
scanf(”%s”,&y1);
printf("课程号 名称 性质 总学时 学分\n");
if (strcmp(y,y1)==0)
{
for (i=0;i〈n;i++)
{
if (strcmp(y,couinfo[i][0])==0)
{
z=i;
printf("要删除的课程信息是\n”);
for (j=0;j〈m;j++)
{
printf(”%s\t”,couinfo[i][j]);
}
t++;
}
printf(”\n");
}
for (i=z;i〈n-t;i++)
{
for (j=0;j〈m;j++)
{
strcpy(couinfo[i][j],couinfo[i+1][j]);
}
}
if(z==n) printf(”没有此课程号信息\n");
}
}
else break;
printf("课程号 名称 性质 总学时 学分\n");
for (i=0;i〈n-t;i++)
{
for (j=0;j<m;j++)
{
printf(”%s\t”,couinfo[i][j]);
}
printf("\n”);
}
}
system(”cls");
printf("\t课程查询请输入: 1 \n\t课程删除请输入: 2 \n\t课程修改请输入: 3 \n\t课程排序请输入: 4 \n\t课程添加请输入:5\n");
}
//课程修改函数
void updatecouinfo(void)
{
char h[16],h1[16],h2[16];
int d,b,x,z,e,f;
printf("\t\t\t**********************\n”);
printf("\t\t\t欢迎进入信息修改系统!!\n”);
printf(”\t\t\t**********************\n");
for(d=1;;d++)
{
printf(”是否进行信息修改,否请输入: 0 进行输入其他数字:\n");
scanf(”%d”,&x);
if(x!=0)
{
printf("请输入要修改的课程号:");
scanf("%s",&h);
printf(”请再次输入要修改的课程号:");
scanf("%s",&h1);
if (strcmp(h,h1)==0)
{
for(i=0;z=i,i〈n;i++)
{
if (strcmp(h,couinfo[i][0])==0)
{
printf(”要修改的课程信息是\n");
for (j=0;j<m;j++)
{
printf(”%s\t",couinfo[i][j]);}
printf("\n请输入你要修改第几项\n”);scanf(”%d",&b);
p
展开阅读全文