XX学院
C语言程序设计
课程设计报告
学 院_电气信息工程学院_ 专业班级 计科班
学生姓名: 学 号
设计点(单位)________计算机基础学中心 __ __
设计题目__ 通讯录设计_________________
完成日期: 2013 年X月X日
指导教师评语 ______________________ _________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制)______ __________
指导教师(签字)________ ________
课程设计务书
设计题目:通讯录理系统
学生姓名
课程名称
C语言程序设计课程设计
专业班级
计科201212345
点
计算机基础学中心
起止时间
2013114~2013118
设
计容求
建立通讯录输入姓名电话号码住址等信息然通信簿进行显示查找添加修改删
进步掌握利C语言进行程序设计力进步理解运结构化程序设计思想方法初步掌握开发型实系统基方法学会调试较长程序基方法学会利流程图表示算法
根题目求运学知识完成设计实现工作书写规范撰写课程设计报告
设计参数
(1)系统分析设计正确
(2)结果图表方式显示
(3)界面简洁美观
(4)报告格式规范
进度求
1月14日第节第二节 讲解课程设计务
1月14日第三节第四节 阅读课程设计指导书选择课题
1月15日第节第二节 讲解结构体相关知识
1月15日第三节第四节 学生练结构体
1月16日第节第二节 程序编码
1月16日第三节第四节 程序编码
1月17日第节第二节 程序编码
1月17日第三节第四节 编写课程设计报告
1月18日第节第二节 课程设计答辩
1月18日第三节第四节 课程设计答辩
参考资料
[1]钦铭 颜晖C语言程序设计高等教育出版社2008年
[2]谭浩强 张基温C语言程序设计教程高等教育出版社2006年
说明
1表应次实施前周负责教师填写二份院系审批交院系办备案份负责教师留2填写容较纸附
3题名学生设计容参数求等方面应区
系: 指导教师: 2013年1
摘
通讯录理系统典型理系统开发包括数库建立 文设计简通讯录系统 该题目求熟练掌握C语言基础知识:数类型(整型字符型指针数组结构等)运算类型程序结构函数等进步掌握种函数应中结构体函数调算法设计尤重良通讯录够方便户增删查改信息获取户信息汇编语言计算机应中重语言汇编语言程序代码编写通讯录理解掌握复杂汇编语言应程序编程程序完成功姓名查询模块查询输入姓名查询该信息屏提示:选择1:输入姓名姓名查询显示查询结果选择0:结束通次设计巩固加深子程序调
关键字:通讯录 理信息系统目录
1 摘
2 目录
3 软件需求分析说明书
4 系统分析设计
5 软件实现
6 软件测试
7 软件说明书
8 致谢
9 软件源代码
软件需求分析说明书
课程设计目意义
课程设计加深课堂理学理解增强动手力培养学生合作力毕业设计作实践环节准备通讯录系统手机常见计算机信息理系统务信息进行理信息输入查询修改增加删迅速准确完成种信息输入查询
二 课程设计容
系统分7功:(1)写入数 (2)读取数 (3)追加数 (4)查找数(5)删数利结构类型指针数组函数等C语言知识实现
第章 系统分析设计
21 软件界面设计
画出软件全部输入输出数界面界面进行详细操作说明①添加:添加通讯录记录
②显示:显示通讯录记录
③删:删通讯录记录 ④查询:查询通讯录记录
先选择查询方式姓名查询方式例
⑤修改:修改通讯录记录
22 软件数(结构)设计
整软件文件功文件部数格式进行说明(1)通讯录:
typedef struct
{
char score *编号*
char name[10] *姓名*
char num[15] *号码*
char email[20] *邮箱*
char age[8] *年龄*
char adds[20] *住址*
}Person
void main() *函数*
{
int n0
for()
{
switch(menu_select())
{
case 1
printf(\n\t添加记录通讯录\n) *添加记录*
nInput(pen)
break
case 2
printf(\n\t\t\t 通讯录记录表\n) *显示记录*
Display(pen)
break
case 3
printf(\n\t通讯录中删记录\n)
nDelete_a_record(pen) *删记录*
printf(\t)
system(pause)
break
case 4
printf(\n\t通讯录中查找记录\n)
Query_a_record(pen) *查找记录*
printf(\t)
system(pause)
break
case 5
printf(\n\t修改通讯录中记录\n)
Change(pen) *修改数*
printf(\t)
system(pause)
break
case 6
printf(\n\t保存功\n)
WritetoText(pen) *保存数*
printf(\t)
system(pause)
break
case 0
printf(\n\t\t谢谢见\n) *结束程序*
printf(\n\t\t)
system(pause)
exit(0)
23 软件算法设计
画出整软件模块图模块图算法程序流程图功伪代码实现
系统功模块图:
第二章 软件实现
软件涉核心功模块进行设计实现关键代码进行分析阐述
#include
#include
#include
typedef struct
{
char score *编号*
char name[10] *姓名*
char num[15] *号码*
char email[20] *邮箱*
char age[8] *年龄*
char adds[20] *住址*
}Person
Person pe[80]
int menu_select()
{
char c
do{
system(cls)
printf(\t\t *****通讯录***** \n)
printf(\t\t┌───────┐\n)
printf(\t\t│ 1 添加记录 │\n)
printf(\t\t│ 2 显示记录 │\n)
printf(\t\t│ 3 删记录 │\n)
printf(\t\t│ 4 查询记录 │\n)
printf(\t\t│ 5 修改记录 │\n)
printf(\t\t│ 6 保存记录 │\n)
printf(\t\t│ 0 退出程序 │\n)
printf(\t\t└───────┘\n)
printf(\t\t请您选择(06))
cgetchar()
}while(c<'0'||c>'6')
return(c'0')
}
int Input(Person per[]int n)
{
int i0
char signx[10]
while(sign'n'&&sign'N')
{
printf(\t编号)
scanf(\td&per[n+i]score)
printf(\t姓名)
scanf(\tsper[n+i]name)
printf(\t年龄)
scanf(\tsper[n+i]age)
printf(\t电话号码)
scanf(\tsper[n+i]num)
printf(\t通讯住址)
scanf(\tsper[n+i]adds)
printf(\t电子邮箱)
scanf(\tsper[n+i]email)
gets(x)
printf(\n\t否继续添加(YN))
scanf(\tc&sign)
i++
}
return(n+i)
}
void Display(Person per[]int n)
{
int i
printf(\n) *格式*
printf(编号 姓名 年龄 电话号码 通讯址 电子邮箱\n)
printf(\n)
for(i1i
printf(5d8s6s13s15s15s\nper[i1]scoreper[i1]nameper[i1]ageper[i1]numper[i1]addsper[i1]email)
if(i>1&&i100)
{
printf(\t\n)
printf(\t)
system(pause)
printf(\t\n)
}
}
printf(\n)
system(pause)
}
int Delete_a_record(Person per[]int n)
{
char s[20]
int i0j
printf(\t请输入想删记录中名字)
scanf(ss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return(n)
}
for(jij
strcpy(per[j]numper[j+1]num)
strcpy(per[j]nameper[j+1]name)
strcpy(per[j]ageper[j+1]age)
strcpy(per[j]addsper[j+1]adds)
strcpy(per[j]emailper[j+1]email)
per[j]scoreper[j+1]score
}
printf(\t\t\t已成功删\n)
return(n1)
}
void Query_a_record(Person per[]int n)
{
int m
printf(\t\n请选择查询方式\n)
printf(\t┌──────┐\n)
printf(\t│1姓名 │\n)
printf(\t│2电话 │\n)
printf(\t│3址 │\n)
printf(\t│4返回 │\n)
printf(\t└──────┘\n)
printf(请选择)
scanf(d&m)
while(m1&&m2&&m3&&m4)
{
printf(输入错误请重新选择)
scanf(d&m)
}
if(m1)
{
char s[20]
int i0
printf(\t请输入想查询姓名)
scanf(\tss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t年龄 s\nper[i]age)
printf(\t电话号码 s\nper[i]num)
printf(\t通讯址 s\nper[i]adds)
printf(\t电子邮箱 s\nper[i]email)
}
if(m2)
{
char s[20]
int i0
printf(\t请输入想查询电话)
scanf(\tss)
while(strcmp(per[i]nums)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t姓名 s\nper[i]name)
printf(\t年龄 s\nper[i]age)
printf(\t通讯址 s\nper[i]adds)
printf(\t电子邮箱 s\nper[i]email)
}
if(m3)
{
char s[20]
int i0
printf(\t请输入想查询址)
scanf(\tss)
while(strcmp(per[i]addss)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t姓名 s\nper[i]name)
printf(\t年龄 s\nper[i]age)
printf(\t电话号码 s\nper[i]num)
printf(\t电子邮箱 s\nper[i]email)
}
}
void Change(Person per[]int n)
{
char s[20]
int i0
printf(\t请输入想修改记录中名字)
scanf(ss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号)
scanf(\td&per[i]score)
printf(\t姓名)
scanf(\tsper[i]name)
printf(\t年龄)
scanf(\tsper[i]age)
printf(\t电话号码)
scanf(\tsper[i]num)
printf(\t通讯住址)
scanf(\tsper[i]adds)
printf(\t电子邮箱)
scanf(\tsper[i]email)
printf(\t修改成功)
}
void WritetoText(Person per[]int n)
{
int i0
FILE *fp *定义文件指针*
char filename[20] *定义文件名*
printf(\t保存文件\n) *输入文件名*
printf(\t请输入保存文件名)
scanf(\tsfilename)
if((fpfopen(filenamew))NULL)
{
printf(\t法开文件\n)
system(pause)
return
}
fprintf(fp******************************************通讯录******************************************\n)
fprintf(fp编号 姓名 年龄 电话号码 通讯址 电子邮箱\n)
fprintf(fp\n)
while(i
fprintf(fp3d\t6s\t3s\t13s\t20s\t20s\nper[i]scoreper[i]nameper[i]ageper[i]numper[i]addsper[i]email)
i++
}
fprintf(fp\n)
fprintf(fp***************************************d条记录****************************************\nn)
fclose(fp) *关闭文件*
printf(保存成功\n)
}
void main() *函数*
{
int n0
for()
{
switch(menu_select())
{
case 1
printf(\n\t添加记录通讯录\n) *添加记录*
nInput(pen)
break
case 2
printf(\n\t\t\t 通讯录记录表\n) *显示记录*
Display(pen)
break
case 3
printf(\n\t通讯录中删记录\n)
nDelete_a_record(pen) *删记录*
printf(\t)
system(pause)
break
case 4
printf(\n\t通讯录中查找记录\n)
Query_a_record(pen) *查找记录*
printf(\t)
system(pause)
break
case 5
printf(\n\t修改通讯录中记录\n)
Change(pen) *修改数*
printf(\t)
system(pause)
break
case 6
printf(\n\t保存功\n)
WritetoText(pen) *保存数*
printf(\t)
system(pause)
break
case 0
printf(\n\t\t谢谢见\n) *结束程序*
printf(\n\t\t)
system(pause)
exit(0)
第三章 软件测试
函数组装函数写出测试例格式(注:定义格式满足求写成表格形式等):
1 int Calculate(char * stuNo)*计算学生总成绩*
例1:input 20070001 output 245
例2:input 342 output 输入学号错误
2 void ShowS(char stuNO)* 根学学号显示学生信息*
例1:……………………
例2:……………………
测试:
1).显示菜单界面
2).添加界面:
3).显示界面:
4).删界面:
删通讯录里显示记录:
5).查询界面:
姓名查询方式例:
6).修改界面:
修改通讯录里显示记录:
7).保存界面:
tongxunlutxt文件截图:
问题思考:
1进行删查询修改保存等功时查询例输入名字回车然会显示该记录显示马动消失没等容请教方加入system(pause)语言某项操作完成进行暂停
2 现程序界面感觉清爽初次进行项操作运行窗口里容会直保留着感觉杂乱图(添加进行显示操作):
网寻求解决办法知道system(cls)语句解决问题修改成功
第四章 软件说明书
结合软件界面详细介绍整软件功
1).显示菜单界面 作显示软件功
2).添加界面:作添加通讯录员姓名电话住址年龄等等
3).显示界面:作查已添加员信息
4).删界面:作删已员信息
删通讯录里显示记录:
5).查询界面:作查询已员信息
姓名查询方式例:
6).修改界面:作修改已员信息
修改通讯录里显示记录:
7).保存界面:作保存记录员信息
致谢
写出次课程设计文完成程中提供帮助表达谢意
签名
日期
参考文献:
软件源代码作参考:
#include
#include
#include
typedef struct
{
char score *编号*
char name[10] *姓名*
char num[15] *号码*
char email[20] *邮箱*
char age[8] *年龄*
char adds[20] *住址*
}Person
Person pe[80]
int menu_select()
{
char c
do{
system(cls)
printf(\t\t *****通讯录***** \n)
printf(\t\t┌───────┐\n)
printf(\t\t│ 1 添加记录 │\n)
printf(\t\t│ 2 显示记录 │\n)
printf(\t\t│ 3 删记录 │\n)
printf(\t\t│ 4 查询记录 │\n)
printf(\t\t│ 5 修改记录 │\n)
printf(\t\t│ 6 保存记录 │\n)
printf(\t\t│ 0 退出程序 │\n)
printf(\t\t└───────┘\n)
printf(\t\t请您选择(06))
cgetchar()
}while(c<'0'||c>'6')
return(c'0')
}
int Input(Person per[]int n)
{
int i0
char signx[10]
while(sign'n'&&sign'N')
{
printf(\t编号)
scanf(\td&per[n+i]score)
printf(\t姓名)
scanf(\tsper[n+i]name)
printf(\t年龄)
scanf(\tsper[n+i]age)
printf(\t电话号码)
scanf(\tsper[n+i]num)
printf(\t通讯住址)
scanf(\tsper[n+i]adds)
printf(\t电子邮箱)
scanf(\tsper[n+i]email)
gets(x)
printf(\n\t否继续添加(YN))
scanf(\tc&sign)
i++
}
return(n+i)
}
void Display(Person per[]int n)
{
int i
printf(\n) *格式*
printf(编号 姓名 年龄 电话号码 通讯址 电子邮箱\n)
printf(\n)
for(i1i
printf(5d8s6s13s15s15s\nper[i1]scoreper[i1]nameper[i1]ageper[i1]numper[i1]addsper[i1]email)
if(i>1&&i100)
{
printf(\t\n)
printf(\t)
system(pause)
printf(\t\n)
}
}
printf(\n)
system(pause)
}
int Delete_a_record(Person per[]int n)
{
char s[20]
int i0j
printf(\t请输入想删记录中名字)
scanf(ss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return(n)
}
for(jij
strcpy(per[j]numper[j+1]num)
strcpy(per[j]nameper[j+1]name)
strcpy(per[j]ageper[j+1]age)
strcpy(per[j]addsper[j+1]adds)
strcpy(per[j]emailper[j+1]email)
per[j]scoreper[j+1]score
}
printf(\t\t\t已成功删\n)
return(n1)
}
void Query_a_record(Person per[]int n)
{
int m
printf(\t\n请选择查询方式\n)
printf(\t┌──────┐\n)
printf(\t│1姓名 │\n)
printf(\t│2电话 │\n)
printf(\t│3址 │\n)
printf(\t│4返回 │\n)
printf(\t└──────┘\n)
printf(请选择)
scanf(d&m)
while(m1&&m2&&m3&&m4)
{
printf(输入错误请重新选择)
scanf(d&m)
}
if(m1)
{
char s[20]
int i0
printf(\t请输入想查询姓名)
scanf(\tss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t年龄 s\nper[i]age)
printf(\t电话号码 s\nper[i]num)
printf(\t通讯址 s\nper[i]adds)
printf(\t电子邮箱 s\nper[i]email)
}
if(m2)
{
char s[20]
int i0
printf(\t请输入想查询电话)
scanf(\tss)
while(strcmp(per[i]nums)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t姓名 s\nper[i]name)
printf(\t年龄 s\nper[i]age)
printf(\t通讯址 s\nper[i]adds)
printf(\t电子邮箱 s\nper[i]email)
}
if(m3)
{
char s[20]
int i0
printf(\t请输入想查询址)
scanf(\tss)
while(strcmp(per[i]addss)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号 d\nper[i]score)
printf(\t姓名 s\nper[i]name)
printf(\t年龄 s\nper[i]age)
printf(\t电话号码 s\nper[i]num)
printf(\t电子邮箱 s\nper[i]email)
}
}
void Change(Person per[]int n)
{
char s[20]
int i0
printf(\t请输入想修改记录中名字)
scanf(ss)
while(strcmp(per[i]names)0&&i
{
printf(\t通讯录中没\n)
return
}
printf(\t编号)
scanf(\td&per[i]score)
printf(\t姓名)
scanf(\tsper[i]name)
printf(\t年龄)
scanf(\tsper[i]age)
printf(\t电话号码)
scanf(\tsper[i]num)
printf(\t通讯住址)
scanf(\tsper[i]adds)
printf(\t电子邮箱)
scanf(\tsper[i]email)
printf(\t修改成功)
}
void WritetoText(Person per[]int n)
{
int i0
FILE *fp *定义文件指针*
char filename[20] *定义文件名*
printf(\t保存文件\n) *输入文件名*
printf(\t请输入保存文件名)
scanf(\tsfilename)
if((fpfopen(filenamew))NULL)
{
printf(\t法开文件\n)
system(pause)
return
}
fprintf(fp******************************************通讯录******************************************\n)
fprintf(fp编号 姓名 年龄 电话号码 通讯址 电子邮箱\n)
fprintf(fp\n)
while(i
fprintf(fp3d\t6s\t3s\t13s\t20s\t20s\nper[i]scoreper[i]nameper[i]ageper[i]numper[i]addsper[i]email)
i++
}
fprintf(fp\n)
fprintf(fp***************************************d条记录****************************************\nn)
fclose(fp) *关闭文件*
printf(保存成功\n)
}
void main() *函数*
{
int n0
for()
{
switch(menu_select())
{
case 1
printf(\n\t添加记录通讯录\n) *添加记录*
nInput(pen)
break
case 2
printf(\n\t\t\t 通讯录记录表\n) *显示记录*
Display(pen)
break
case 3
printf(\n\t通讯录中删记录\n)
nDelete_a_record(pen) *删记录*
printf(\t)
system(pause)
break
case 4
printf(\n\t通讯录中查找记录\n)
Query_a_record(pen) *查找记录*
printf(\t)
system(pause)
break
case 5
printf(\n\t修改通讯录中记录\n)
Change(pen) *修改数*
printf(\t)
system(pause)
break
case 6
printf(\n\t保存功\n)
WritetoText(pen) *保存数*
printf(\t)
system(pause)
break
case 0
printf(\n\t\t谢谢见\n) *结束程序*
printf(\n\t\t)
system(pause)
exit(0)
}
}
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档