物理实验管理程序设计

更新时间:2024-06-23 11:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据结构课程设计

物理实验管理程序设计

目录

摘 要 ........................................................................................................................... 0 1.绪论 ......................................................................................................................... 1 2. 系统分析 .................................................................................................................. 1 2.1 功能需求 ............................................................................................................. 1 2.2数据需求 .............................................................................................................. 1 2.3 性能需求 ............................................................................................................. 1 3. 总体设计 .................................................................................................................. 2 3.1功能模块设计 ...................................................................................................... 2 3.2系统设计方案 ...................................................................................................... 2 4. 详细设计 .................................................................................................................. 3 4.1插入信息模块 ...................................................................................................... 3 4.2删除实验者信息模块 .......................................................................................... 4 4.3查询实验者信息模块 .......................................................................................... 5 4.4修改实验者信息模块 .......................................................................................... 6 4.5修改实验者信息模块 .......................................................................................... 7 5. 调试与测试 .............................................................................................................. 9 5.1 调试 ..................................................................................................................... 9 5.2 测试 ..................................................................................................................... 9 6. 结论 ........................................................................................................................ 10 结束语 ......................................................................................................................... 10 参考文献 ..................................................................................................................... 10 附录1-用户手册 ...................................................................................................... 11 附录2-源程序 .......................................................................................................... 13

摘 要

物理实验管理系统是一个实验是不可缺少的部分,它给实验管理带来了巨大的方便,这个系统可以用计算机辅助管理人员完成对实验者的管理,本系统可以很大提高管理人员的工作效率,可以节约大量时间。

0

数据结构课程设计

本系统使用C语言作为程序开发的语言,物理实验管理系统,可以对实验者信息进行插入、删除、修改和查询功能。

本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。

关键词:物理实验管理;修改;删除;查询 1.绪论

物理实验管理系统是一个实验室不可缺少的部分,它能够给实验室管理带来很大的方便,从而可以节约不必要的时间浪费,并且提高工作效率,使工作更加准确,这也是编写本系统的目的所在,现在的物理实验管理都在使用类似的能够用计算机辅助管理,本系统可以大大提高管理的工作效率,节省工作时间使他们能够用更多的时间去做更多的事情。

根据课程设计任务书要求,本系统开发主要完成以下功能和性能。 (1)插入实验者; (2)修改实验者时间; (3)删除已经实验的人; (4)查询每个时间段的实验者; 2. 系统分析 2.1 功能需求

本系统主要是管理人员对实验者信息简单管理的系统。 本系统需要有插入,删除,查询,修改,输出。 2.2数据需求

需要向系统输入学号,要插入的时间,修改的时间,查询的时间和删除的时间。系统输出每个时间的实验者的安排情况以及每个实验者被删除的情况。 2.3 性能需求

在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。

1

数据结构课程设计

3. 总体设计 3.1功能模块设计

根据分析整个系统主要划分为5个功能模块,分别执行要求中的功能。该系统需要有删除,查询,修改,插入显示主菜单,利用输出函数将所需信息显示。要求有循环显示菜单功能。功能模块图如图1所示。

物理实验管理插入修改查询删除输出

图1功能模块图

(1)插入模块

做实验的学生插入到合适的时间队列中 (2) 修改模块

时间队列中前5位学生可以在该时间做实验 (3) 查询模块

教师可以随时查询某个时间队列中学生的预约情况 (4) 修改模块

在没做实验之前,学生可以对预约的时间进行修改 (5) 输出模块

输出每个时间队列中预约的学生名单 3.2系统设计方案

设计一个总菜单,1插入,2修改,3查询,4删除,5输出。基本功能的实现都将体现在这几个菜单选项中。

建立结构体如下:

2

数据结构课程设计

typedef struct gp {

int num;

struct gp* next; struct gp* prev; }

定义了7个函数,都实现以下功能: void reserveLab()插入信息 void getAnotherLab重新插入信息 void QueryConditon()查询信息 void PrintResult输出信息 void ChangeReservatio修改信息 void DeleteQue()删除信息 int ControlLogic()选择菜单 4. 详细设计 4.1插入信息模块

插入信息主要插入一个新的实验者信息。

3

数据结构课程设计

开始intstudentNum=0;int LabNum = 0; 输入(\想插入哪个时间?(1 or 2 or 3): \LabNum == 1NYN输入学号LabNum == 2InGroupLab1(studentNum);YLabNum == 3N输入学号printf(\成Y功插入时InGroupLab2输入学号间1!\\n\(studentNum);InGroupLab3printf(\成(studentNum);printf(\在第功插入时%d位实验间2!\\n\printf(\成\\n\功插入时 输入错upLab1);printf(\在第间3!\\n\误,重新%d位实验输入!\\n%upLab2);printf(\在第%d位实验\\n%upLab3);reserveLab(); getch(); ControlLogic();结束图2 插入新实验者流程图

4.2删除实验者信息模块

对实验者删除,将某一个时间的前五位实验者删除

4

数据结构课程设计

预期结果:不能进行修改

运行结果:不能找到要修改的实验者,重新输入 说明:修改测试正确 (2) 查询测试

输入数据1:(正确的数据)输入要查询的时间 预期结果:输出要查询时间的实验者 运行结果:输出要查询的实验者 说明:查询测试正确

输入数据2:(错误的数据)输入三个实验时间以外的时间 预期结果:不能查询

运行结果:输入错误,请重新输入 说明:查询测试正确 6. 结论

课程设计顺利完成,任务书中所提出的要求全部实现,可以对实验管理进行插入、修改、删除、查询以及输出。 结束语

为期两个礼拜的数据结构课程设计终于顺利完成,虽然这两个礼拜很枯燥 在这期间真正的学到了一些经验,能够熟练的运用学到的知识,知道学习编程必须亲手编写程序这样才能真正的学到知识,这才达到了实践的目的,当程序编写完,并正常运行后,心情十分轻松。 参考文献

[1] 谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005 [2] 林智颖. C语言程序设计教程.中国电力出版社,2006

[3] 严蔚敏,吴伟民.数据结构(c语言版),北京:清华大学出版社,2007.4 [4] 姜灵芝, 余健. C语言课程设计案例精编. 清华大学出版社, 2008 [5] 网上相关资料

10

数据结构课程设计 附录1-用户手册

点击运行,首先出现的是菜单界面,选择菜单选项进行操作,可进行如图6所示

图6 菜单界面

点“1后按回车”即进行插入实验者信息的操作,在填入要选择实验时间,实验者学号后回车结束插入如图7所示。

图7 插入界面

输入2后点击回车执行修改实验者时间操作,如图8所示

11

数据结构课程设计

图8修改界面

输入3后点击回车进行实验者查询操作,如图9所示

图9 查询界面

输入4后点击回车进行删除功能的操作。如图10所示

图10删除界面

输入5后点击回车进行输出操作。如图11所示

12

数据结构课程设计

图11 输出实验者信息界面

附录2-源程序

#include \#include \typedef struct gp { int num;

struct gp* next; struct gp* prev;

} GroupLab1, GroupLab2, GroupLab3; GroupLab1* pHeadLab1 = 0;/*list1 head*/ GroupLab1* pTailLab1 = 0;/*list1 foot*/ GroupLab2* pHeadLab2 = 0;/*list2 head*/ GroupLab2* pTailLab2 = 0;/*list2 foot*/ GroupLab3* pHeadLab3 = 0;/*list3 head*/ GroupLab3* pTailLab3 = 0;/*list3 foot*/ int Size_GroupLab1 = 0;/*list1 size*/ int Size_GroupLab2 = 0;/*list2 size*/ int Size_GroupLab3 = 0;/*list3 size*/ int ClearGroupLab1() { GroupLab1* nod = 0; while(pHeadLab1) { nod = pHeadLab1;

pHeadLab1 = pHeadLab1->next; free(nod);

13

数据结构课程设计 } pTailLab1 = 0; Size_GroupLab1 = 0; return 0; }

int ClearGroupLab2() { GroupLab2* nod = 0; while(pHeadLab2) { nod = pHeadLab2;

pHeadLab2 = pHeadLab2->next; free(nod); } pTailLab2 = 0; Size_GroupLab2 = 0; return 0; }

int ClearGroupLab3() { GroupLab3* nod = 0; while(pHeadLab3) { nod = pHeadLab3;

pHeadLab3 = pHeadLab3->next; free(nod); } pTailLab3 = 0; Size_GroupLab3 = 0; return 0; }

NewGroupLab1() { if(pHeadLab1) { ClearGroupLab1(); }

pHeadLab1 = pTailLab1 = 0; Size_GroupLab1 = 0; }

NewGroupLab2() { if(pHeadLab2) { ClearGroupLab2(); }

14

数据结构课程设计 pHeadLab2 = pTailLab2 = 0; Size_GroupLab2 = 0; }

NewGroupLab3() { if(pHeadLab3) { ClearGroupLab3(); }

pHeadLab3 = pTailLab3 = 0; Size_GroupLab3 = 0; }

int InGroupLab1(int i)

{ GroupLab1* nod = 0; Size_GroupLab1++; if(!pHeadLab1)

{ pHeadLab1 = (GroupLab1*)malloc(sizeof(GroupLab1)); pHeadLab1->num = i; pHeadLab1->next = 0; pTailLab1 = pHeadLab1; return 0; }

nod = (GroupLab1*)malloc(sizeof(GroupLab1)); nod->num = i; pTailLab1->next = nod; nod->prev = pTailLab1; pTailLab1 = nod; pTailLab1->next = 0; return 0; }

int InGroupLab2(int i)

{ GroupLab2* nod = 0; Size_GroupLab2++; if(!pHeadLab2)

{ pHeadLab2 = (GroupLab2*)malloc(sizeof(GroupLab2)); pHeadLab2->num = i; pHeadLab2->next = 0; pTailLab2 = pHeadLab2; return 0; }

15

数据结构课程设计 nod = (GroupLab2*)malloc(sizeof(GroupLab2)); nod->num = i; pTailLab2->next = nod; nod->prev = pTailLab2; pTailLab2 = nod; pTailLab2->next = 0; return 0; }

int InGroupLab3(int i)

{ GroupLab3* nod = 0; Size_GroupLab3++; if(!pHeadLab3)

{ pHeadLab3 = (GroupLab3*)malloc(sizeof(GroupLab3)); pHeadLab3->num = i; pHeadLab3->next = 0; pTailLab3 = pHeadLab3; return 0; }

nod = (GroupLab3*)malloc(sizeof(GroupLab3)); nod->num = i; pTailLab3->next = nod; nod->prev = pTailLab3; pTailLab3 = nod; pTailLab3->next = 0; return 0; }

int OutGroupLab1()

{ GroupLab1* nod = 0; int i;

if(pHeadLab1 == 0 || Size_GroupLab1 == 0) return -1;

if(pHeadLab1 == pTailLab1 || Size_GroupLab1 == 1) pTailLab1 = 0; nod = pHeadLab1;

pHeadLab1 = pHeadLab1->next; i = nod->num; free(nod); Size_GroupLab1--;

16

数据结构课程设计 return i; }

int OutGroupLab2()

{ GroupLab2* nod = 0; int i;

if(pHeadLab2 == 0 || Size_GroupLab2 == 0) return -1;

if(pHeadLab2 == pTailLab2 || Size_GroupLab2 == 1) pTailLab2 = 0; nod = pHeadLab2;

pHeadLab2 = pHeadLab2->next; i = nod->num; free(nod); Size_GroupLab2--; return i; }

int OutGroupLab3() {

GroupLab3* nod = 0; int i;

if(pHeadLab3 == 0 || Size_GroupLab3 == 0) return -1;

if(pHeadLab3 == pTailLab3 || Size_GroupLab3 == 1) pTailLab3 = 0; nod = pHeadLab3;

pHeadLab3 = pHeadLab3->next; i = nod->num; free(nod); Size_GroupLab3--; return i; }

int DispGroupLab2() {

GroupLab2* nod2 = 0; printf(\

printf(\有 [%d]位学生在时间2 \\n\ if(pHeadLab2==0||Size_GroupLab2==0) return 0;

17

数据结构课程设计 printf(\第一位实验者学号:%d\\n\ printf(\最后一位实验者学号:%d\\t\\n\ nod2 = pHeadLab2; while(nod2) {

printf(\ nod2->num); nod2 = nod2->next; } printf(\ return 0; }

int DispGroupLab1() {

GroupLab1* nod1 = 0; printf(\

printf(\有 [%d]位学生在时间1 \\n\ if(pHeadLab1==0||Size_GroupLab1==0) return 0;

printf(\第一位实验者学号:%d\\n\ printf(\最后一位实验者学号:%d\\t\\n\ nod1 = pHeadLab1; while(nod1) {

printf(\ nod1->num); nod1 = nod1->next; } printf(\ return 0; }

int DispGroupLab3() {

GroupLab3* nod3 = 0; printf(\

printf(\有 [%d]位学生在时间3 \\n\ if(pHeadLab3==0||Size_GroupLab3==0) return 0;

printf(\第一位实验者学号:%d\\n\

18

数据结构课程设计 printf(\最后一位实验者学号:%d\\t\\n\ nod3 = pHeadLab3; while(nod3) {

printf(\ nod3->num); nod3 = nod3->next; } printf(\ return 0; }

void reserveLab() {

int studentNum=0; int LabNum = 0;

printf(\想插入哪个时间?(1 or 2 or 3): \ scanf(\ if (LabNum == 1) {

printf(\输入学号:\ scanf(\ InGroupLab1(studentNum); printf(\成功插入时间1!\\n\

printf(\在第%d位实验\\n\ }

else if (LabNum == 2) {

printf(\输入学号:\ scanf(\ InGroupLab2(studentNum); printf(\成功插入时间2!\\n\

printf(\在第%d位实验\\n\ }

else if (LabNum == 3) {

printf(\输入学号:\ scanf(\ InGroupLab3(studentNum);

19

数据结构课程设计 printf(\成功插入时间3!\\n\

printf(\在第%d位实验\\n\ } else {

printf(\输入错误,重新输入!\\n\ reserveLab(); } getch(); ControlLogic(); }

void getAnotherLab(int num) {

int studentNum=num; int LabNum = 0;

printf(\想插入哪个时间?(1 or 2 or 3): \ scanf(\ if (LabNum == 1) {

InGroupLab1(studentNum); printf(\成功插入时间1!\\n\

printf(\在第%d位实验\\n\ }

else if (LabNum == 2) {

InGroupLab2(studentNum); printf(\成功插入时间2!\\n\

printf(\在第%d位实验\\n\ }

else if (LabNum == 3) {

InGroupLab3(studentNum); printf(\成功插入时间3!\\n\

printf(\在第%d位实验\\n\ } else {

20

数据结构课程设计 printf(\输入错误,重新输入!\\n\ getAnotherLab(num); } getch(); ControlLogic(); }

void QueryConditon() {

int LabNum = 0;

printf(\想查询时间?(1 or 2 or 3): \ scanf(\ if (LabNum == 1) {

DispGroupLab1(); }

else if (LabNum == 2) {

DispGroupLab2(); }

else if (LabNum == 3) {

DispGroupLab3(); } else {

printf(\输入错误,重新输入!\\n\ QueryConditon(); } getch(); ControlLogic(); }

void PrintResult() {

DispGroupLab1(); DispGroupLab2(); DispGroupLab3(); getch(); ControlLogic();

21

数据结构课程设计 }

void ChangeReservation() {

int studentNum=0; int oldLab = 0; int deletFlg = 0; printf(\输入学号:\ scanf(\ printf(\

printf(\输入旧的时间(1 or 2 or 3):\ scanf(\ printf(\ if (oldLab == 1) {

deletFlg = deleteReservation1(studentNum); if (deletFlg == 1) {

printf(\已经退出时间1!\\n\ printf(\选择其它时间!\\n\ getAnotherLab(studentNum); } }

else if (oldLab == 2) {

deletFlg = deleteReservation2(studentNum); if (deletFlg == 1) {

printf(\已经退出时间2!\\n\ printf(\选择其它时间!\\n\ getAnotherLab(studentNum); } }

else if (oldLab == 3) {

deletFlg = deleteReservation3(studentNum); if (deletFlg == 1) {

printf(\已经退出时间3!\\n\ printf(\选择其它时间!\\n\ getAnotherLab(studentNum);

22

数据结构课程设计 } } else {

printf(\输入错误,重新输入!\\n\ ChangeReservation(); } getch(); ControlLogic(); }

int deleteReservation1(int studentNum) {

GroupLab1* nod = 0; GroupLab1* nodtemp = 0; int i = 0; int exsitFlg = 0;

if(pHeadLab1 == 0 || Size_GroupLab1 == 0) {

printf(\不在时间1中\\n\ return -1; }

else if(pHeadLab1 == pTailLab1 && Size_GroupLab1 == 1 && pHeadLab1->num == studentNum) {

pTailLab1 = 0; nod = pHeadLab1;

pHeadLab1 = pHeadLab1->next; i = nod->num; free(nod); Size_GroupLab1--; return 1; }

else if (Size_GroupLab1 > 1) {

nod = pHeadLab1;

for (i = Size_GroupLab1 ; i>0 ; i--) { if (nod->num == studentNum) { exsitFlg = 1;

23

数据结构课程设计 break; } else {

nod = nod->next; } }

if (exsitFlg == 1) {

if (i == Size_GroupLab1) {

pHeadLab1 = pHeadLab1->next; pHeadLab1->prev=0; } else if (i==1){

pTailLab1 = nod->prev; pTailLab1->next=0; } else {

nodtemp = nod->prev; nodtemp->next = nod->next; nod->next->prev = nodtemp; }/*nod->next->prev = nod->prev;*/ free(nod); Size_GroupLab1--; return 1; } else {

printf(\不在时间1中\\n\ return -1; } } else {

printf(\不在时间1中\\n\ return -1; } }

int deleteReservation2(int studentNum) {

GroupLab2* nod = 0; GroupLab2* nodtemp = 0; int i = 0; int exsitFlg = 0;

if(pHeadLab2 == 0 || Size_GroupLab2 == 0) {

24

本文来源:https://www.bwwdw.com/article/ho23.html

Top