1、主菜单 欢迎界面 录入按姓名流程图开始密码是否正确重新输入Y主菜单3查询学生信息退出 结束录入申请新空间浏览输入各项数据指针 p 指向头结点输出指针的数据 P=p-next显示数据结束NP=NULL?查询修改&删除输入姓名或学号输入要删除或修 改的学号P指针的学号与姓 名是否 与输 N 入的相同?P=p-P 指针的学号与输入的是否 N 相同输出数据三、详细设计主函数通过在 while 循环结构中嵌入 switch 分支结构实现操作选择功能。( 1) Record 录入函数建立一个包含学生全部信息的结构体,申请空间,其指针为 p0,存入学生各项对应的数据。( 2) Insert 插入函数 :按输
2、入的数据存储在一个 stu 类型的指针里, 若原来链表里没有元素, 则将此作 为第一个元素; 若原来的链表里有元素, 则将指向头结点指针存储的学号与头指 针下一个的学号大小进行比较, 小的在前大的在后, 之后指向头结点处的指正后移,进行比较,直到尾结点为止 在进行比较的 while 函数,每比较一次,计算总人数的 TOTAL_NU自M加。( 3) Display 浏览函数:将传给 Display 函数的指针 P 所指向的结构体的各项数据输出以便核对信息。( 4) DisplayAll 浏览函数:指针指向链表头结点, 在 if 语句中嵌套 do-while 语句将学生信息按学号从大到 小进行逐一
3、输出。( 5) Query 查询函数:首先使用 switch 语句生成菜单,实现操作选择功能。分三个部分按学号查询、 按姓名查询和取消返回上一层。 按学号查询时调用 while 语句对学号检索, 再调 用 if 语句进行判断,最后输出想要查询的信息。按姓名查询的方法跟按学号查 询的一样。( 6) Del 删除函数:使用 while 语句进行检索,直接删除学生信息。( 7) Change修改函数:建立 devise 函数,生成菜单, 用 switch 语句进行分叉选择功能, 选择项目进行 相应的信息输入。在 Change 函数中使用 while 语句进行检索后再调用 devise 函数修改信息。
4、实现学生信息修改。四、调试与测试1、进行多次运行, 发现那栏的一打长就会显示一样的数字, 打短的数字就可以。 我们原本是使用长整型来定义, 想说空间不够, 后来改用字符型, 用字符串记录程序运行结果正确2、程序设计初就在考虑退出与返回有什么差别,如果返回了主菜单那退出用什 么,关于这个问题看了许多网上的资料,发现许多程序都有 exit ( 0)的函数, 所以去查了不少关于 exit 的函数容, 最后退出就用了 exit(0), 但是又提醒说要 编写 exit 函数,之后发现要加入 的头文件,程序可以正常运行。3、程序在 180 行显示说 readData 函数不可以返回值,所以在 if 条件句
5、中将 return 0 删除了,不过这个程序在学校的机房即使不删 return 0 也是可以运行 的,关于这点很是不解,还有待解决。五、测试结果1、进入系统界面,输入密码,超过三次会自动退出。2、选 1 时录入学生信息,编辑完后会继续显示菜单3、选 2 浏览学生信息 ,之后继续返回菜单界面,为节省空间菜单界面暂不截图4、选择 3 查询学生信息会有按学号与按姓名查询。下图是先按学号查询的截图。5、按姓名查询时, 如果查无此人会显示 “没有该学生信息, 请核对。”之后返回上一层, 按姓名查询。显示学生信息后可以选择取消返回主菜单。6、选择 4 删除学生,输入学号删除学生的信息。之后会返回主菜单7
6、选择 5 修改学生信息,按学号输入,之后按显示输入即可。用几组测试数据进行测试算法设计的正确性。 (附上程序运行的截图)六、用户手册1 程序一开始会显示欢迎界面,按要求输入密码, 3 次错误会退出程序2 密码正确后会显示主菜单,按要求输入您的需求。七、附录源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。 /* Note:Your choice is C IDE */#include malloc .hstring .hio. hstdlib .h #define NULL 0#define LEN sizeof ( struct student) #define FILE_DA
7、TA_PATH c:student.txt struct student long int num;char name20;int age;char sex4;char birthday10;char address30;char tele_num13;char E_mail20;struct student * next; ;int TOTAL_NUM= 0;struct student *head = NULL;void welcome();void mainmenu();void record();void insert( struct student * stu); void disp
8、lay( struct student * stu); void displayAll(); void query();void query_by_num(); void query_by_name();void readData();void writeData();void freeAll();void del();void change();void devise( struct student *p); int main() char userPWD7; int i; welcome();for (i = 0; i 3; i +) printf(n 密码为123n );n 请输入您的密码 :scanf(%s, userPWD);if(strcmp(userPWD, 123 )=0)/ 密码正确,显示主菜单mainmenu(); break ; else if (i num);,p0 - name); 请输入学生的年龄 : age); 请输入学生的性别 : sex); 请输入学生的出生年月 : birthday); 请输入学生的地址 : address); 请输入学生的 : tele_num);prin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1