字体:  

C语言课程设计指导报告书

学友集 发表于: 2006-12-23 14:31 来源: 学友集 社区门户

C语言课程设计指导
一. 课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:
1. 巩固和加深学生对C语言课程的基本知识的理解和掌握
2. 掌握C语言编程和程序调试的基本技能
3. 利用C语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用C语言解决实际问题的能力
二.  课程设计要求
1. 分析课程设计题目的要求
2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行
4. 设计完成的软件要便于操作和使用
4. 设计完成后提交课程设计报告
三. 课程设计内容
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
四. 课程设计报告的内容
1. 课程设计名称、班级号、学号、学生姓名和课程设计起止日期
2. 课程设计目的和要求
3. 课程设计任务内容
4. 详细设计说明
5.软件使用说明
6. 课程设计心得与体会
7. 附录1:参考文献
8. 附录2:部分程序清单(带有较详细的注释)
五. 评分依据
1. 根据平时上机考勤、表现和进度,教师将每天点名和检查,学生不得以自己有电脑为借口而不来上机
2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六. 进度计划
第一天  选择课程设计题目,分析课题的要求,编写详细设计说明
第二天  交详细设计说明电子稿,编程
第三天  编程及调试
第四天  写课程设计报告,提交软件
第五天  提交课程设计报告(打印稿及电子稿),答辩
七. 课程设计题目
(所有软件以菜单方式工作,菜单制作方式参见附录2)
1.  设计一个多功能计算软件
实现功能:
1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回 菜单。
例如:输入:2
+
5
输出:7
2)实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下:
例如:输入:2+5
输出:7
2.  学生成绩管理系统
1)  具备对成绩的管理功能(添加、删除、排序)
2)  具备对成绩的统计功能(最高分,最低分,平均分,及格率等)
3)  具备按学号、姓名、或课程名查询成绩的功能。
    备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。

3.  设计一个通讯录管理软件。
实现功能:
1)  通讯录编辑(添加、删除)。
2)  按不同的项进行查找。
3)  对已存在的通讯录按不同的项排序。
4)  将通讯录写入文件
5)  从文件读入通讯录
备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。
八. 附录
附录1:详细设计说明书的编写提示(参考件)
F.2程序系统的结构
用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间 的层次结构关系。
F.3程序1(标识符)设计说明
  从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。 对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。
  F.3.1程序描述
    给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是否有返回值?等)。
  F.3.2功能
    说明该程序应具有的功能,可采用输入一处理一输出的形式。
  F.3.3性能
   说明对该程序的全部性能要求,包括对精度、灵活性和时间特性的要求。
  F.3.4输人项
   给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。 数量和频度、输入媒体(例如键盘,文件等)、输入数据的来源和安全保密条件等等。
  F.3.5输出项
   给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、 数量和频度,输出(例如显示器,文件等)、对输出图形及符号的说明、安全保密条件等等。
  F.3.6算法
   详细说明本程序所选用的算法,具体的计算公式和计算步骤。
  F.3.7流程逻辑
   用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。
  F.3.8接口
  用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(结构体等)。
  F.3.9存储分配
根据需要,说明本程序的存储分配。
  F.3.10注释设计
说明准备在本程序中安排的注释,如:
   a. 加在模块首部的注释;
   b. 加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释;
   d. 对使用的逻辑所加的注释等等。
  F.3.11限制条件
  说明本程序运行中所受到的限制条件。
  F.3.12测试计划
   说明对本程序进行单体测试的计划,包括对测试的技术要求、输入数据、预期结果等。
  F.3.13尚未解决的问题
   说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。
F.4程序2(标识符)设计说明
  用类似F.3的方式,说明第2个程序乃至第N个程序的设计考虑。

最新回复

学友集 at 2006-12-23 14:33:00
......
附录2:一个显示菜单的主函数
main()
{
  int x0,y0;
  char a;
  while(1)
  {
    textbackground(1);
    textcolor(14);
    clrscr();
    a=0,x0=30,y0=3;
    gotoxy(x0+1,y0); puts("系  统  主  菜  单");
    gotoxy(x0,y0+=3);puts("1: 打开或建立文件");
    gotoxy(x0,y0+=2);puts("2: 录   入  数   据");
    gotoxy(x0,y0+=2);puts("3: 删   除  数   据");
    gotoxy(x0,y0+=2);puts("4: 数   据  查   询");
    gotoxy(x0,y0+=2);puts("5: 退   出  系   统");
    gotoxy(x0-10,y0+=3);printf("请输入数字选择:    ");
    a=bioskey(0)%256;
    switch(a)
    {
  case '1'penfile(); break;
  case '2':inputdata();break;
  case '3':deletedata();break;
  case '4':finddata(); break;
  case '5':closefile(); exit(0);
  default: ;
    }
  }
}
附录3:相关函数
以下函数的原型都在conio.h中。
1、window函数:
原型:void window  (int left, int top, int right, int bottom);
原型在conio.h中。
功能:创建矩形字符文本窗口。其左上角的坐标由left,top表示;右下角的坐标由right, bottom表示。
注意:一旦该函数调用成功,所有定位坐标都是相对于窗口,而非相对于屏幕。 2、clrscr函数
原型:void clrscr(void);
功能:清除当前字符窗口,将光标定位在左上角(1,1)处。
3、textbackground函数
原型:void textbackground(int newcolor);
功能:设置字符屏幕的背景颜色为newcolor。
4、textcolor函数
原型:void textcolor(int newcolor);
功能:设置字符屏幕下的字符颜色为newcolor。
颜色的枚举说明如下:
enum COLORS {
  BLACK,      /* dark colors */
  BLUE,
  GREEN,
  CYAN,
  RED,
  MAGENTA,
  BROWN,
  LIGHTGRAY,
  DARKGRAY,    /* light colors */
  LIGHTBLUE,
  LIGHTGREEN,
  LIGHTCYAN,
  LIGHTRED,
  LIGHTMAGENTA,
  YELLOW,
  WHITE
};
5、gotoxy函数
原型:void gotoxy(int x, int y);
功能:将字符屏幕的光标移动到x,y所指定的位置。如果其中有一个坐标值无效,则光标不移动。
6、gettext函数
原型:int  gettext(int left, int top, int right, int bottom,void *buf);
功能:将左上角的坐标为(left,top),右下角的坐标为(right,bottom)矩形上的字符拷贝到由buf所指向的内存。
注意:
(1)坐标是屏幕绝对坐标,不是窗口的相对坐标。
(2)保存屏幕上一个区域所需要的内存数量可按照公式:rowscolumns2
  原因是屏幕上每个字符要求两字节的存储单元,一个字节存放字符本身,另一个字节存放该字符的属性(显示属性)。
7、puttext函数
原型:int  puttext(int left, int top, int right, int bottom,void * buf);
功能:将原来由gettext函数存储到buf所指向的内存中的字符拷贝到左上角的坐标为(left,top),右下角的坐标为(right,bottom)的矩形区域中。
注意:坐标是屏幕绝对坐标,不是窗口的相对坐标。
8、bioskey函数
原型:int bioskey(int cmd);
该函数原型在bios.h中。
功能:bioskey完成直接键盘操作。cmd的值决定执行什么操作。
如果cmd的值是0,bioskey返回下一个在键盘上键入的值(它将等待到按下下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个“普通键”时,它的低8位数存放着该字符的ASCII码。对于“特殊键”,低8位为0。特殊键包括箭头键,功能键,shift,Alt键等。高8位存放该键的扫描码。
当cmd的值是1时,bioskey查询是否已经按下一个键。当按下时,它返回它返回非0值;否则返回0。
例如:
while(bioskey(1)==0);  /* 查询是否已经按下一个键,没有按,继续查询。*/
{
  key=bioskey(0);  /* 获取键入的键值*/
  key=key&0xff?0:key>>8;   /* 获取键入的键值*/
  if(key==45) exit(0);  /* 按Alt+x或Alt+X,退出*/
  if(key==30);   /*按 Alt+a或alt+A */
  …
}

附录4 参考文献:
[1]谭浩强.  C程序设计(第三版) . 北京:清华大学出版社, 2005
[2]谭浩强.  C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 2005