长 春 大 学
课程设计纸
目 录
一、设计目的 ...................................................... 2
二、设计内容 ...................................................... 3
三、设计要求 ...................................................... 4
四、设计过程 ...................................................... 4
1.算法思想分析 ................................................ 4
2.算法描述与实现 .............................................. 5
3.系统测试 .................................................... 7
五、设计总结 ..................................................... 11
参考文献 ......................................................... 12
附录 ............................................................. 13
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
共 17 页 第 1 页
长 春 大 学
一.设计目的
课程设计纸
1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能
力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方
法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所
应具备的科学的工作方法和作风。
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
共 17 页 第 2 页
课程设计纸
长 春 大 学
二.设计内容
2.1 开发环境
操作系统: Windows 7
开发工具:Microsoft Visual C++ 6.0
开发语言:C++
2.2 功能简介:
本程序采用 C++编写,用于管理学生信息,基本功能有 批
量添加学生信息,单个添加学生信息,按学号查找学生,按姓
名查找学生,按学号删除学生信息,排序输出全部学生信息以
及退出功能。
程序流程:
开始
选择功能
批
量
添
加
按
学
号
查
找
按
姓
名
查
找
添
加
信
息
按
学
号
删
除
排
序
输
出
结束
共 17 页 第 3 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学
三.设计要求
课程设计纸
1) 程序设计要求:
①采用交互工作方式,设计功能菜单;
②建立数据文件,数据包含学生的自然信息和成绩信息(设计几门课以及
总成绩);
③对如下关键字:姓名、学号、各科成绩进行排序(冒泡、选择、插入排序
等任选一种)。
2) 用二分查找实现如下查询:
①按姓名查询
②按学号查询
3) 用堆排序找出总成绩排名的前 5 名学生
4) 输出任一查询结果(可以连续操作)
四.设计过程
1.算法思想分析
根据设计要求,首先定义三个数组,分别存放学号、
姓名、成绩.
typedef struct stud //学生信息结构
{
long num;
char name[20];
float score;
}Stud;
然后编写函数,实现添加、查找、删除、排序、退出
共 17 页 第 4 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学
课程设计纸
功能,对数组元素进行操作。
2.算法描述与实现
添加信息:
定义添加信息函数,将输入的信息添加到数组中:
void inser(long b)
{
Node *last,*current,*p;
current=head;
while(current!=NULL&&b>current->student.num){
last=current;
current=current->next;
}
查找学生:
//按姓名查找
void searchname(char *s)
{
Node *p=head;
int flag=0;
printf("\n 学号 姓名 成绩:\n");
while(p!=NULL)
{
if(strcmp(p->student.name,s)==0)
{
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.sc
ore);
flag=1;
p=p->next;
continue;
}
else p=p->next;
}
if(!flag) printf("没有找到相关信息");
}
共 17 页 第 5 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学
课程设计纸
void find(long b)
//按姓名查找
{
Node *p=head;
while(p!=NULL&&b!=p->student.num)
p=p->next;
if(!p) printf("No found\n");
else {
printf("\n 学号 姓名 成绩\n");
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.sc
ore);
}
}
输出信息:
void print()
{
Node *p=head;
printf("\n 学号
while(p!=NULL){
printf("%ld %s %f\n",p->student.num,p->student.name,p->stude
成绩:\n");
姓名
nt.score);
p=p->next;
}
printf("\n");
}
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
共 17 页 第 6 页
长 春 大 学
3.系统测试
1.菜单
课程设计纸
用户运行程序后,显示如下所示菜单,用户根据菜单提示进行
操作(如图 2.1)。
2.批量添加
图 2.1
用户选择批量添加学生信息功能进行批量添加,可连续添加,
按 0 结束添加操作(如图 2.2)。
图 2.2
共 17 页 第 7 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
长 春 大 学
3.按学号查找学生
课程设计纸
将学生信息录入之后,若想查找某个学生,用户可选择按学
号查找学生信息(图 2.3)。
图 2.3
4.按姓名查找学生
将学生信息录入之后,若想查找某个学生,用户可选择按姓
名查找学生信息(图 2.4)。
图 2.4
共 17 页 第 8 页
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊