登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 第十二章:制作一个学生管理系统

[复制链接]
发表于 2017-1-22 12:01:59 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C语言
学习安排: 详见:http://bbs.hpuedd.com/forum.php?mod=viewthread&tid=837&fromuid=385
开始时间: 2017-01-21
结束时间: 2017-01-21
本篇是C语言最后一篇,接下来我将去学习单片机,“如何仿制一份电开测板程序”

首先是大致框架,我们的学生需要具有一些什么信息

标号,姓名,语文,数学,英语,总分这六项

我们需要对这些数据做什么

创造,查询,打印,替换,删除

那么问题就来了,我们可以使用静态或动态

然而,静态存储数据会造成空间浪费

并且删除时改动太大

所以我们选择动态链表

也就是说它是一个链式表,进行删除操作时,只需将旧链断开,形成新链,改一下标号就行了

·也就是说,如果要建立链表的话在结构体中加入一个结构体指针,就可以构造成为一个单向链表

将结构体1中的结构体指针指向结构体2,2中指3.。。。最后一个指向NULL(空)

1-1.PNG

如图,结构体与函数的声明

然后是一些全局变量(因为我的函数都是不带参函数,所以我制作的链表也是全局可调用的)

1-2.PNG

其中n为链表长度,b为开关变量(一个容错机制),c为临时变量(因为需要进行交互式操作)

然后,*p1,*p2为一组结构体指针用于创建链表*s1*,s2为另一组用来进行查询删除等操作

而P0,就是整个链表的头结点就像main()是整个程序运行的起始·一样

声明完所需变量

我们需要完成第一个任务

制作密码系统

如图

1-3.PNG

先声明了一些临时变量来存储一些输入数据

然后用按位校验验证密码

如果输入错误则err+1并进行提示

达三次自动退出大循环while

如果密码正确则执行内部循环

如图:

1-4.PNG

用开关语句进行选择其中case2-5中的(b==1)是防止链表为空时进行读/删操作

system("pause");

这句话是给操作系统下达指令暂停(我也是偶尔发现的,下方"cls"为清屏指令)

至此,我们完成了函数选择(功能选择)

接下来就是分块实现

在此,我只说明一下make()与del()其他的功能实现与之类似,不再赘述

如图:

1-5.PNG

b!=1则说明链表为空

此时P指针组应归位至零结点

并开始创建一个节点,使b=1

使p1

开辟一个空间,并让0结点与之连接

此节点现在为头结点

让n+1(链表长度加1)

输入数据

将头结点中的指针放空(若再进行创造,则此指针指向2结点,以此类推)


del()如图

1-6.PNG

将总结点数打印,并获取输入,验证其是否合法

如果合法,将指针定位至目标节点与目标节点前一个节点(用while循环)

如果是最后一个节点则直接进行删除并将b置0

如果不是最后一个节点

建立目标节点前后节点之间的联系,并将目标节点释放

返回


(PS:附件中有程序,仅供参考)


学生系统.txt

3.36 KB, 下载次数: 540

仅供参考

该会员没有填写今日想说内容.
发表于 2017-1-22 21:30:44 | 显示全部楼层
呃。。。测试程序还是先不急着模仿吧。。。里面涉及的组件模块较多。
该会员没有填写今日想说内容.
 楼主| 发表于 2017-1-23 10:16:25 | 显示全部楼层
alpha 发表于 2017-1-22 21:30
呃。。。测试程序还是先不急着模仿吧。。。里面涉及的组件模块较多。
主要是回老家过年,老家没网,就先放上了,过完年我会再完善一下的,争取能说明白


该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表