C语言Chapter12课程设计资料_第1页
C语言Chapter12课程设计资料_第2页
C语言Chapter12课程设计资料_第3页
C语言Chapter12课程设计资料_第4页
C语言Chapter12课程设计资料_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chapter

12课程设计12.1

电话簿管理系统随着科学技术的进步,电话簿在现代生活中越来越重要。本课程将设计一个电话簿管理系统,该系统具有输入、显示、查找、删除、插入、保存、读入、排序、退出等功能,能够实现通讯录管理工作的系统化,为人们的工作和生活提供便利。12.1.1设计要求12.1

电话簿管理系统电话簿管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由4大功能模块组成,如图12.1所示。12.1.2设计思路12.1

电话簿管理系统12.1.2设计思路(1)输入模块。输入模块主要完成将数据存入数组中的工作。记录可以从以文本形式存储的数据文件中读入,也可以从键盘逐个输入。记录由与联系人有关的基本信息字段构成。12.1

电话簿管理系统12.1.2设计思路(2)查询模块。查询模块主要完成在数组中查找满足相关条件的记录。用户可以按照联系人姓名或联系人电话号码在数组中进行查找。12.1

电话簿管理系统12.1.2设计思路更新模块。更新模块主要实现对记录的修改、删除、插入和排序。在进行更新操作之后,需要将修改的数据存入源数据文件。输出模块。实现对记录的存盘,并以表格形式将记录信息在屏幕上打印出来。12.1

电话簿管理系统12.1.3设计方法1.程序执行流程图电话簿管理系统主流程如图12.2所示。先以可读写的方式打开文本类型数据文件,此文件默认为c:\telephon,若该文件不存在,则新建此文件。12.1

电话簿管理系统12.1.3设计方法当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。文本类型文件可以使用Windows自带的记事本打开

和查看文件内容。12.1

电话簿管理系统12.1.3设计方法12.1

电话簿管理系统12.1.3设计方法在判断键值时,有效输入为0~8之间的任意数值,其他输入都被视为错误按键。若输入0,则会判断在对记录进行了更新操作之后是否进行了存盘操作,若未存盘,系统会提示用户是否需要进行数据存盘操作,用户输入Y或y,系统会进行存盘操作。最后系统执行退出电话簿管理系统的操作。12.1

电话簿管理系统12.1.3设计方法若选择1,则调用Add()函数,执行增加记录操作;若选择2,则调用Disp()函数,执行以表格形式打印输出记录至屏幕的操作;若选择3,则调用Del()函数,执行删除记录操作;若选择4,则调用Qur()函数,执行查询记录操作;若选择5,则调用Modify()函数,执行修改记录操作;12.1

电话簿管理系统12.1.3设计方法若选择6,则调用Insert()函数,执行插入记录操作;若选择7,则调用SelectSort()函数,执行按升序排序记录的操作;若选择8,则调用Save()函数,执行存储记录的操作;若输入0~8之外的值,则调用Wrong()函数,给出按键错误的提示。12.1

电话簿管理系统12.1.3设计方法2.数据结构设计本程序定义了结构体telebook,用于存放联系人的基本信息。typedef

struct

telebook{/*保存记录编号*//*联系人姓名*//*联系人电话号码*//*联系人地址*/char

num[4];char

name[10];char

phonenum[15];char

address[20];}TELEBOOK;12.1

电话簿管理系统12.1.3设计方法3.函数功能描述(1)printheader()函数原型:void

printheader()printheader()函数用于在以表格形式显示记录时,打印输出表头信息。12.1

电话簿管理系统12.1.3设计方法(2)printdata()函数原型:void

printdata(TELEBOOK

pp)printdata()函数用于以表格显示的方式,打印输出单个数组元素pp中的记录信息。12.1

电话簿管理系统12.1.3设计方法(3)Disp()函数原型:void

Disp()(TELEBOOK

temp[],int

n)Disp()函数用于显示temp数组中存储的n条记录,内容为telebook结构中定义的内容。12.1

电话簿管理系统12.1.3设计方法(4)stringinput()函数原型:float

stringinput(char

*t,int

lens,char*notice)stringinput()函数用于输入字符串,并进行字符串长度验证,t用于保存输入的字符串,notice用于保存printf()中输出的提示信息。12.1

电话簿管理系统12.1.3设计方法(5)Locate()函数原型:int

Locate(TELEBOOK

temp[],int

n,charfindmess[],char

nameorphonenum[])Locate()函数用于定位数组中符合要求的元素,并返回该数组元素的下标值。参数findmess[]保存要查找的具体内容,nameorphonenum[]表示按姓名或电话号码字段在数组temp

中查找。12.1

电话簿管理系统12.1.3设计方法(6)Add()函数原型:int

Add(TELEBOOK

temp[],int

n)Add()函数用于在数组temp中增加记录元素,并返回数组中的当前记录数。12.1

电话簿管理系统12.1.3设计方法(7)Qur()函数原型:void

Qur(TELEBOOK

temp[],int

n)Qur()函数用于在数组temp中按姓名或电话号码查找满足条件的记录,并显示出来。12.1

电话簿管理系统12.1.3设计方法(8)Del()函数原型:int

Del(TELEBOOK

temp[],int

n)Del()函数用于先在数组temp中找到满足条件的记录,然后删除该记录。12.1

电话簿管理系统12.1.3设计方法(9)Modify()函数原型:void

Modify(TELEBOOK

temp[],int

n)Modify()函数用于在数组temp中修改记录元素。12.1

电话簿管理系统12.1.3设计方法(10)Insert()函数原型:int

Insert(TELEBOOK

temp[],int

n)Insert()函数用于在数组temp中插入记录,并返回数组中的当前记录数。12.1

电话簿管理系统12.1.3设计方法(11)SelectSort()函数原型:void

SelectSort(TELEBOOK

temp[],int

n)SelectSort()函数用于在数组temp中完成利用选择排序算法实现数组的升序排序。12.1

电话簿管理系统12.1.3设计方法(12)Save()函数原型:void

Save(TELEBOOK

temp[],int

n)Save()函数用于将保存联系人电话簿的数组temp中的n个元素写入磁盘的数据文件中。12.1

电话簿管理系统12.1.3设计方法(13)主函数main()main()是整个电话簿管理系统控制部分。其详细说明可以参见图12.2。12.2

学生成绩管理系统12.2.1设计要求本课程将设计一个学生成绩管理系统,该系统具有输入、查询、修改、删除、插入、排序、统计、保存、打印、退出等功能,能够实现学生管理工作的系统化,为教师和学生的工作和学习提供便利。12.2

学生成绩管理系统学生成绩管理系统主要利用单链表实现,程序由输入、查询、更新、统计、输出5大功能模块组成。如图12.3所示。12.2.2设计思路12.2

学生成绩管理系统12.2.2设计思路(1)输入模块。输入模块主要完成将数据存入单链表中的工作。记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入。记录由学生的基本信息和成绩信息字段构成。12.2

学生成绩管理系统12.2.2设计思路查询模块。查询模块主要完成在单链表中查找满足相关条件的学生记录。用户可以按照学生的姓名或学号在单链表中进行查找。更新模块。更新模块主要实现对记录的修改、删除、插入和排序。在进行更新操作后,需要将修改的数据存入源数据文件。12.2

学生成绩管理系统12.2.2设计思路统计模块。统计各门功课最高分和不及格人数。输出模块。实现对记录的存盘,并以表格形式将记录信息在屏幕上打印出来。12.2

学生成绩管理系统12.2.3设计方法1.程序执行流程图成绩管理系统主流程如图12.4所示。首先以可读写的方式

打开数据文件,此文件默认为c:\student,若该文件不存在,则新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行按键判断。12.2

学生成绩管理系统12.2.3设计方法12.2

学生成绩管理系统12.2.3设计方法在判断键值时,有效输入为0~9之间的任意数值,其他输入都被视为错误按键。若输入0,则会判断在对记录进行了更新操作之后是否进行了存盘操作,若未存盘,系统会提示用户是否需要进行数据存盘操作,用户输入Y或y,系统会进行存盘操作。最后系统执行退出成绩管理系统的操作。12.2

学生成绩管理系统12.2.3设计方法若选择1,则调用Add()函数,执行增加记录操作;若选择2,则调用Del()函数,执行删除记录操作;若选择3,则调用Qur()函数,执行查询记录操作;若选择4,则调用Modify()函数,执行修改记录操作;若选择5,则调用Insert()函数,执行插入记录操作;若选择6,则调用Tongji()函数,执行统计记录操作;12.2

学生成绩管理系统12.2.3设计方法若选择7,则调用Sort()函数,执行按降序排序记录的操作;若选择8,则调用Save()函数,执行存储记录的操作;若选择9,则调用Disp()函数,执行将记录以表格形式打印输出至屏幕的操作;若输入0~9之外的值,则调用Wrong()函数,给出按键错误的提示。12.2

学生成绩管理系统12.2.3设计方法2.数据结构设计(1)本程序定义了结构体student,用于存放学生的基本信息。typedef

struct

student{char

num[10];char

name[15];int

cgrade;int

mgrade;/*保存学号*//*学生姓名*//*保存语文成绩*//*保存数学成绩*/12.2

学生成绩管理系统12.2.3设计方法/*保存英语成绩*//*保存总分*//*保存平均分*//*保存名次*/int

egrade;int

total;float

ave;int

mingci};12.2

学生成绩管理系统12.2.3设计方法(2)单链表node结构体。

typedef

struct

node{struct

student

data;struct

node

*next;}

Node,

*Link;12.2

学生成绩管理系统12.2.3设计方法其中,data为student结构类型的数据,next为单链表中的指针域,用来存储其直接后继节点的地址。Node为node类型的结构变量,*Link为node类型的指针变量。12.2

学生成绩管理系统12.2.3设计方法3.函数功能描述(1)printheader()函数原型:void

printheader()printheader()函数用于在以表格形式显示记录时,打印输出表头信息。12.2

学生成绩管理系统12.2.3设计方法(2)printdata()函数原型:void

printdata(Node

*pp)printdata()函数用于以表格显示的方式,打印输出单链表pp中的记录信息。12.2

学生成绩管理系统12.2.3设计方法(3)Disp()函数原型:void

Disp()(Link

1)Disp()函数用于显示单链表中存储的学生记录,内容为student结构中定义的内容。12.2

学生成绩管理系统12.2.3设计方法(4)stringinput()函数原型:float

stringinput(char

*t,int

lens,char*notice)stringinput()函数用于输入字符串,并进行字符串长度验证,t用于保存输入的字符串。notice用于保存printf()中输出的提示信息。12.2

学生成绩管理系统12.2.3设计方法(5)Locate()函数原型:Node*

Locate(Link1,char

findmess[],char

nameornum[])Locate()函数用于定位链表中符合要求的节点,并返回指向该节点的指针。参数findmess[]保存要查找的具体内容,nameornum[]表示按什么字段在单链表中查找。12.2

学生成绩管理系统12.2.3设计方法Add()函数原型:void

Add(Link1)Add()函数用于在单链表中增加学生记录的节点。Qur()函数原型:void

Qur(Link1)Qur()函数用于在单链表按姓名或学号查找满足条件的记录,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论