校医院预约挂号管理系统)
♻️ 资源大小3.77MB➡️资源下载https://download.csdn.net/download/s1t16/87430292校医院预约挂号管理系统一、作品简要介绍作品名称:校医院预约挂号管理系统作品摘要本系统采用 C 语言编写分为用户端和医生端主要实现预约和查找功能。其中数据存储采用数据流的方式存储为文本文档读取时采用链表来方便增删查改扩大存储范围。而在信息查找时人性化的对表单数据按照时间进行排序方便读取。可以较好的服务于校医院。系统主要功能和特色医院预约挂号系统主要包含是三个子模块1医生信息2就诊人信息3预约信息单 一、医生信息 医生信息的注册注销查找更新就诊人信息就诊人信息的注册注销查找更新预约单 预约挂号的生成、查找、删除修改医生可以管理自己的预约时间段以及每个时间段就诊人数。医生可以对就诊单查看与排序。二、总体设计2.1 设计思想校医院管理系统是应用于多方的软件应用方包括医生和用户。医生和用户两方的功能需要区分开来以登录来区分。医生信息需包括科室每一端的用户区分应以用户名为准因为有重名登录系统应考虑到密码管理问题包括后期的更改和找回。预约和挂号类似于注册登录的储存方式。用户端和医生端的功能的查看表单需包括查看对方数据和自我的数据。表单的查看应该是按日期排好序的。两方的主要功能是预约和出诊及查看可再衍生出取消的功能。数据分开储存易于管理和读取顺序要按照链表的结构体形式好读取。个人信息分医生和用户预约信息也分医生和用户存于文件。登录预约等等功能于两方的运行思路是一致的可利用形参来区别不同端。2.2 设计原则分模块分函数分多个运行文件利于读取和维护代码。对共性功能提取为函数届时调用使用即可减少代码量。代码规范增加可读性和减少错误。运行结果美观和方便2.3 功能模块图程序系统下包括三大模块分别是医生信息、用户信息和预约单信息管理。由医生和用户端口注册和登入然后都可以对预约单进行生成、查找、删除、修改的功能。可知预约单亦分为两个方面即医生的出诊单和用户的挂号单。三个模块组成一套完整的管理系统。三、详细设计3.1 程序流程图程序共分 5 级菜单采用方向键选择进入的方法使程序易于使用。其中医生和用户共用账号的注册、登录、改密码和找密码的功能。在登入进入之后便是功能界面了。其中的挂号、预约出诊、看表单以及注销自己的账号的功能会在其中。这些功能中有许多的功能是类似的比如读取文件以及给链表的、输入链表保存到文件等。这类函数便可多次调用在此便不过多赘述。具体实现请参照上方的“程序流程图”。3.2 模块流程图3.2.1 注册模块医生与用户共用的注册模块通过传入的参数判断身份源文件中此模块函数的声明为extern void userAdd(int order)两端口共用的注册函数其中形参order为判断医生与用户的依据 用户为0医生为1登录模块医生与用户共用的登录模块通过传入的参数判断身份源文件中此模块函数的声明为extern void userLogin(int order)两端口共用的登录函数其中形参order为判断医生与用户的依据 用户为0医生为13.2.2 更改密码模块医生与用户共用的密码更改模块通过传入的参数判断身份源文件中此模块函数的声明为extern void changPassword(int order)两端口共用的密码更改函数其中形参order为判断医生与用户的依据 用户为0医生为13.2.3 密码寻回模块医生与用户共用的找回密码模块通过传入的参数判断身份源文件中此模块函数的声明为extern void findPassword(int order)两端口共用的找回密码函数其中形参order为判断医生与用户的依据 用户为0医生为13.2.4 挂号/出诊模块医生与用户共用的挂号/出诊模块通过传入的参数判断身份源文件中此模块函数的声明为extern void lnput(char u[],char n[],char office[],int order)两端口共用的挂号/出诊模块其中形参order为判断医生与用户的依据 用户为0医生为1其他为传入的身份信息包括账号、姓名、科室3.2.5 查看模块医生与用户共用的信息查看模块通过传入的参数判断身份源文件中此模块函数的声明为void otherLook(char u[],char n[],char doctor1[],char office[],int order,int time) void findMe(char u[],char n[],char office[],int order,int time) //两端口共用的查看模块其中形参order为判断医生与用户的依据 用户为0医生为1time为判断查看以前还是今后的参数以前为0以后为1其他为传入的身份信息包括账号、姓名、科室3.2.6 取消出诊/预约模块医生与用户共用的取消出诊/预约模块通过传入的参数判断身份源文件中此模块函数的声明为void cancel(char u[],char n[],char office[],int order)//两端口共用的取消出诊/预约模块其中形参order为判断医生与用户的依据 用户为0医生为1其他为传入的身份信息包括账号、姓名、科室3.2.7 注销账号模块医生与用户共用的注销账号模块通过传入的参数判断身份源文件中此模块函数的声明为void freeUser(int order)//两端口共用的注销账号模块其中形参order为判断医生与用户的依据 用户为0医生为13.2.8 更改预约/出诊模块医生与用户共用的更改出诊/预约模块通过传入的参数判断身份源文件中此模块函数的声明为void cancel(char u[],char n[],char office[],int order) extern void lnput(char u[],char n[],char office[],int order) //两端口共用的更改出诊/预约模块其中形参order为判断医生与用户的依据 用户为0医生为1其他为传入的身份信息包括账号、姓名、科室3.3 模块细致函数介绍3.3.1 文件读取函数用户和医生共用的文件读取函数通过传入的参数判断身份源文件中此模块函数的声明为void ioRead_input(Formlistp *pList,int order) void ioRead(List *pList,int order) //两端口共用的文件读取函数其中形参order为判断医生与用户的依据 用户为0医生为1另一个是链表指针3.3.2 文件写入函数用户和医生共用的文件写入函数通过传入的参数判断身份源文件中此模块函数的声明为void ioWrite_input(Formlistp *pList,int order) void ioWrite (List *pList,int order) //两端口共用的文件写入函数其中形参order为判断医生与用户的依据 用户为0医生为1另一个是链表指针3.3.3 数量读取函数用户和医生共用的数量读取函数通过传入的参数判断身份源文件中此模块函数的声明为void usernumR void inputnumR(int order) //两端口共用的数量读取函数其中形参order为判断医生与用户的依据 用户为0医生为13.3.4 数量写入函数用户和医生共用的数量写入函数通过传入的参数判断身份源文件中此模块函数的声明为void usernumW void inputnumW(int order) //两端口共用的数量写入函数其中形参order为判断医生与用户的依据 用户为0医生为13.3.5 链表新增函数医生与用户共用的链表新增函数通过传入的参数判断身份源文件中此模块函数的声明为void Addinput(Formlistp *pList,char u[],char n[],int year,int month,int day,char doctor[],char office[],int number,int order) void Add(List *pList,char number[],char number1[],char number2[],char number3[],int order) //两端口共用的链表新增函数其中形参order为判断医生与用户的依据 用户为0医生为1一开始的为传入的链表其他为传入的身份信息包括账号、姓名、科室等3.3.6 当下时间比较函数当下时间比较函数传入的参数为要比较时间源文件中此模块函数的声明为int timeJudge(int year, int month, int day) //当下时间比较函数传入的信息为你需要比较的时间包括年月日与当下比较3.3.7 时间比较函数时间比较函数传入的参数为要比较的两个时间源文件中此模块函数的声明为int timecpy(int year, int month, int day,int year1, int month1, int day1) //时间比较函数传入的信息为你需要比较的两个时间包括年月日相减比较3.4 数据设计typedef struct patient//医生和用户登录数据共用的结构体 { char user[30]; char name[30]; char password[30]; char office[30]; struct patient *next; } Patient; typedef struct list//对结构体设置头尾指针 { Patient *head; Patient *tail; } List; typedef struct formp// 医生和用户的出诊及预约数据共用结构体 { char user[30]; char name[30]; int timeYear; int timeMon; int timeDay; char office[30]; char doctor[30]; int number; struct formp *next; } Formp; typedef struct formlistp//对结构体设置头尾指针 { Formp *head; Formp *tail; } Formlistp; struct tm //对time.h里结构体tm的再次声明工程文件中无法自主读取 { int tm_sec; /* 秒范围从 0 到 59 */ int tm_min; /* 分范围从 0 到 59 */ int tm_hour; /* 小时范围从 0 到 23 */ int tm_mday; /* 一月中的第几天范围从 1 到 31 */ int tm_mon; /* 月范围从 0 到 11 */ int tm_year; /* 自 1900 年起的年数 */ int tm_wday; /* 一周中的第几天范围从 0 到 6 */ int tm_yday; /* 一年中的第几天范围从 0 到 365 */ int tm_isdst; /* 夏令时 */ }; int n 0;//记录用户数量的全局变量 int m 0;//记录医生数量的全局变量 int inputp 0;//记录预约数量的全局变量 int inputd 0;//记录出诊数量的全局变量以上定义的结构体其中结构体都是医生端和用户端共用的分为登录信息类和预约/出诊类另一个结构体为对 time.h 文件的结构声明。有意义的是对结构体的定义不是直接为指针这样方便以后的调用采取另一个结构为指针其中包含头链表尾链表里面的尾链表可以减少运算的重复。四个全局变量是分别记录四个文件里面的数据个数的这样使读取更加容易。四、运行效果主菜单使用手册页面医生端菜单用户端菜单登录页面注册页面用户端功能界面医生端功能界面数据查看五、总结分文件很重要易于找 bug多把功能设为函数程序设计起来容易些写程序要有耐心和细心程序崩溃了人不能崩溃相通函数设为一个方便改也简单函数命名用有意义的组合单词这样好找六、致谢感谢李小妹老师的悉心指导让我有机会参加评优和把程序改的更好。也感谢坚持的自己和支持的伙伴朋友。七、参考文献语言图书管理系统设计报告用 C 语言计算两个日期之间的天数语言实现一个 Window 控制台带彩色语言开发简单的学生成绩管理系统