C语言学生通信录管理系统课程设计报告2_第1页
C语言学生通信录管理系统课程设计报告2_第2页
C语言学生通信录管理系统课程设计报告2_第3页
C语言学生通信录管理系统课程设计报告2_第4页
C语言学生通信录管理系统课程设计报告2_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

E 删除 void del1 开始 按电话择调用 deltel 按名字择调用 delname 按名字或按电话 删除 结束 入口 按名字 学号 查 找学生 第一个节点 p1 next head 没找到 输出 not find 中间节点 p2 next p1 next 结束 重建链表用 recreact 函 数 程序清单 1 void del1 int i printf n printf 1 delete in tel n printf 2 delete in name n printf 0 regiter n printf n do printf input your choice scanf d while i 1 if i 1 deltel else if i 2 delname else exit 0 2 void delname char i FILE fp struct student p1 p2 head char name 16 c head recreat p1 head printf input the student s name n scanf s name while strcmp p1 name name 0 p1 p1 next if strcmp p1 name name 0 if p1 head head p1 next else p2 next p1 next printf delete success n printf nsave them or no y n n do printf input choice n getchar scanf c while i y if i y i Y p1 head if fp fopen FILENAME wb NULL printf cannot open file n return if p1 NULL do if fwrite p1 sizeof struct student 1 fp 1 printf file write error n fclose fp break p1 p1 next while p1 NULL fclose fp exit 0 else printf Not find n 3 void deltel char i FILE fp struct student p1 p2 head char tel 18 c head recreat p1 head printf input the student s telephone number n scanf s tel while strcmp p1 tel tel 0 p1 p1 next if strcmp p1 tel tel 0 if p1 head head p1 next else p2 next p1 next printf delete success n printf nsave them or no y n n do printf input choice n getchar scanf c while i y if i y i Y p1 head if fp fopen FILENAME wb NULL printf cannot open file n return if p1 NULL do if fwrite p1 sizeof struct student 1 fp 1 printf file write error n fclose fp break p1 p1 next while p1 NULL fclose fp exit 0 else printf Not find n F 修改 void modify 开始 按学号则调用 modifynum 按名字则调用 modifyname 按名字或按学号 找到修改 结束 入口 找到 用 scanf 函数重新赋值 按名字 学 号 查找 结束 找不到 输 出 not find 重建链表 程序清单 1 void modify1 int i printf n printf 1 modify in NO n printf 2 modify in name n printf 0 regiter n printf n do printf input your choice scanf d while i 1 if i 1 modifynum else if i 2 modifyname else exit 0 2 void modifyname char i FILE fp struct student p1 p2 head char name 16 head recreat printf enter the student s name n scanf s name p1 head while p1 next NULL if strcmp p1 name name 0 printf enter NO n scanf d p1 num printf enter tel n scanf s p1 tel printf enter sex n getchar scanf c printf enter age n scanf d printf enter birthday n scanf s p1 bir printf enter address n scanf s p1 add printf nsave them or no y n n do printf input choice n getchar scanf c while i y if i y i Y p1 head if fp fopen FILENAME wb NULL printf cannot open file n return if p1 NULL do if fwrite p1 sizeof struct student 1 fp 1 printf file write error n fclose fp break p1 p1 next while p1 NULL fclose fp else printf not find n 3 void modifynum char i FILE fp struct student p1 p2 head int num head recreat printf enter the student s NO n scanf d p1 head while p1 next NULL if p1 num num printf enter name n scanf s p1 name printf enter tel n scanf s p1 tel printf enter sex n getchar scanf c printf enter age n scanf d printf enter birthday n scanf s p1 bir printf enter address n scanf s p1 add printf nsave them or no y n n do printf input choice n getchar scanf c while i y if i y i Y p1 head if fp fopen FILENAME wb NULL printf cannot open file n return if p1 NULL do if fwrite p1 sizeof struct student 1 fp 1 printf file write error n fclose fp break p1 p1 next while p1 NULL fclose fp else printf not find n G 打开 void open 开始 按电话则调用 sorttel 按名字则调用 sortname 按名字或按电话 打开 结束 入口 重新建立链表 用 recreat 函数 p p1 p2 p1 next p2 NULL strcmp p tel p2 tel 0 p p2 p p1 交换两个节点的 值用 exchange p1 p1 next p1 NULL 输出数据 12 31 23 123 45 6 45 p2 p2 next 程序清单 1 void open1 int i printf n printf 1 open in the sort of name n printf 2 open in the sort of telephone n printf 0 regiter n printf n do printf input your choice scanf d while i 1 if i 1 sortname else if i 2 sorttel else exit 0 2 void sortname struct student p1 p2 NULL p head head recreat if head NULL return p1 head do p p1 p2 p1 next while p2 NULL if strcmp p name p2 name 0 p p2 p2 p2 next if p p1 exchange p p1 p1 p1 next while p1 NULL printf NO tname ttelephone tsex tage tbirthday taddress n for p1 head p1 next NULL p1 p1 next printf d t s t s t c t d t s t s n p1 num p1 name p1 tel p1 sex p1 age p1 bir p1 add 3 void sorttel struct student p1 p2 p head head recreat if head NULL return p1 head do p p1 p2 p1 next while p2 NULL if strcmp p tel p2 tel 0 p p2 p2 p2 next if p p1 exchange p p1 p1 p1 next while p1 NULL printf NO tname ttelehpone tsex tage tbirthday taddress n for p1 head p1 next NULL p1 p1 next printf d t s t s t c t d t s t s n p1 num p1 name p1 tel p1 sex p1 age p1 bir p1 add H 退出 直接调用 exti 0 函数 结束程序 六 感想六 感想 每做一个实验都会给我带来巨大的进步 对 C 语言真的是又爱又恨 C 语言是一种很实用的计算机高级语言 我知道如果我想在自己的专业上做精 就必 须牢牢掌握 C 语言 为自己以后的学习打好功底 所以在 C 语言开课以来 我都严格要求 自己 上课必须坐前排以便能听清楚老师授课内容 作业必须独立 按时完成 有不懂得 就查百度 上图书馆 问师兄同学 再不行就只好麻烦老师了 也正因为如此 开始选实验任务的时候 我就已经铁了心要朝抵抗力最大的路径走了 虽然 当老师掉出往届师兄师姐的优秀范例时 自信心有些动摇 但我始终坚信 只要我 付出比别人更多的时间 我就一定能完成 我知道有优秀的作品是有技术难点的 而我如今水平不够 只能把能做好的先做好 在这过程中一个一个突破难关 我的第一个难点是链表的存取问题 我记得书上说过动态链表的地址是动态申请的 也就是说存指针是没有用的 因为 当你再次取出 链表 时 指针的值已不再指向下一 个节点 那要如何让链表取出时还是一个链表呢 我问过师兄 也查过百度 可他们要么 不懂 要么说得不清不楚 最后在 C 程序设计辅导与实训 找到灵感 既然以前存的地 址不能用 那我就每次从文件中取出数据时重新申请内存 用 fread 函数给节点赋值但改 变指针的值 所以我只要编一个可以从文件读出数据组成链表的函数就可以了 我的第二个难点是将数据写出文件 开始的时候 文件中确实有数据 可是是乱码 都不知道写入正确没有 当我试着读出来的时候 却是一大堆莫名其妙的数据 我知道我 的程序错了 可我的 save 函数明明书上的一样怎么会错呢 无奈之下 只好尝试不同的做 法 可更夸张的是 tc 竟然自动退出 并提示非法指令 苦苦思考 最后一位同学说不一 定是你的读入错了

温馨提示

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

评论

0/150

提交评论