课 程 设 计
课程设计名称: 数据结构课程设计
专 业 班 级 :
学 生 姓 名 :
学
号 :
指 导 教 师 :
课程设计时间: 2012.6.11—2012.6.22
1
计算机应用技术 专业课程设计任务书
学生姓名
题 目
课题性质
指导教师
专业班级
学号
学生成绩管理系统
A
韩萍
课题来源
同组姓名
D
无
1- 完成一个学生信息管理系统,主要信息包括姓名 学号 性别 以及 5 科期末
考试成绩,并能够将所有学生相关信息储存至文件
2- 包括新建添加,查询(按学号,姓名),按各科成绩排序,修改学生信息,
主要内容
按学号删除学生信息等基本功能
3- 拓展新增了密码保护功能,人性化菜单提示
4- 完成实验报告,包括需求分析,概要设计,开发工具及编程语言,调试分
析,测试结果,参考文献,心得体会
熟练掌握一中乃至多种编辑器,养成良好的变成习惯综合运用和融化所学理论
知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的
目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性
任务要求
基础训练的目的。在规定的时间内完成报告,报告中对关键部分给出图表说明。
要求格式规范,工作量饱满;语言表达准确,概念清楚;实验方法科学,分析
归纳合理;整体构思合理,理论依据充分,设计完整,界面友好,有一定的实
用价值。此外还要求数据准确,公式推导正确;设计格式、绘图、图纸、实验
数据、较为标准的运用等符合有关标准和规定,设计过程认真。
《C 语言程序设计》(第三版)谭浩强 清华大学出版社
参考文献
《数据结构(C 语言版)》严蔚敏 清华大学出版社
《C Primer Plus》(第五版中文版)Stephen Prata 人民邮电出版社
2
指导教师签字:
审查意见
教研室主任签字:
2012 年 6 月 18 日
说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
填 表 说 明
1.“课题性质”一栏:
A.工程设计;
B.工程技术研究;
C.软件工程(如 CAI 课题等);
D.文献型综述;
E.其它。
2.“课题来源”一栏:
A.自然科学基金与部、省、市级以上科研课题;
B.企、事业单位委托课题;
C.校、院(系、部)级基金课题;
D.自拟课题。
3
1 需求分析
本次数据结构设计以“学生信息管理系统”为题,题目要求开发一个学生信
息管理系统,学生信息包括:姓名、学号、性别、英语成绩、Java 成绩、数据
结构成绩、数字逻辑电路成绩和计算机组成原理成绩等基本信息(也可以根据自
己的当前能力进行扩充)。
基本功能包括:
1- 实 现 对 学 生 信 息 的 新 建 添 加 , 并 能 有 效 地 储 存 至 ASCII 文 件
students_list.txt
2-对已有的学生成绩信息进行排序,分别对各科成绩均作出排序并输出排序
结果
3-可以对已有的学生信息进行有效地修改,修改时按学号查找修改目标
4-实现对已有学生全部信息的删除并保存至原文件中
5-根据个人情况又在将基本功能全部实现的前提下增加了菜单选项和密码
验证功能,使得程序整体更加人性化
students_list.txt 文件结构:
姓名 学号 性别 英语 Java 数据结构 数字电路 计算机
1001 man
zhao
1002 man
qian
1003
sun
1004 man
zhou
1005 man
zhen
1006
wang
zhang 1007
78.0
67.0
wom 90.0
38.0
84.0
wom 59.0
wom 78.0
89.0
65.0
94.0
48.0
72.0
87.0
66.0
90.0
63.0
91.0
59.0
68.0
89.0
88.0
98.0
61.0
99.0
28.0
58.0
99.0
65.0
87.0
60.0
93.0
60.0
92.0
77.0
72.0
2 概要设计
一,数据结构
struct students{
char Num[10];
/*字符型学生学号*/
char Name[20];
/*字符型学生姓名*/
char Sex[3];
/*字符型学生性别*/
double English;
/*双精度实型英语成绩*/
double Java;
double Sjjg;
double Szdl;
double Jsj;
/*双精度实型 Java 成绩*/
/*双精度实数据结构*/
/*双精度实型数字电路*/
/*计算机组成原理*/
struct students *next;
/*用与构建连表指向下一结点*/
};
FILE *fp;
二,模块划分
/*定义全局变量 fp*/
void Revisemenu();/*修改菜单*/
void Sortmenu();/*排序菜单*/
void menu();/*主菜单*/
void secret();/*安全验证*/
struct students * Input();/*新建学生信息*/
void fprint(struct students *head);/*将信息导入文件可追加*/
void fprint_(struct students *head);/*将信息导入文件并覆盖*/
void Browse(struct students *head);/*浏览全部学生信息*/
struct students * create(struct students *head,int *n);/* 从
tushu_list 中读取数据构建链表*/
void FindofNum(struct students *head);/*按学号查询学生信息*/
void FindofNname(struct students *head);/*按姓名查询学生信息*/
void SortEnglish(struct students * head);/*按英语成绩排序*/
void SortJava(struct students * head);/*按 Java 成绩排序*/
void SortSjjg(struct students * head);/*按数据结构成绩排序*/
void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/
void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/
struct students * Delete(struct students * head,char m[15]);/*按学
号删除学生成绩信息*/
struct students * Revise();/*修改学生信息(按编号修改)*/
三,程序总体框架
模块层次结构只确定了模块之间的关系以及函数原型,不是程序的执行步
5
骤。程序的总体框架是程序的总体流程图。此程序并非是按照顺序逐一执行的,
其中有某些程序他们之间的关系并不是递进,而是并列。所以选取一个合适的菜
单是最佳方案。程序的总体框架如下:
由主函数进入程序
密码验证
未通过
通过后输出主菜单
学生信息管理系统
1-添加新同学
3-按学号查询
5-按成绩排序
7-删除学生信息 0-退出系统
2-浏览学生信息
4-按姓名查询
6-修改学生信息
输入对应编号
5-调用排序菜单
3
-
按
学
号
查
找
4
-
按
姓
名
查
询
0
-
退
出
系
统
1
-
添
加
新
同
学
2
-
浏
览
全
部
学
生
信
息
1
-
英
语
排
序
2
-
J
a
v
a
排
序
3
-
数
据
结
构
排
序
4
-
数
字
电
路
排
序
5
-
计
算
机
排
序
7
-
修
改
图
书
6
-
按
编
号
删
除
图
书
退出系统
3 运行环境
windows,linux 等下都能运行,无需配置环境变量
4 开发工具和编程语言
本程序全部代码均由 Microsoft Visual C++ 6.0 编写并调试,使用 C 编程
语言编写,由 cmd 命令行执行,DOC 运行。
6
5 详细设计
菜单选项
1.函数原型,及功能参数
函数原型:void menu()/*主菜单*/
void Revisemenu()/*修改菜单*/
void Sortmenu()/*排序菜单*/
返回值均为空,无特殊参数,主要输出调试菜单
2.程序清单
void menu(){
printf("
学生信息管理系统
\n");
printf("---------------------------------------------------\n");
printf("
printf("
printf("
printf("
1-添加新同学
2-浏览学生信息
3-按学号查询
4-按姓名查询
5-按成绩排序
6-修改学生信息
7-删除学生信息
0-退出系统
\n");
\n");
\n");
\n");
printf("---------------------------------------------------\n");
}
void Sortmenu(){
printf("
按成绩排序
printf("
1-大学英语
2-JAVA 编程
printf("
3-数据结构
4-数字逻辑电路
printf("
5-计算机组成原理
0-返回上级菜单
}
void Revisemenu(){
printf("
1--修改学生姓名
2--修改学生学号
printf("
3--修改学生性别
4--修改英语成绩
\n");
\n");
\n");
\n");
\n");
\n");
printf("
5--修改 JAVA 成绩
6--修改数据结构
\n");
printf("
7--修改数字电路
8--修改计算计
printf("
0--返回上级菜单
\n");
\n");
7
}
密码验证
1.函数原型,功能及形参说明
函数原型:void secret()
函数功能:实现系统的密码验证功能
参数说明: char a[20]
20 个字符以内的密码输入
system("cls");
库函数 清频
2.程序清单
void secret(){
char a[20];
printf("**进入学生信息管理系统前请先进行密码验证---");
do{
gets(a);
/*输入密码*/
system("cls");
/*调用库函数清屏*/
printf("对不起!您输入的密码有误,请重新输入---");
}while(strcmp(a,"0605")!=0);
/*单一密码“0605”*/
system("cls");
printf("
}
建立添加新同学及是否保存
1.函数原型,功能及形参说明
欢迎进入学生信息管理系统\n");
函数原型:struct students * Input()
函数功能:实现学生信息的添加及保存(其中调用函数 void fprint(struct
students *head);/*将信息导入文件可追加*/)
参数说明:*head
链表头结点指针
*p1,*p2
辅助结点 局外变量
2.程序清单
struct students * Input(){
struct students *p1,*p2,*head;
/*建立辅助结点及头结点*/
8