科技成果信息管理系统_大学C语言课程设计实验报告.pdf
华中科技大学计算机科学与技术学院C语言程序设计课程设计基础部分实验报告题目:科技成果信息管理系统专业:计算机科学与技术班级:1204学号:姓名:成绩:指导教师:目录一、系统功能结构设计.1二、数据结构设计.1三、程序结构.4四、函数原型及功能.9五、试验结果.1 3六、实验体会.2 9七、附录I:参考文献.3 1八、附录2:程序清单.3 1C 语言课程设计实验报告一、系统功能结构设计航科技成果信息管理系统由五大功能模块组成:文件模块,编辑模块,查询模块,统计模块,帮助模块。如下图所示:文件模块编 辑 模 块 查询模块 统计模块帮助模块加载数据 信 添加单位查询完成人员查询单位查询科技成果统计各单位成果排名统计5 0岁以下第一完成人软件信息及祚者信息1+-唯腐m-数.二、数据结构设计1.单位信息链结点结构(DEPT NODE)及用法typedef struct dept_nodeiC 语言课程设计实验报告char number8;char name30;char PIC20;struct dept_node*next;/*单位编号*/*单位名称*/*负责人*/*指向下一结点*/struct archs_node*achs;/*指向科技成果信息链结点的指针*/GtkTreelter iter;/*treeview 中对应 treeiter*/DEPT_NODE;中文字段名类型及长度变量名举例单位编号c h a r 8 number43 0 0 7 40 1单位名称c h a r 3 0 nameH u a z h o n g_ u n i v e r s i t y _ o f _ s c i&t e c h负责人c h a r 2 0 PICL i _ p e i ge n g2.科技成果信息链结点结构(ACHS_NODE)及用法typedef struct achs_nodecharnumber12;/*成果编号*/charname50;/*成果名称*/charfield20;/*所属技术领域*/charfirst_dept_name30;/*第一完成单位*/charfirst_dept_number8;/*第一完成单位编号*/charfirst_member_name20;/*第一完成人*/charaward_name30;/*获奖名称*/2C语言课程设计实验报告char award_level10;/*获奖档次*/char award_grade10;/*获奖等级*/struct arhs_node*next;/*指向下一节点*/struct member_node*members;/*指向完成人员信息结点的指*/GtkTreelter iter;/*treeview 中对应 treeiter*/ACHS_NODE;中文字段名类型及长度变量名举例成果编号c h a r 1 2 numbe2 0 0 7 0 3 1 5 0 0 0 1成果名称c h a r 40 nameT h e _ m e t h o d _ o f _ s t u d y所属技术领域c h a r 2 0 fieldc o m p u t e r第一完成单位c h a r 3 0 first_dept_nameH u a z h o n g_ u n i v e r s i t y _ o f_ s c i&t e c h第一完成单位编号first_dept_numberfirst_dept_number43 0 0 7 40 1第一完成人c h a r 2 0 first_member_nameL u _ z h e n gd i n g获奖名称c h a r 3 0 award_nameN a t u r a l s c i e n c e _ o f _ h u bi e _ p r o v i n c e获奖档次c h a r 1 0 award_levelp r o v i n c e /*省级*/获奖等级i n taward_grade1 /*一等奖*/3.完成人员信息链结点结构(M E M B E R _ N O D E)及用法typedef struct member_node3C 语言课程设计实验报告char number18;/*身份证号*/char name20;/*姓名*/char dept_name30;/*工作单位*/char sex4;/*性别*/int age;/*年龄*/char title15;/*职称*/int rank;/*成果排名*/char achs_name40;/*所属成果名称*/struct member_node*next;/*指向下一个结点*/GtkTreelter iter;/*treeview 中对应 treeiter*/MEMBER_NODE;中文字段名类型及长度举例姓名char20numberLuzhengding身份证号char18name420111194801012216工作单位char30dept_nameIluazhong_university_of_sci&tech性别charsexm年龄intage60职称char15titleprofessor成果排名intrank12C语言课程设计实验报告所属成果名称c h a r 40 achs_nameT h e _ m e t h o d _ o f _ s t u d y4.三方向的十字交叉链表结构5.登陆窗体控件结构体(wgt)及用法struct login_widget(GtkWidget*window;主窗体GtkWidget*label_tips;用于信息提示的标签GtkWidget*buttonogin;两个按钮,一个点击后登录,个点击后退出GtkWidget*button_exit;GtkWidget*entry_username;两个文本框,用于输入用户名和密码GtkWidget*entry_pwd;GtkWidget*label_username;两个标签用于显示username文本框和password文本框提示3C 语言课程设计实验报告GtkWidget*label_pwd;GtkWidget*vbox;垂直布局盒子,包含以下三个水平布局盒子GtkWidget*hbox_username;包含用户名提示标签和用户名文本框,下面的H BOX作用类似GtkWidget*hbox_pwd;GtkWidget*hbox_button;wgt;说明:将登陆窗体相关控件独立成一个结构体6.指 向3种节点的指针联合及用法typedef union nodepstruct dept_node*dept;struct achs_node*achs;struct member_node*member;nodep;说明:用于3种结构都会用到但不会同时用到的情形7.两个传递参数的结构及其用法struct nodecreate4C 语言课程设计实验报告GtkWidget*window;GtkWidget*entry9;nodep unp;int type;);struct queryjudgeGtkWidget*entry;int flag;);说明:GTK信号连接g_signal_connected将函数与信号链接后之内传递一个参数给函数,所以定义这两个结构分别将几个参数结合在一起传递三、程序结构1.主程序运行流程C语言课程设计实验报告6C语言课程设计实验报告7C语言课程设计实验报告3.添加流程试 用 殛entry_info 根据type生成对应的输入框点击确定-Add_nodegiiz-传递的参数structnodecreate包含了 entry三的text和 type试根捏type与态分犯相括入关败 调目相应的insert函数将pNew链在相它位置在梃状列表里添加相应选项8C语言课程设计实验报告4.单位查询流程9C语言课程设计实验报告5.统计50岁以下第一完成人流程10C语言课程设计实验报告四、函数原型及功能(所有GtkWidget*button参数均为与消息链接用)1.登陆模块功能:登录框初始化函数输入参数:返回值:无void init_login_widget()功能:登录验证函数,点击login按钮时调用输入参数:返回值:无void login(GtkWidget*widget,gpointer data)2.图形界面模块/*初始化部分变量,再依次调用各函数初始化界面各部分*/int main(int argc,char*argv口)/*初始化菜单栏*/void init_menubar(GtkWidget*menubar)/*初始化目录*/void create_view_and_model(void)/*初始化显示栏*/void init_show(GtkWidget*list)/*改变状态栏及显示栏*/void on_changed(GtkWidget*widget,gpointer statusbar)11C语言课程设计实验报告功能:将选中的节点信息在显示栏中显示出来输入参数:iter返回值:无int Show_Node(GtkTreeIter iter)值传递不影响 selectediter/*对 应3个节点显示的3个函数,返回对应GtkListStore*/GtkListStore*Show_Dept(char*name);GtkListStore*Show_Achs(char*name,char*P_name);GtkListStore*Show_Member(char*name,char*P_name,char*PP_name);3.文件模块功能:读取数据文件输入参数:返回值:r e的二进制前3位记录了三个数据文件是否成功打开,1为成功int LoadData(GtkWidget*button)功能:读取数据文件中数据到链表中输入参数:phead单位节点头指针的地址返回值:r e的二进制前3位记录了三个数据文件是否成功打开,1为成功int LoadList(DEPT_NODE*phead)功能:将链表中节点添加到左侧树状列表中输入参数:返回值:void rebuildtreeQ12C语言课程设计实验报告功能:存储数据文件输入参数:返回值:flag的二进制前3位记录了三个数据文件是否成功打开,1为成功int SaveData(GtkWidget*button)功能:将链表中数据存储在数据文件中输入参数:phead单位节点头指针返回值:flag的二进制前3位记录了三个数据文件是否成功打开,1为成功int SaveList(DEPT_NODE*phead)功能:推出前提示保存输入参数:返回值:void quit_save(GtkWidget*button)4.查询模块功能:根 据type弹出一个查询框,再分别调用对应的Query函数输入参数:type对应枚举的几种类型返回值:无void Query_info(GtkWidget*button,int type)功能:查询学院输入参数:in包 含iter和名称的结构返回值:无void Query_Dept(GtkWidget*button,struct queryJ udge*in)功能:根据type弹出一个查询框,再分别调用对应的Query函数输入参数:type对应枚举的几种类型返回值:无void Query_info(GtkWidget*button,int type)功能:查询完成人员输入参数:in包 含iter和名称的结构返回值:无void Query_Member(GtkWidget*button,struct queryjudge*in)13C语言课程设计实验报告功能:展开并跳转至指定iter输入参数:iter treeview中的一个目标iter返回值:无void expand_select(GtkTreeIter iter)功能:按.称搜索单位输入参数:D_name单位名称返回值:单位节点指针DEPT_NODE*DEPT_search(char*D_name)功能:按名称搜索痴技成果节点输入参数:A_name科技成果节点名称,ACHS所在学院头科技成果节点指针返回值:科技成果节点节点指针ACHS_NODE*ACHS_search(char*A_name,ACHS_NODE*ACHS)功能:按名称搜索藕人员节点输入参数:M_name完成人员节点名称,ACHS所属科技成果头完成人员节点指针返回值:完成人员节点节点指针MEMBER_NODE*MEMBER_search(char*M_name,MEMBER_NODE*MEMBER)5.添加模块功能:弹出一个输入框输入参数:type对应枚举的几种类型返回值:无void entry_info(GtkWidget*button,int type)功能:添 加3种节点统一函数,由entry_info确定按钮调用输入参数:返回值:无void Add_node(GtkWidget*button,struct nodecreate*nodec)功能:届入科技成果节点函数,由Add_Node中情况3调用输入参数:pNew指向新节点的指针返回值:对应单位节点指针DEPT_NODE*insert_ACHS(ACHS_NODE*pNew)功能:插入完成人员节点函数,由Add_Node中情况4调用输入参数:pNew指向新节点的指针返回值:对应科技成果节点指针ACHS_NODE*insert_MEMBER(MEMBER_NODE*pNew)6.删除模块功能:删 除3种节点统一函数,由“删除”按钮调用输入参数:返回值:无void Del_Node(GtkWidget*button)14C语言课程设计实验报告功能:删除单位节点,由 Del_Node函数case 2 调用输入参数:nam e单位名称返回值:int 1 为有错,0 为正常int Del_Dept(char*name)功能:删除科技成果节点,由Del_Node函数case 2 调用输入参数:nam e科技成果名称,P_nam e对应单位名称返回值:int 1 为有错,0 为正常int Del_Achs(char*name,char*P_name)功能:删除完成人员节点,由Del_Node函数case 4 调用输入参数:nam e完成人员名称,P_nam e对应科技成果名称,PP_name对应单位名称返回值:in ti为有错,0 为正常int Del_Member(char*name,char*P_name,char*PP_name)7.编辑模块功能:弹出个编辑框输入参数:返回值:无int Edit_info(GtkWidget button)功能:编辑节点输入参数:返回值:无void Edit_Node(GtkWidget*button,struct nodecreate*nodec)8.统计模块功能:弹出一个统计框,由传入参数设置具体内容输入参数:title 统计框标题,c o ll第一列标题,c o l2 第二列标题,i n 传入的model返回值:无void Statis_info(char*title,char*coll,char*col2,GtkListStore*in)功能:家计各单位科技成果数量,调 用Statis_info显示统计结果输入参数:返回值:无void statis_funcl(GtkWidget*button)功能:条计各单位完成人员成果排名,调 用 Statis_info显示统计结果输入参数:返回值:无void statis_func2(GtkWidget button)功能:.计 所 有 5 0 岁以下第一完成人,调 用 Statis_info显示统计结果输入参数:返回值:无void statis_func3(GtkWidget*button)15C语言课程设计实验报告9.帮助模块功能:弹出软件信息及作者信息输入参数:返回值:无void help_about(GtkWidget:Jbutton)五、试验结果编译环境:Ubuntulinux64位MingwGcc(源代码配置好后可跨平台编译)GTK 版本:GTK+2.41开发 IDE:Codeblocks 12.111.系统登陆输对自动进入输错显示错误16C 语言课程设计实验报告2.登陆成功进入主界面3.全屏模式17C语言课程设计实验报告张江网格碳0代科外布式15退座管序乐比学年目叨化学除*几5!俵理优化网一美a iia iis融东统的X 性冲恬矶H孚蹂多足打机0人道动投朝瑁目内B史憎江号:044如:91江工作81位:什机学S?性例;舅S K:4S取样:MHI成排菖:4所成事2梅分布式故挺IfettH第蜕:令-20:56 1Z H U0 W4.读取数据20:07 1 ZHUFllS y s te n文 件”S D合N傕 计ffiK:init_meftubar(ctkwidget,menubar):void Q Workspace,MIS_GTK t Sources HeadersBuild target DcbuoProjecttSymbols chMl;h X X m/.L,.,.X;O、X U”、出:1八。:,QWDZC.X :,;c X hclp.c x118119126121122123124125126127128IM130m1321331341351313713139140141142一时3,,is e*0、6 t W A力 a卡BMH,bgett.ew unn IQURX 1,g U K lg,Qllk.MA RU-WSSMlMrr.K m a ltn t/rxxw/rtHVa/co.).传U p lQnl crne 4 t AnXSt HA iMUaNIIa au ir-8une 120.Column i imertiRwd/W rite default(标准gnome菜单栏在最上面)18C语言课程设计实验报告5.读取成功点击相应节点右侧显示相关信息6.添加单位19C语言课程设计实验报告(添加成功提示)20C语言课程设计实验报告7.添加科技成果21C语言课程设计实验报告8.添加完成人员:sut_hjnc 1 CtkWKjQet*button):Zm 加科按成果不加先成人员 Headen日 sort.dej strue(o)at 1m 金海ooo0 lu日 rw-内网8 0 m ibS(2 S 3 用 文 忤 寿 加 a m a i l wasiw fcoaN A IX阳,关联M aiftlftJR tt的8 机械学陵-多 3 行机R 人看6左1chsMt5.h X s X.X mytibx X X Kit.Xune 31.Column 1Rea _ t t a v iv K水电口含ar更震应是tt彭根 网络te a 需列京江含海当月分钻式故年哲理泰彼里 U I季东自 动 化*林 几51首理优化向 5 2 :K S工 作,位:S H:EW-成屉名:所成名悻it t M ia-c X opeftie.c XH I*,一叫 m u 贵江.-_,z r/”w“,。aa Q naia-vti ufc*“一,B r ia tw*l-anaM-MruMe)/noK/znu/M/co 9 A M n lfl|-wwM-MTMBtel9.添加错误返回信息22目录C语言课程设计实验报告计算机学院水电综合信息集成系缠彭根网络硬盘阵列张江金海冯丹分布式数据库管理系曹忠张江李东自动化学院几类管理优化问题肖人彬欧阳关联基础设施系统的机械学院多足步行机器人运动控:理目身 加 号:姓名:内容46546456张江编辑 I 除 张江23C语言课程设计实验报告科技成果信息管理系统b y祝迪华中科技大学一 单位编号:计算机学院 单位名称:水电综合信息集成系统 负责人:网络磁盘阵列 分布式数据库管理系统曹忠张江李东自动化学院几类管理优化问题关联基础设施系统的弹忖机械学院多足步行机器人运动控制内容4光电学院李奇Q通知无对应名称成果!光电学院光伏发电系统删除 光电学院1 0.编辑结点(选中节点后点击左下角编辑按钮)科 技 成 果 信 息 管 理 系 统 b y 祝迪项目 内容目录华中科技大学身份证号:65631325计算机学院 刘彭水电综合信息集万网络硬盘阵列身份证号:|656313雷 分布式数据库管f姓名:刘彭曹忠工作单位:区电学院张江性别:男李东I_ I自动化学院年龄:_ I几类管理优化问息职称:教授A关联基础设施系自成果排名:卜多足步行机器人工所属成果名称I此项不可更改光电学院确 定:取 消 I光伏发电系统刘彭、编辑 删 除,刘彭F35-24C语言课程设计实验报告更改生效1 1.删除节点弹出确认框25C语言课程设计实验报告删除成功26C语言课程设计实验报告12.查询单位文 件 R加fittl诲完楹人员P fo|w Symbols Q Workspace,MIS_GTK a sourer HMdertWiUhe*sort_deiB Mac 1r 0 0 0 Q IU,日 at 2rw.渴F I8(Am IU53(2)S国 _ _ _ _ _ _ _ _ _ _ _ _ _JUOsJuncMCtkWidget,button):void)chvMIS.h X meinc X myhb.c X X Q c 3c quei”X n utistics.c X o p es le.c,192021232423203:3113335363738394G44logs too科技成果(8意原系fit b y祝迨的机手麻 水电方合信史塞应系统彩根 网络JBfilSS列 J I金海AFi 分布式敛需用首现系校5微江季东自动化学RI几餐通理优化同4人影欧阳机械学除 仃机H人运动技,7-,MM/,nuinuHUHnA./huar/zhu/Ca/cn/Txne/znu/HJI/co.a;nn*B|*BaK into*(.Mup)iIt timtIcn.tfnUralian/hom c/zhu/j|iE/coursc de$lgn/Mis_GTK/$taU$tl.c学自:工作第位:性麻蜂H;研楸40540456豪江计机学毁更45故槽所成B 2博网络IS盘际列51UTF-8 Line 31.Column 1 insert“汉。9 22Red/Wriie default内gA c o d.查询成功,左侧已跳转至并展开机械学院13.查询科技成果查询成功,左侧已跳转至并展开网络磁盘阵列27C语言课程设计实验报告未查询到时弹出提示1 4.查询完成人员28C语言课程设计实验报告从头查询,跳转至并展开第一个张江点击查询,跳转至并展开第二个张江29C语言课程设计实验报告15.统计各单位科技成果总数及各类成果数16.统计各单位成果排名o e e科技成果信息管理系统by祝迪目录顼目内容海中科技大学身份证号:46546456计算机学院GG 各单位人员成果排名水电综合信息集成系统单位成果排名彭根计算机学院0网络硬盘阵列金海1张江冯丹2金海曹忠4冯丹彭根7分布式数据库管理系统李东18曹忠自动化学院0张江欧阳2李东肖人彬3自动化学院赵开19几类管理优化问题机械学院0肖人彬陈平7欧阳关联基础设施系统的弹电机械学院编辑删除张江30C语言课程设计实验报告17.统计50岁以下第一完成人18.软件信息及作者信息31C 语言课程设计实验报告19.退出前提示保存内容目录644564张江计算机学院男45教授4华中科技大学计算机学院水电综合信息集成系统网络磁盘阵列张江金海冯丹分布式数据库管理系统曹忠理目身份证号:姓名:工作单位:性别:年龄:职称:成果排名:张江李东自动化学院几类管理优化问题关联基础设施系统的弹忖机械学院多足步行机器人运动控知退出前是否保存当前状态?取消(C)确定9)编辑删除张江六、实验体会首先我看了一下实验书上的编程规范和几个基本模块的实现思想,但当我开始做的时候我发现光用face.c自己看不懂文本菜单操作肯定会有很多问题的,于是我想同样是学,不如直接学图形界面的开发。因为之前有些linux下的经验,所以选择了 GTK+在 linux下开发。之前完全没有接触过GTK+和图形界面开发的东西,于是便开始了两个多星期的GTK+学习。GTK+的资料并不如windowsSDK等一些主流技术那么多,中文资料的情况基本就是少,乱,老。没有合适的书,只找到一份网页中文教程,但做得还挺不错,边看教程边实验边查官网的Reference M anual,算是学了个大概。我觉得经过这次32C语言课程设计实验报告我对在网上学技术有了更多的认识,的确是最佳的方式。在一开始我通过头文件和多个.C文件来划分了一下整个程序的模块,虽然不是一开始规划完整体的结构,但边写边规划还是很不错的,这个可以根据各处开头的注释看出那种模块化的感觉。我在开发的过程中,一直都重点地考虑了重用性,抽取定义了一些多处重复使用的函数,IO.C里面的函数基本都是这样的。我也定义了许多函数指针数组、枚举常量等等来将-3种节点的情况在一个函数里完成,包括输入框等的生成也是同一个for循环不同的条件。我写完主界面后因为比较顺利,一次写完了 3块东西才一起调试,结果大量的问题一下涌现,调试毫无头绪。那段时间真是绝望到怀疑自己能不能写出能运行的成品。后来只能又重新学习更多调试方法与技巧,然后再循序渐进地先看warning,再看代码,再 用GDB,一个问题一个问题解决,经过同学的给力帮助还有自己在网上学习查找相关内容终于在解决了几个关键问题后跨过了这一步。那将近一个星期完全没有新代码,花了好儿倍的时间调试之前的那儿个模块,不过感觉很多基本调试方法之前都没掌握,还是很值得很有收获的,之后的调试便顺利多了。C语言的问题很多都是极小的问题但经过最后进入写报告阶段,之前就做了一些准备,也有很多word排版的经验,所以效果自认为还不错吧,主要是电子版。就是流程图上因为和图形界面交互的操作比较繁琐,不知道处理得是否得当。回顾整个课设的历程,第一次做这种实用的大型程序,又是边学边 用GTK+,确实是边写边积累了很多宝贵的经验。收获在前面已经33C语言课程设计实验报告说了很多了,另一方面真的是深感自己知识与能力的不足,不要好高鹫远,想着要学什么什么多少,学了后踏踏实实地写出点东西才是真的学到了,还好感觉这次已经弥补了足够多的欠缺。系统本身也还有许多有待完善的地方,也如果有需要的话接下来可以做下。我用的各种查找的方法都有点太依赖于名称,和遍历的方法比起来有很多缺点,但在大量数据的情况也有优势,可以结合一下。跟真正使用的系统比起里又更是差距甚远,这次感觉到软件的体验方面对程序员来说也真的是个大问题,这个以后可以在工作中和PM好好合作做好把。就是这样了,C语言的入门算是以课设结束了吧,接下来还有很多用C的地方,下次再见吧。七、附录1:参考文献1 gtk2-tutorial22 gtk2ReferenceManual3 李开,卢萍,曹计昌.C语言实验与课程设计,北京:科学出版社,2011.八、附录2:程序清单1)achsMIS.h#ifndef_ACHSMIS_H#define_ACHSMIS_H34C语言课程设计实验报告/*-头文件-*/#include#include#include#include#define NAME root#define PWD 123456/*结构声明*I/*完成人员信息链结点结构*/typedef struct member_node(char number18;/*身份证号*/char name20;/*姓名*/char dept_name30;/*工作单位*/char sex4;/*性别*/int age;/*年龄*/char title15;/*职称*/int rank;/*成果排名*/char achs_name40;/*所属成果名称*/struct member_node*next;/*指向下一个结点*/35C语言课程设计实验报告GtkTreelter iter;/*treeview 中对应 treeiter*/MEMBER_NODE;/*科技成果信息链结点结构*/typedef struct achs_node(char number12;/*成果编号*/char name50;/*成果名称*/char field20;/*所属技术领域*/struct arhs_node*next;/*指向下一节点*/charfirst_dept_name30;/*第一完成单位*/charfirst_dept_number8;/*第一完成单位编号*/charfirst_member_name20;/*第一完成人*/charaward_name30;/*获奖名称*/charaward_level10;/*获奖档次*/charaward_grade10;/*获奖等级*/struct member_node*members;/*指向完成人员信息结点的指针*/GtkTreelter iter;/*treeview 中对应 treeiter*/ACHS_NODE;/*单位信息链结点结构*/typedef struct dept_node36C语言课程设计实验报告char number8;char name30;char PIC20;struct dept_node*next;struct archs_node*achs;GtkTreelter iter;DEPT_NODE;/*单位编号*/*单位名称*/*负责人*/*指向下一结点*/*指向科技成果信息链结点的指针*/*treeview 中对应 treeiter*/*将登陆窗体独立成一个结构体*/struct login_widget(GtkWidget*window;主窗体GtkWidget*label_tips;用于信息提示的标签GtkWidget*button_login;两个按钮,一个点击后登录,一个点击后退出GtkWidget*button_exit;GtkWidget*entry_username;两个文本框,用于输入用户名和密码GtkWidget*entry_pwd;GtkWidget*label_username;两个标签用于显示username文本框和password文本框提示GtkWidget*label_pwd;GtkWidget*vbox;垂直布局盒子,包含以下三个水平布局盒子37C语言课程设计实验报告GtkWidget*hbox_username;包含用户名提示标签和用户名文本框,下面 的HBOX作用类似GtkWidget*hbox_pwd;GtkWidget*hbox_button;wgt;typedef union nodep/*指向节点的指针联合*/(struct dept_node*dept;struct achs_node*achs;struct member_node*member;nodep;struct nodecreate/*传递参数*/(GtkWidget*window;GtkWidget*entry9;nodep unp;int type;;struct queryjudge/*传递参数*/38C语言课程设计实验报告GtkWidget*entry;int flag;;/*全局变量*IGtkWidget*window;/*主界面窗 口*/GtkWidget*showlist;/*显示属性的位置*/GtkListStore*liststore;GtkListStore*lstore3;/*显示栏左边项目名 liststore 组*/GtkTreeStore*treestore;/*树形储存*/GtkWidget*treeview;/*树状列表目录*/GtkTreelter rootiter;/*根位置*/GtkTreelter selectediter;/*选中的位置*/*显示属性liststore的控件组*/GtkTreelter dept_iter3;GtkTreelter achs_iter9;GtkTreelter member_iter8;DEPT_NODE*gp_head;/*主链头指针*/char*Str_Pointer3;39C语言课程设计实验报告void(*query_node3)();/*m ylib.c中已初始化的全局变量*/extern char*gp_dept_info_filename;extern char*gp_achs_info_filename;extern char*gp_member_info_filename;extern char*Node_Str;extern int NODEJNSQ;extern char*Dept_Str;extern char*Achs_Str;extern char*Member_Str;enum/ite r里的列号(COLUMN=0,COMMENT);enum(TYPE_ROOT=1,TYPE_DEPT,40C语言课程设计实验报告TYPE_ACHS,TYPE.MEMBER);/*函数声明*/*main.c*/void init_menubar(GtkWidget*menubar);void create_view_and_model(void);void init_show(GtkWidget*list);void on_changed(GtkWiclget*widget,gpointer statusbar);/*file.c*/int LoadData(GtkWidget*button);int LoadList(DEPT_NODE*phead);void rebuildtreeO;int SaveData(GtkWidget*button);int SaveList(DEPT_NODE*phead);void quit_save(GtkWidget*button);/*operate.c*/41C语言课程设计实验报告void Add_node(GtkWidget*button,struct nodecreate*nodec);DEPT.NODE*insert_ACHS(ACHS_NODE*pNew);ACHS_NODE*insert_MEMBER(MEMBER_NODE*pNew);int DelNode(GtkWidget*button);void Del_Node(GtkWidget*button);int Del_Dept(char*name);int Del_Achs(char*name,char*P_name);int Del_Member(char*name,char*P_name,char*PP_name);void Edit_Node(GtkWidget*button,struct nodecreate*nodec);/*IO.c*/void dialog_info(char*show);void entry_info(GtkWidget*button,int type);int Edit_info(GtkWidget*button);void Query_info(GtkWidget*button,int type);void f_cancel(GtkWidget*button,GtkWidget*win);gint Judge_NODE_Type(GtkTreeIter*iter);int Show_Node(GtkTreeIter iter);GtkListStore*Show_Dept(char*name);GtkListStore*Show_Achs(char*name,char*P_name);GtkListStore*Show_Member(char*name,char*P_name,char*PP_name);void itoa(int i,char*