通信软件课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

韶关学院
软件课程设计报告设计题目:XXXXXXXXXXXX
学生姓名:XXXXXXXX
学号:XXXXXXX
院(系):计算机科学学院
专业:通信工程
班级:12级(1)班
指导教师姓名及职称:李强
起止时间:2014年9月—— 2014年11月
1前言
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读C语言课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

本课程设计报告主要由以下内容组成:
(1)程序要求
(2)算法分析
(3)源程序
(4)调试结果
2 程序要求
学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,为了简化计论,要求所设计的管理系统有以下几种种功能:
(1)能够输入并显示n个学生m门考试科目的成绩;
(2)计算总分和平均分;
(3)按总分由高到低进行排序
(4)任意输入一个学号,能够显示该生的各门功课成绩;
3 算法分析
1.学生成绩管理软件的数据结构
可以用静态数据结构――结构体数组来存储管理n个学生的学号、姓名、成绩等信息,结构如下:
truct student
{
int number; /* 每个学生的学号*/
char name[10]; /* 每个学生的姓名*/
int score[COURSE_NUM]; /* 每个学生M门功课的成绩*/
int sum; /* 每个学生的总成绩*/
float average; /* 每个学生的平均成绩*/
};
typedef struct student STU;
2.各函数的功能和实现
(1)void AppendScore(STU *head, int n, int m)
函数功能:向链表的末尾添加从键盘输入学生的学号、姓名和成绩等信息
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量n,表示学生人数
整型变量m,表示考试科目
函数返回值:无
(2)void PrintScore(STU *head, int n, int m);
函数功能:打印n个学生的学号、姓名和成绩等信息
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量n,表示学生人数
整型变量m,表示考试科目
函数返回值:无
(3)void TotalScore(STU *head, int n, int m)
函数功能:计算每个学生的m门功课的总成绩和平均成绩
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量n,表示学生人数
整型变量m,表示考试科目
函数返回值:无
(4)void SortScore(STU *head, int n)
函数功能:用选择法按总成绩由高到低排序
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量n,表示学生人数
函数返回值:无
(5)int SearchNum(STU *head, int num, int n)
函数功能:查找学生的学号
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量num,表示要查找的学号
整型变量n,表示学生人数
函数返回值:如果找到学号,则返回它在结构体数组中的位置,否则返回-1 ( 6 ) void SearchScore(STU *head, int n, int m)
函数功能:按学号查找学生成绩并显示查找结果
函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址
整型变量n,表示学生人数
整型变量m,表示考试科目
函数返回值:无
(7) char Menu(void)
函数功能:显示菜单并获得用户键盘输入的选项
函数参数:无
函数返回值:用户输入的选项
4 程序源代码
void AppendScore(STU *head, int n, int m)
{
int j;
STU *p;
for (p=head; p<head+n; p++)
{
printf("\nInput number:");
scanf("%d", &p->number);
printf("Input name:");
scanf("%s", p->name);
{
printf("Input score%d:", j+1);
scanf("%d", p->score+j);
}
}
}
void PrintScore(STU *head, int n, int m)
{
STU *p;
int i;
char str[100] = {'\0'}, temp[3];
strcat(str, "Number Name ");
for (i=1; i<=m; i++)
{
strcat(str, "Score");
itoa(i,temp, 10);
strcat(str, temp);
strcat(str, " ");
}
strcat(str," sum average");
printf("%s", str); /* 打印表头*/
for (p=head; p<head+n; p++) /* 打印n个学生的信息*/ {
printf("\nNo.%3d%8s", p->number, p->name);
for (i=0; i<m; i++)
{
printf("%7d", p->score[i]);
}
printf("%11d%9.2f\n", p->sum, p->average);
}
}
void TotalScore(STU *head, int n, int m)
{
STU *p;
int i;
for (p=head; p<head+n; p++)
{
p->sum = 0;
{
p->sum = p->sum + p->score[i];
}
p->average = (float)p->sum / m;
}
}
void SortScore(STU *head, int n)
{
int i, j, k;
STU temp;
for (i=0; i<n-1; i++)
{
k = i;
for (j=i; j<n; j++)
{
if ((head+j)->sum > (head+k)->sum)
{
k = j;
}
}
if (k != i)
{
temp = *(head+k);
*(head+k) = *(head+i);
*(head+i) = temp;
}
}
}
int SearchNum(STU *head, int num, int n)
{
int i;
for (i=0; i<n; i++)
{
if ((head+i)->number == num) return i;
}
return -1;
}
void SearchScore(STU *head, int n, int m)
{
int number, findNo;
printf("Please Input the number you want to search:");
scanf("%d", &number);
findNo = SearchNum(head, number, n);
if (findNo == -1)
{
printf("\nNot found!\n");
}
else
{
PrintScore(head+findNo, 1, m);
}
}
char Menu(void)
{
char ch;
printf("\nManagement for Students' scores\n");
printf(" 1.Append record\n");
printf(" 2.List record\n");
printf(" 3.Search record\n");
printf(" 4.Sort record\n");
printf(" 0.Exit\n");
printf("Please Input your choice:");
scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/ return ch;
}
main()
{
char ch;
int m, n;
STU stu[STU_NUM];
printf("Input student number and course number(n<40,m<10):");
scanf("%d,%d", &n, &m);
while (1)
{
ch = Menu(); /* 显示菜单,并读取用户输入*/
switch (ch)
{
case'1':AppendScore(stu, n, m);/* 调用成绩添加模块*/
TotalScore(stu, n, m);
break;
case'2':PrintScore(stu, n, m); /* 调用成绩显示模块*/
break;
case'3':SearchScore(stu, n, m);/* 调用按学号查找模块*/
break;
case'4':SortScore(stu, n); /* 调用成绩排序模块*/
printf("\nSorted result\n");
PrintScore(stu, n, m); /* 显示成绩排序结果*/
break;
case'0':exit(0); /* 退出程序*/
printf("End of program!");
break;
default:printf("Input error!");
break;
}
}
}
5 调试结果
6课程设计体会
经过一段时间的课程设计学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机编程才能更好地学习它,通过实践,我也发现我的好多不足之处,需要通过学习改进;比如对C语言的一些标准库函数不太了解,还有对函数调用
的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过课程设计的学习,我认识到学好C语言要重视编程实践,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

8 参考文献
1 《编程之美》编程之美小组编。

电子工业出版社2008年
2 《C程序设计基础课程设计》张引编著浙江大学出版社2008年。

相关文档
最新文档