ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:110.93KB ,
资源ID:24128143      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24128143.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计报告报告+代码班级通讯录系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计报告报告+代码班级通讯录系统.docx

1、C语言课程设计报告报告+代码班级通讯录系统理工大学计算机科学与技术学院课程设计报告课程名称:高级语言程序设计设计题目:班级通讯录学生:传华学 号:7专业班级:信管1002班指导教师:于金霞2010年 09月10日一、设计题目及要求设计题目:班级通讯录对象:信管10级(一)、技术参数和设计要求:1.该系统主要处理通讯录的相关信息。2.通讯录信息主要包括:、班级、手机、家庭、电子、通讯录地址、邮编等容。3.完成以下的操作:实现通讯录信息的添加、修改、删除和查询。(二)、设计容与步骤1. 分析并建立满足上述要求的数据结构2. 算法设计与分析3. 程序设计、实现、调试4. 课程设计说明书二、算法设计分

2、析因为一个班级里面有很多学生,而且每个学生又包含很多信息如、学号、等,这些信息又分别属于不同的数据类型,但是每个学生所包含的数据信息成分相同,所以要用到构造数据类型:结构体。用到结构体,应为要能实现查找、修改、删除等,所以又要用到链表的知识!要实现这些功能,要用到模块化设计思想,用函数来解决问题!三、具体函数分析(一)、插入新结点在插入新结点之前,先创建一个只有指针域的头结点,又指针p扫描全链表,实现尾插法,并返回头指针。(二)、删除结点用连个指针p,q扫描全链表,先通过学号找到要删除的结点q,然后将q结点从链表中删除,然后释放此结点!(三)、修改结点容通过学号找到此学生,通过switch语句

3、选择要修改的项目,然后进行修改。(四)、查找并输出通过学号找到此学生,然后分别访问并输出此结点各项容。(五)、输出通讯录顺序访问链表各个结点,并输出结点信息。(六)、保存为文件现在d盘里面创建一个读写类型文件“班级通讯录.txt”,然后通过文件类型指针fp访问此文件并写入通讯录信息。(七)、释放结点并结束程序从头结点开始,使头结点不断后移,并将前面的结点释放。四、算法流程图五、函数运行情况及部分代码(一)、主函数框架主函数要用到基本输入输出、switch语句转换操作命令,然后用goto语句实现循环操作。具体如下:int main()int cz;/操作符 struct stu *head,*q

4、; head=(struct stu*)malloc(sizeof(struct stu); head-next=NULL; system(color 2e);/修改dos窗口前背景色,用两个十六进制数表示 printf(n*C语言课程设计*n); printf( *班级通讯录*nnn); printf( * 1:新建通讯录 *n); printf( * 2:删除通讯录 *n); printf( * 3:修改通讯录 *n); printf( * 4:查询通讯录 *n); printf( * 5:显示全部记录 *n); printf( * 6:保存为文件 *n); printf( * 7:释放链

5、表并结束程序 *n); printf( *n);start :printf(输入操作符1-7:); scanf(%d,&cz); switch(cz) case 1: q=(struct stu *)malloc(sizeof(struct stu); printf(t输入:);scanf(%s,q-name); printf(t输入学号:);scanf(%d,&q-xh); printf(t输入班级:);scanf(%d,&q-grade); printf(t手机号:);scanf(%s,q-cel); printf(t家庭:);scanf(%s,q-tel); printf(t输入电子:)

6、;scanf(%s,q-mail); printf(t通讯录地址:);scanf(%s,&q-add); printf(t输入邮编:);scanf(%s,&q-post); charu(head,q); printf(插入成功!n);break; case 2:/删除 head=del(head); break;case 3: change(head);break; case 4: search(head);break; case 5: printall(head); break; case 6: printf(n); baoc(head); break; case 7: sf(head);

7、exit (0); default: printf(输入操作错误,重新); goto start; return 0;其中用到输出*来美化系统运行页面,然后用system(color 2e);语句来修改dos界面前背景颜色,如; (二)、插入函数struct stu *charu(struct stu *head,struct stu *q)/插入新结点 struct stu *p; for(p=head;p-next!=NULL;p=p-next); p-next=q; q-next=NULL; return head;运行界面如图:本部分采用尾插法。(三)、删除结点代码如下:struct

8、stu *del(struct stu *head)/删除结点 struct stu *p,*q; int a;/要删除学生的学号 if(head-next=NULL) printf(*通讯录为空!*nnn); else printf(t输入要删除学生学号:); scanf(%d,&a); for(p=head,q=p-next;q-xh!=a&q-next!=NULL;) p=p-next; q=p-next; if(q-xh=a) p-next=q-next; free(q); printf(删除成功!n); else printf(no people have found!); retu

9、rn head;运行界面:通讯录为空时:不为空时:(四)、查找输入要查找学生学号,找到后将其输出,如图:(五)修改学生信息先通过学号找到该学生,然后用switch语句选择修改项,再用switch和goto语句实现是否循环,运行如图:(六)、保存文件在D:盘中创建一个读写文件,顺序将各节点信息保存进去,代码为:struct stu *baoc(struct stu *head)/保存文件 FILE *fp; struct stu *p=head; if(head-next=NULL) printf(*通讯录为空!*nnn); else if(fp=fopen(D:班级通讯录.txt,w)=NUL

10、L) printf(cant open file!n); exit(0); while(p-next!=NULL) fwrite(p-next,sizeof(struct stu),1,fp); p=p-next; fclose(fp); printf(保存文件成功!nn); return head;运行如图:(七)、释放结点退出系统用指针p扫描链表,头指针逐步后移,释放结点p,代码如下:void sf(struct stu *head) struct stu *p=head ; printf(释放链表:n); while(p!=NULL) head=head-next; free(p); p

11、=head; printf(释放链表成功!n);运行如图;六、附录:完整原代码#include#include#include#includestruct stu char name100;/int xh;/学号 int grade;/年级 char cel15;/手机 char tel50;/ char mail50;/ char add100;/地址 char post15;/邮编 struct stu *next;struct stu *charu(struct stu *head,struct stu *q)/插入新结点 struct stu *p; for(p=head;p-next

12、!=NULL;p=p-next); p-next=q; q-next=NULL; return head;void search(struct stu *head)/查找结点并输出 struct stu *p; int a;/要查找学生的学号 if(head-next=NULL) printf(*通讯录为空!*nnn); else printf(t输入要查询学生学号:); scanf(%d,&a); for(p=head-next;p-next!=NULL;p=p-next) if(p-xh=a) printf( 要查找的学生信息为:n); printf( :);puts(p-name); p

13、rintf(t学号: );printf(%d,p-xh); printf(t年级:);printf(%dn,p-grade); printf(t手机:);puts(p-cel); printf(t:);puts(p-tel); printf(t:);puts(p-mail); printf(t地址);puts(p-add); printf(t邮编:);puts(p-post); printf(t查找成功!): printf(nnn); break; if(p-xh=a) printf( 要查找的学生信息为:n); printf( :);puts(p-name); printf(t年级:);pr

14、intf(%dn,p-grade); printf(t手机:);puts(p-cel); printf(t:);puts(p-tel); printf(t:);puts(p-mail); printf(t地址);puts(p-add); printf(t邮编:);puts(p-post); printf(t查找成功!): printf(nnn); else printf(no people have found!n); struct stu *del(struct stu *head)/删除结点 struct stu *p,*q; int a;/要删除学生的学号 if(head-next=NU

15、LL) printf(*通讯录为空!*nnn); else printf(t输入要删除学生学号:); scanf(%d,&a); for(p=head,q=p-next;q-xh!=a&q-next!=NULL;) p=p-next; q=p-next; if(q-xh=a) p-next=q-next; free(q); printf(删除成功!n); else printf(no people have found!); return head;struct stu *change(struct stu *head)/修改结点容 int b,a,c; struct stu *p; if(h

16、ead-next=NULL) printf(*通讯录为空!*nnn); else printf( 输入要修改学生学号:); scanf(%d,&a); for(p=head-next;p!=NULL;p=p-next) if(p-next-xh=a) start: printf( 输入想要修改什么?n); printf(ttt 1:修改n); printf(ttt 2:修改学号n); printf(ttt 3:修改年级n); printf(ttt 4:手机n); printf(ttt 5:n); printf(ttt 6:n); printf(ttt 7:地址n); printf(ttt 8:

17、邮编n); printf( 请输入你的选择:); scanf(%d,&b); switch(b) case 1: printf(t输入新:); scanf(%s,p-name);break; case 2:printf(t输入新学号:); scanf(%d,&p-xh);break; case 3: printf(t输入新的班级:); scanf(%d,&p-grade);break; case 4: printf(t输入新的手机号:); scanf(%s,p-cel);break; case 5: printf(t输入新的号:); scanf(%s,p-tel);break; case 6:

18、 printf(t输入新的:); scanf(%s,p-mail);break; case 7: printf(t输入新的地址:); scanf(%s,p-add);break; case 8: printf(t输入新的邮编;); scanf(%s,p-post);break; default: printf(输入操作错误,请重新输入:); printf(修改成功!n); printf( 是否要修改其他项? 1:是 2:否n); printf( 请输入你的选择:); scanf(%d,&c); switch(c) case 1:goto start; case 2:break; return

19、head;void printall(struct stu *head)/输出全部通讯录 struct stu *p=head-next; while(1) if(p=NULL) printf(*通讯录为空!*nnn); break; else if(p-next=NULL) printf( :);puts(p-name); printf(t学号:);printf(%dn,p-xh); printf(t年级:);printf(%dn,p-grade); printf(t手机:);puts(p-cel); printf(t:);puts(p-tel); printf(t:);puts(p-mai

20、l); printf(t地址:);puts(p-add); printf(t邮编:);puts(p-post); printf(输出成功!n); printf(nnn); break; else printf( :);puts(p-name); printf(t学号:);printf(%dn,p-xh); printf(t年级:);printf(%dn,p-grade); printf(t手机:);puts(p-cel); printf(t:);puts(p-tel); printf(t:);puts(p-mail); printf(t地址:);puts(p-add); printf(t邮编:

21、);puts(p-post); printf(n); p=p-next; continue; printf(输出成功!n); struct stu *baoc(struct stu *head)/保存文件 FILE *fp; struct stu *p=head; if(head-next=NULL) printf(*通讯录为空!*nnn); else if(fp=fopen(D:班级通讯录.txt,w)=NULL) printf(cant open file!n); exit(0); while(p-next!=NULL) fwrite(p-next,sizeof(struct stu),1

22、,fp); p=p-next; fclose(fp); printf(保存文件成功!nn); return head;void sf(struct stu *head) struct stu *p=head ; printf(释放链表:n); while(p!=NULL) head=head-next; free(p); p=head; printf(释放链表成功!n);int main() int cz;/操作符 struct stu *head,*q; head=(struct stu*)malloc(sizeof(struct stu); head-next=NULL; system(c

23、olor 2e);/修改dos窗口前背景色,用两个十六进制数表示 printf(n*C语言课程设计*n); printf( *班级通讯录*nnn); printf( * 1:新建通讯录 *n); printf( * 2:删除通讯录 *n); printf( * 3:修改通讯录 *n); printf( * 4:查询通讯录 *n); printf( * 5:显示全部记录 *n); printf( * 6:保存为文件 *n); printf( * 7:释放链表并结束程序 *n); printf( *n);start :printf(输入操作符1-7:); scanf(%d,&cz); switch(cz) case 1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1