您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 华中科技大学C语言课程设计实验报告
华中科技大学计算机科学与技术学院《C语言程序设计》课程设计基础部分实验报告题目:科技成果信息管理系统专业:计算机科学与技术班级:1204学号:姓名:成绩:指导教师:目录一、系统功能结构设计…………………………………………………………………1二、数据结构设计…………………………………………………………………1三、程序结构…………………………………………………………………4四、函数原型及功能…………………………………………………………………9五、试验结果…………………………………………………………………13六、实验体会……………………………………………………………………29七、附录1:参考文献……………………………………………………………………31八、附录2:程序清单……………………………………………………………………31C语言课程设计实验报告1一、系统功能结构设计航科技成果信息管理系统由五大功能模块组成:文件模块,编辑模块,查询模块,统计模块,帮助模块。如下图所示:二、数据结构设计1.单位信息链结点结构(DEPT_NODE)及用法typedefstructdept_node科技成果信息管理系统文件模块加载数据保存数据编辑模块添加单位删除单位编辑单位添加科技成果删除添加科技成果编辑添加科技成果添加添加科技成果删除添加科技成果编辑添加科技成果查询模块查询单位查询科技成果查询完成人员统计模块统计各单位科技成果总数及各类成果数统计各单位成果排名统计50岁以下第一完成人帮助模块软件信息及作者信息C语言课程设计实验报告2{charnumber[8];/*单位编号*/charname[30];/*单位名称*/charPIC[20];/*负责人*/structdept_node*next;/*指向下一结点*/structarchs_node*achs;/*指向科技成果信息链结点的指针*/GtkTreeIteriter;/*treeview中对应treeiter*/}DEPT_NODE;2.科技成果信息链结点结构(ACHS_NODE)及用法typedefstructachs_node{charnumber[12];/*成果编号*/charname[50];/*成果名称*/charfield[20];/*所属技术领域*/charfirst_dept_name[30];/*第一完成单位*/charfirst_dept_number[8];/*第一完成单位编号*/charfirst_member_name[20];/*第一完成人*/charaward_name[30];/*获奖名称*/charaward_level[10];/*获奖档次*/charaward_grade[10];/*获奖等级*/structarhs_node*next;/*指向下一节点*/structmember_node*members;/*指向完成人员信息结点的指*/GtkTreeIteriter;/*treeview中对应treeiter*/}ACHS_NODE;中文字段名类型及长度变量名举例成果编号char[12]numbe200703150001成果名称char[40]nameThe_method_of_study所属技术领域char[20]fieldcomputer第一完成单位char[30]first_dept_nameHuazhong_university_of_sci&tech第一完成单位编号first_dept_numberfirst_dept_number43007401第一完成人char[20]first_member_nameLu_zhengding获奖名称char[30]award_nameNatural_science_of_hubie_province获奖档次char[10]award_levelprovince/*省级*/中文字段名类型及长度变量名举例单位编号char[8]number43007401单位名称char[30]nameHuazhong_university_of_sci&tech负责人char[20]PICLi_peigengC语言课程设计实验报告2获奖等级intaward_grade1/*一等奖*/3.完成人员信息链结点结构(MEMBER_NODE)及用法typedefstructmember_node{charnumber[18];/*身份证号*/charname[20];/*姓名*/chardept_name[30];/*工作单位*/charsex[4];/*性别*/intage;/*年龄*/chartitle[15];/*职称*/intrank;/*成果排名*/charachs_name[40];/*所属成果名称*/structmember_node*next;/*指向下一个结点*/GtkTreeIteriter;/*treeview中对应treeiter*/}MEMBER_NODE;中文字段名类型及长度举例姓名char[20]numberLu_zhengding身份证号char[18]name420111194801012216工作单位char[30]dept_nameHuazhong_university_of_sci&tech性别charsexm年龄intage60职称char[15]titleprofessor成果排名intrank1所属成果名称char[40]achs_nameThe_method_of_study4.三方向的十字交叉链表结构科技成果1科技成果2科技成果n单位1单位2单位n主链头gp_head经停航班1…经停航班n……C语言课程设计实验报告35.登陆窗体控件结构体(wgt)及用法structlogin_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;//垂直布局盒子,包含以下三个水平布局盒子GtkWidget*hbox_username;//包含用户名提示标签和用户名文本框,下面的HBOX作用类似GtkWidget*hbox_pwd;GtkWidget*hbox_button;}wgt;说明:将登陆窗体相关控件独立成一个结构体6.指向3种节点的指针联合及用法typedefunionnodep{structdept_node*dept;structachs_node*achs;structmember_node*member;}nodep;说明:用于3种结构都会用到但不会同时用到的情形7.两个传递参数的结构及其用法structnodecreate{GtkWidget*window;GtkWidget*entry[9];nodepunp;inttype;};structquery_judgeC语言课程设计实验报告4{GtkWidget*entry;intflag;};说明:GTK信号连接g_signal_connected将函数与信号链接后之内传递一个参数给函数,所以定义这两个结构分别将几个参数结合在一起传递三、程序结构1.主程序运行流程主界面初始化加载数据或重新添加系统功能模块的选择及运行退出系统前提示保存链表数据清理内存中的缓存信息,关闭系统开始结束登陆框出现输入用户名与密码C语言课程设计实验报告52.数据保存流程YNYNYN开始打开航班,经停机场,经停航班信息文件P1==NULL在文件1写入一条单位信息P2==NULLP1=P1-next在文件2写入一条科技成果信息P2=p2-nextP3==NULL关闭文件退出系统在文件3写入一条完成人员信息P3=p3-next结束C语言课程设计实验报告63.添加流程C语言课程设计实验报告74.单位查询流程C语言课程设计实验报告85.统计50岁以下第一完成人流程YNYNNNY开始调用统计函数statis_func3创建一个GtkListStore,P1=gp_headP1P1==NULLP1=p1-next获取第二级链表的链头指针p2=p1-achsP2==NULLP2=p2-nextP3=MEMBER_search(p2-first_member_name,p2-members)P3-age50插入liststore结束将ListStore传递给Statis_info展示出来P1C语言课程设计实验报告9四、函数原型及功能(所有GtkWidget*button参数均为与消息链接用)1.登陆模块//功能:登录框初始化函数//输入参数://返回值:无voidinit_login_widget()//功能:登录验证函数,点击login按钮时调用//输入参数://返回值:无voidlogin(GtkWidget*widget,gpointerdata)2.图形界面模块/**初始化部分变量,再依次调用各函数初始化界面各部分*/intmain(intargc,char*argv[])/**初始化菜单栏*/voidinit_menubar(GtkWidget*menubar)/**初始化目录*/voidcreate_view_and_model(void)/**初始化显示栏*/voidinit_show(GtkWidget*list)/**改变状态栏及显示栏*/voidon_changed(GtkWidget*widget,gpointerstatusbar)//功能:将选中的节点信息在显示栏中显示出来//输入参数:iter//返回值:无intShow_Node(GtkTreeIteriter)//值传递不影响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.文件模块//功能:读取数据文件//输入参数://返回值:re的二进制前3位记录了三个数据文件是否成功打开,1为成功intLoadData(GtkWidget*button)//功能:读取数据文件中数据到链表中//输入参数:phead单位节点头指针的地址//返回值:re的二进制前3位记录了三个数据文件是否成功打开,1为成功C语言课程设计实验报告10intLoadList(DEPT_NODE**phead)//功能:将链表中节点添加到左侧树状列表中//输入参数://返回值:voidrebuildtree()//功能:存储数据文件//输入参数://返回值:flag的二进制前3位记录了三个数据文件是否成功打开,1为成功intSaveData(GtkWidget*button)//功能:将链表中数据存储在数据文件中//输入参数:phead单位节点头指针//返回值:flag的二进制前3位记录了三个数据文件是否成功打开,1为成功intSaveList(DEPT_NODE*phead)//功能:推出前提示保存//输入参数://返回值:voidquit_save(GtkWidget*button)4.查询模块//功能:根据type弹出一个查询框,再分别调用对应的Query函数//输入参数:type对应枚举的几种类型//返回值:无voidQuery_info(GtkWid
本文标题:华中科技大学C语言课程设计实验报告
链接地址:https://www.777doc.com/doc-3174730 .html