C语言课程设计报告.docx
- 文档编号:10021453
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:14
- 大小:41.47KB
C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
C语言课程设计论文
学生姓名:
陈丹
学生学号:
所在班级:
信息与计算科学一班
任课教师:
马老师
通讯录管理系统
【设计目的】
设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。
(1)数据包括:
人名、工作单位、电话号码和E-mail地址。
(2)可对记录中的姓名和电话号码进行修改。
(3)可增加或删除记录。
(4)可显示所有保存的记录。
(5)可按人名或电话号码进行查询。
【设计思路】
根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】
图1系统功能模块图
【详细设计】
1.主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
【程序】
图2.主函数流程图
Voidmenu()/*主界面*/
{
intn,w1;
voidenter();voidadd();voidmodify();voidbrowse();voiddeleter();voidsearch();
do
{
puts("\t******************************菜单*****************************\t\n\n");
puts("\t\t\t\t1.新建联系人");
puts("\t\t\t\t2.添加联系人");
puts("\t\t\t\t3.修改");
puts("\t\t\t\t4.删除");
puts("\t\t\t\t5.浏览");
puts("\t\t\t\t6.查找");
puts("\t\t\t\t7.退出");
puts("\n\n\t***************************通讯录******************************\t\n");
printf("请选择服务种类(1-7):
[]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{w1=1;getchar();}
elsew1=0;
}while(w1==1);
switch(n)
{
case1:
enter();break;/*输入模块*/
case2:
add();break;/*添加模块*/
附录:
源代码
#defineN50
#include
#include
structpeople
{charname[20];charcompany[50];charnum[15];charmail[20];}peop[N];
voidprintf_face()
{printf("\n\t姓名\t单位\t电话号码\t邮箱\n");}
voidprintf_one(inti)
{printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i].num,peop[i].mail);}
voidprintf_n(intn)
{intj;
for(j=0;j {if((j! =0)&&(j%10==0)){printf("\n\nPressanykeytocontinue...: ");getchar();puts("\n\n");} printf_one(j); }getchar(); } intload() {FILE*fp; inti; if((fp=fopen("file","rb"))==NULL) {printf("\nCannotopenfile\n"); exit(0); } for(i=0;! feof(fp);i++) fread(&peop[i],sizeof(structpeople),1,fp); fclose(fp); return(i-1); } intmodify_data(inti,intn) {intc,w1;voidinput(inti);voidmenu(); do {puts("\n修改选项=>\n\n1).2).单位3).电话号码4).5).所有数据6).取消并返回"); printf("请选择? : []\b\b"); scanf("%d",&c); if(c>6||c<1){puts("\nChooseerror! Pleaseagain! ");getchar();} }while(c>6||c<1); do {switch(c) {case1: printf("name: ");scanf("%s",peop[i].name);break; case2: printf("company: ");scanf("%s",peop[i].company);break; case3: printf("number: ");scanf("%s",peop[i].num);break; case4: printf(": ");scanf("%s",peop[i].mail);break; case5: input(i);break; case6: menu(); } puts("\nNow: \n"); printf_face();printf_one(i); printf("\n确定? \n\n\t1).是2).不,重新修改3).返回不保存[]\b\b"); scanf("%d",&w1); }while(w1==2); return(w1); } voidinput(inti) {printf_face();printf("\t"); scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num,peop[i].mail);} voidsave(intn) {FILE*fp;inti; if((fp=fopen("file","wb"))==NULL) {printf("\nCannotopenfile\n"); exit(0); } for(i=0;i if(peop[i].name[0]! ='\0') if(fwrite(&peop[i],sizeof(structpeople),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); } voidprintf_back() { intw;voidbrowse();voidmenu(); printf("\n\n\t^_^.Successful.^_^\n\n"); printf("Whatdoyouwanttodo? \n\n\t1).浏览所有\t2).返回: []\b\b"); scanf("%d",&w); if(w==1)browse(); elsemenu(); } voidmain() { voidmenu(); menu(); } voidmenu() { intn,w1; voidenter();voidadd();voidmodify();voidbrowse();voiddeleter();voidsearch(); do { puts("\t************************菜单************************"); puts("\t\t*******************1.新建联系人*******************"); puts("\t\t*******************2.添加联系人*******************"); puts("\t\t*******************3.修改*******************"); puts("\t\t*******************4.删除*******************"); puts("\t\t*******************5.浏览*******************"); puts("\t\t*******************6.查找*******************"); puts("\t\t*******************7.退出*******************"); puts("\n\n\t********************通讯录*********************"); printf("请选择服务种类(1-7): []\b\b"); scanf("%d",&n); if(n<1||n>7) {w1=1;getchar();} elsew1=0; }while(w1==1); switch(n) { case1: enter();break; case2: add();break; case3: modify();break; case4: deleter();break; case5: browse();break; case6: search();break; case7: exit(0); } } voidenter() {inti,n; printf("Howmanypeople(0-%d)? : ",N-1); scanf("%d",&n); printf("请输入数据: \n"); for(i=0;i {printf("\n输入第%d个记录.\n",i+1); input(i); } if(i! =0)save(n); printf_back(); } voidadd() {inti,n,k,t; n=load(); printf("Howmanypeopledoyouwanttoadd(0-%d)? : ",N-n-1); scanf("%d",&t);k=n+t; for(i=n;i {printf("\n输入第%d个记录.\n",i-n+1);input(i);} save(k);printf_back(); } voidmodify() {structpeoples;inti,n,k,w0=1,w1,w2=0; n=load(); do {k=-1;printf_face();printf_n(n); do {printf("\n\nEnternamethatyouwanttomodify! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,peop[i].name)==0){k=i;s=peop[i];} if(k==-1)printf("\n\n没有记录请重新输入! "); }while(k==-1); printf_face();printf_one(k); w1=modify_data(k,n); if(w1==1){printf("\n\t^_^.Successful^_^.\n\n是否继续? \n\n\t1).是2).保存返回\t[]\b\b"); scanf("%d",&w0);w2=1;} else {w0=0;if(w2==0)peop[k]=s;} if((w0! =1)&&(w2==1))save(n); }while(w0==1);menu(); } voidbrowse() {intn; n=load(); printf_face();printf_n(n); printf("\t共有%d记录.\n",n); printf("\nPressanykeytoback..."); getchar(); menu(); } voidsearch() {intw0,k,i,n,w1,w2;structpeoples;n=load(); do {printf("请选择查找类别: 1).2).电话号码[]\b\b"); scanf("%d",&w1);if(w1<1||w1>2){printf("输入错误! 请重新输入! \n");w2=1;} }while(w2==1); if(w1==1) {do {k=-1; do {printf("\n\nEnternamethattouwanttosearch! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,peop[i].name)==0){k=i;s=peop[i];} if(k==-1)printf("\n\n没有记录请重新输入! "); }while(k==-1); printf_face();printf_one(k); printf("\nWhatdoyouwanttodo? \n\t1).继续2).返回菜单[]\b\b"); scanf("%d",&w0); }while(w0==1); menu(); } else {do {k=-1; do {printf("\n\nEnternumberthattouwanttosearch! \nNum: "); scanf("%s",s.num); for(i=0;i if(strcmp(s.num,peop[i].num)==0){k=i;s=peop[i];} if(k==-1)printf("\n\n没有记录请重新输入! "); }while(k==-1); printf_face();printf_one(k); printf("\nWhatdoyouwanttodo? \n\t1).继续2).返回菜单[]\b\b"); scanf("%d",&w0); }while(w0==1); menu(); } } voiddeleter() {structpeoples;inti,n,k,w0,w1; n=load(); do {k=-1;printf_face();printf_n(n); do {printf("\n\nEnternamethatyouwanttodelete! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,peop[i].name)==0){k=i;s=peop[i];} if(k==-1)printf("\n\n没有记录请重新输入! "); }while(k==-1); printf_face();printf_one(k); printf("\n确定? \n\t1).是2).返回[]\b\b"); scanf("%d",&w0); if(w0==1){peop[k].name[0]='\0';save(n);}elsebreak; printf("\n\t^_^.Successful^_^.\n"); printf("Whatdoyouwanttodo? \n\t1).继续2).返回[]\b\b"); scanf("%d",&w1); }while(w1==1); menu(); } 【设计体会】 通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。 它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。 同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。 因为我们学习知识就是为了实践。 而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。 运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。 通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。 【参考文献】 朱若愚.数据结构[M].: 电子工业出版社,2006.1: 41-65 晋良颍.数据结构[M].: 人民邮电出版社,2007.05: 21-45 刘大有.数据结构[M].: 高等教育出版社,2006.3: 30-58 赵文静.数据结构与算法[M].: 科学出版社,2007.8: 41-64 徐孝凯.数据结构简明教程.[M].: 清华大学出版社,2006.04: 102-115 严蔚敏,吴伟民.数据结构(C语言版)[M].: 清华大学出版社,2007.4: 39-43 傅清祥,王晓东.数据结构与算法设计[M].: 电子工业出版社,2006.3: 31-46 王敬华,林萍,.陈静.C语言程序设计[M].: 清华大学出版社,2007.10: 22-39 李云清,杨庆红,揭安全.数据结构(C语言版)[M].: 人民邮电出版社,2006.1: 44-67 [10]李春葆.数据结构(C语言版)习题与解析[M].: 清华大学出版社,2006.1: 47-55
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告