233,这应该是我的处女项目了。

前言

大一时,做的 C 语言的实训项目 👶,拿出来怀念一下~

正文

实训报告如下:

实训计划

    起初做系统程序,本着一个不想太现实的心,结合着偶然的思路CCUT 表白墙犹然而来。

    原本想这个程序,大致应该很简单,毕竟只有初等函数,连个指针都用不着,不过慢慢发现,它并不是这样,也差点让我濒临放弃。像一些被告白人 告白人 告白宣言根本无法把他们单独读出来,以此修改被告白人后的排序,青春进行曲名字重复,排序名字重复,以及修改密码的很多 Bug ,很让人焦头烂额。

    虽然做系统只花了五天时间,但在第二天晚上,各种 Bug 以及各种功能达不到目的,让我不得不放弃,于是第三天,不甘心的我选择重做。最终我发现了关键的问题:再存入文件中,手动存空格,会造成错误,文件只会保存空格前面的信息。

    嗯,我选择了这种格式:fprintf(fp,“%s”,被告白人名字(告白人名字,告白信息) 并且,我根据(),标识符以及一些小手段,解决了很多问题。然后至于修改告白信息,删除信息信息,我是先定位 要进行操作信息 然后,把他们全换成 * 号,最后进行单个字符存入文件不存入 * 号,修改的信息单独存入。

    所以以至于,这个程序的含金量不高,本想做个纯链表的系统程序,但慢慢做着做着,就发现,连指针都没用上,嗯,是这样。

    您可以有疑问,我为什么不用 fseek ,客观来说,每个人登陆系统,根本无法知道上一个人在文件中 存进了多少长度,所以我不想这样做。

功能总结

    说实话,有些功能,话语很幼稚,但某些环境要求它们的出现,也让您见笑了。

  1. ASCII 码里面 3 就是一个字符小爱心,这个大心,三部分完成:

    1. 上三行,左部分,然后右部分。
    2. 下三行,左部分然后右部分。
    3. 最后一个心。
  2. 登陆界面,第一步,判断修改密码人的名单中是否有号主名字,如果有先是到着遍历 把号主名字后的最后一次改的密码那出来,进行比较,有三次机会。

    所谓的主菜单,普通的 printf 构成。

  3. 马上告白:把被告白人的姓名单独存到一个文件,用于排序,2.把被告白人名字(告白人名字,告白信息),存到一个文件,用于以下功能。

  4. 修改密码:客观上来讲,这个功能是肯定要有的,把修改人姓名,与新密码存入文件,修改一次存一次,读取时倒着遍历读取。

  5. 青春进行曲:相当于一个查看功能了,把每一对接受交往的情侣保存到一个文件,先是利用读取字符方式判断文件是否为空,然后把文件指针一定要调回开头,如果用就分拆文件中的字符串,利用二维数组与标识符,下标值为奇数存入甲的名字,为偶数就是乙的名字,然后在把重复的数组筛选出去,然后再遍历输出。

  6. 男神女神榜:嗯,就是排序了。先是以告白次数进行对比,如果相等就利用名字的 ASCII 码进行对比。排序方法:结构体加自定义sort 函数。先是把被告白人的文件读取出来,再判断文件是否为空,就用功能三的办法,如果不为空,分拆数组,如果有重复,告白次数就自加,然后把重复的名字筛选出去,不保存进结构体,然后排序再遍历输出。

  7. 查看邮箱:先是把被告白人的文件读到内存中,判断有多少个号主名字,也就是收到几条告白信息,如果告白信息存在,就读取,告白人,被告白人,告白信息文件,然后分拆数组,利用二维数组与标识符,下标值为偶数存入告白人名字,为奇数就是告白信息,其中如果有人撤回,也会被判断出来(嗯,系统性质),就是光有你的名字,然后,后面的括号中啥也没有,利用比较,撤回有两种情况,我就不一一说

  8. 撤回消息:把告白信息文件读到内存,定位到号主名字(也就是告白人名字),把号主名字,告白信息全赋值成*号,然后新建一个文件,把不等于 * 号的存储进去,然后把原文件删除,把新文件换成原文件的名字。

  9. 修改消息:刚开始做这个功能,一直存在个 Bug ,只能修改成比原来字符串长度短的,然后换了一种暴力的办法,先输入要修改被告白人的名字与修改后的告白信息,然后定位到号主名字,把前后信息换成 *号,然后把不等于星号的存到新文件,然后再单独把修改的被告白人的名字信息,按照特定格式存储到文件,并且,这个时候,男神女神榜也要做相应的变化,把原来输出的换成新修改的,还是这种办法,然后存到新文件,把原文件删除,把新文件换成原文件的名字。

  10. 注销账号:也是客观存在的东西,我一直假如这个系统是个公共机器,必须有下机的功能。因为一些特定的输入是用结构体来完成,然后只要结构体的下标值不同,就可以实现不同的人,不同的信息,来实现其功能,所以功能八,很简单,也很重要,其下标值也必须自加。

  11. 退出系统:这个没什么好说的,直接 exit。

  12. 嗯,我又新加了一个功能,告白动态,以前一直懵逼,把这么重要的功能忘了…这个就很 easy 了,两个文件:1.存接受人,转告的话 2.不接收的人,然后再判断。

  13. 另外,又新加了一个爱情宣言功能,然后读取时,二维字符串是以三一个循环,进行存取,告白人,被告白人,爱情宣言。

    嗯,这就是我的系统程序。

项目界面

ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙
ccut 表白墙

结束语

这个项目足足有 1245 行,真是佩服当时的自己 🌼

源代码

点击显/隐源文件