华中科技大学C语言课程设计实验报告及源代码

合集下载

华中科技大学计算机学院C语言课设实验报告参考模板

华中科技大学计算机学院C语言课设实验报告参考模板

华中科技大学计算机科学与技术学院《C语言程序设计》课程设计实验报告题目:科研项目信息管理系统专业:计算机班级:学号:姓名:成绩:指导教师:李开完成日期:2009年10 月20 日科研项目信息管理系统一、系统功能结构模块图二、数据结构设计及其用法说明typedef struct lakey{char name[30];/*团队名称*/int total;/*自然科学基金的科研项目数*/float dudu;/*经费数*/struct lakey *next;}*plakey;/*统计3中用到的数据结构*/typedef struct emmey{char name[30];/*团队名称*/int teacher;/*老师人数*/int harden;/*项目数*/float bizhi;/*比值*/struct emmey *next;}*pemmey;/*统计4中用到的数据结构*/typedef struct kPro{char code[15];/*项目编号*/char sort;/*项目种类*/int aking1;char time[8];/*项目时间*/float dudu;/*项目经费*/int aking2;char beiler[15];/*负责人*/int aking3;char keynoName[30];/*所在团队名称*/struct kPro *next;}harden,*pHarden;typedef struct Komo{int teacher;/*老师人数*/char name[20];/*院系名称*/int student;/*学生人数*/float bizhi;/*二者比值*/struct Komo *next;}*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/typedef struct kTea{char name[30];/*团队名称*/char beiler[15];/*负责人*/int stuNum;/*学生人数*/int aking2;int coco;/*老师人数*/char colName[20];/*所在院系的名称*/int aking1;struct kTea *next;pHarden child;}keyno,*pKeyno;typedef struct edward{char name[20];/*院系名称*/int totalnum;/*项目总数*/int num973;/*973项目数*/int num863;/*863项目数*/float amount;/*经费数*/struct edward *next;}*pedward;/*统计2中用到的数据结构*/typedef struct kCol{char name[20];/*院系名称*/int aking;char beiler[15];/*院系负责人*/struct kCol *next;char call[15];/*负责人电话号码*/pKeyno child;}kekey,*pKekey;三、程序结构四、各模块的功能1、pKekey Charge(pKekey alpha)/*这个函数将文件中的内容写入链表中*/2、pKekey temption(int aking,int aking1,int aking2,pKekey item1,pKeynoitem2,pHarden item3,pKekey alpha,int sort)/*这个函数用于向指定位置(aking)添加指定节点(item),alpha是头结点。

C语言课程设计报告40888

C语言课程设计报告40888

一、设计思想首先建立主函数实现功能的选择,然后通过调用函数来分别实现;1.学生信息录入功能(以文件方式保存);2.学生信息浏览功能;3.学生信息查询功能(可以按学号,班级,性别分别进行查询,用子菜单,可显示多条记录);4.学生信息删除功能(按学号进行删除);5.学生信息修改功能(按学号修改);6.不及格学生成绩汇总功能。

二.概要设计1.模块介绍程序由十一个模块组成,分别是:主菜单模块、录入信息模块、保存信息模块、浏览信息模块、查询菜单模块、按学号查询模块、按姓名查询模块、按性别查询模块、修改信息模块、删除信息模块、不及格学生信息汇总模块。

2.函数功能lr()函数是实现信息录入功能的函数;bc()函数是将录入的信息保存到文件中额函数;ll()是实现浏览功能的函数;cx()是实现信息查询功能的函数,在cx()函数调用了xuehao(); xingming(); xingbie()这三个函数,这三个函数分别实现按学号查找、按姓名查找、按性别查找学生信息的功能;sc()函数是实现删除学生信息的功能;页脚内容1xg()实现信息修改功能;hz()实现不及格学生汇总的功能3、系统流程页脚内容2页脚内容3三.详细设计1、代码#include <stdio.h>#include <string.h>#include<stdlib.h>struct student{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];页脚内容4char tele[15];char course[10];int score;};int n=0;struct student stu[100]; //定义变量struct student *p;FILE *fp;void lr();void ll();void cx();void sc();void xg();void hz();void bc();void xuehao();void xingming();页脚内容5void xingbie(); //定义函数void main() //主函数{int z;printf("+---------------------------+\n");printf("| 欢迎使用学生信息管理系统|\n");printf("+---------------------------+\n");printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");do{printf("\n\t\t\t--------------------------------\n");printf("\t\t\t+ 主菜单|\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ [1]----录入学生信息|\n");printf("\t\t\t+ [2]----浏览学生信息|\n");printf("\t\t\t+ [3]----查询学生信息|\n");页脚内容6printf("\t\t\t+ [4]----删除学生信息|\n"); printf("\t\t\t+ [5]----修改学生信息|\n"); printf("\t\t\t+ [6]----不及格学生成绩汇总|\n"); printf("\t\t\t+ [0]----退出系统|\n"); printf("\t\t\t--------------------------------\n");printf("请输入您的选择:");scanf("%d", &z);switch(z){case 0 : break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :hz();break; //函数调用default:printf("\n无效选项!");页脚内容7}}while(z!= 0);}void lr() //录入函数{ int y;if(n==0)p=stu;printf("--------------------\n");printf("\n\t\t请输入学生的学号:");scanf("%s",&stu[n].num);printf("\n\t\t请输入学生的姓名:");scanf("%s",&stu[n].name);printf("\n\t\t请输入学生的班级:");scanf("%s",&stu[n].cla);printf("\n\t\t请输入学生的年龄:");页脚内容8scanf("%d",&stu[n].age);printf("\n\t\t请输入学生的性别:");scanf("%s",&stu[n].sex);printf("\n\t\t请输入学生的出生年月:");scanf("%s",&stu[n].bir);printf("\n\t\t请输入学生的地址:");scanf("%s",&stu[n].addr);printf("\n\t\t请输入学生的电话:");scanf("%s",&stu[n].tele);printf("\n\t\t请输入学生的课程:");scanf("%s",&stu[n].course);printf("\n\t\t请输入学生的成绩:");scanf("%d",&stu[n].score); //输入学生的信息n++;p++;printf("请输入0以保存信息:");scanf("%d",&y);页脚内容9if(y==0)bc(); //调用函数elseprintf("无效选项");return;}void bc()/*保存函数*/{int i;if ((fp=fopen("fstudent.txt","wb"))==NULL) //打开一个只写文件,将要打开的文件的指针赋给fp,使fp 与文件相联系{printf("\n\t\t文件打开失败");exit(0);}for (i=0;i<100;i++){ fwrite(&stu[i],sizeof(struct student),1,fp);//把信息输出大奥fp所指向的文件中,返回值为写到fp文件中页脚内容10的数据项的个数}fclose(fp); //关闭fp所指的文件,有错返回非0,否则返回0 printf("\n\t\t通讯录文件已保存");printf("\n\t\t按回车键退出程序\n\t\t");}void ll()/*浏览函数*/{int i;if(n!=0){printf("\n\t\t*************** 以下为学生管理系统所有信息************");for (i=0;i<n;i++){页脚内容11printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\t\t\n");}printf("\n\t\t************************************************"); }}void cx()/*查询函数*/页脚内容12{int c;do{ printf("\n");printf("+--------------------+\n");printf("| 按学号查询请按1 |\n");printf("| 按姓名查询请按2 |\n");printf("| 按性别查询请按3 |\n");printf("| 取消请按0 |\n");printf("+--------------------+\n");printf("请输入您的选择:");scanf("%d", &c);switch(c){case 0:break;case 1:xuehao();break;case 2:xingming();break;页脚内容13case 3:xingbie();break; //调用函数default:printf("\n提示:无效选项!");break;}}while(c!= 0);}void xingming()//按姓名查询{int i;int j=0;char name[15];printf("\n\t\t****************** 按姓名查找******************"); printf("\n\t\t请输入要查学生的姓名:");scanf("%s",name);页脚内容14for(i=0;i<n;i++)if(strcmp(name,stu[i].name)==0) //比较两个字符串,若相等,返回0 {j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");页脚内容15getchar(); //输入选择if (getchar()=='y')xingming(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}页脚内容16void xuehao()//*按学号查询{int i;int j=0;char num[13];printf("\n\t\t****************** 按学号查找******************"); printf("\n\t\t请输入要查学生的学号:");scanf("%s",&num);for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);页脚内容17printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xuehao(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");页脚内容18printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}void xingbie()//按性别查询{int i;int j=0;char sex[4];printf("\n\t\t****************** 按性别查找******************"); printf("\n\t\t请输入要查学生的性别:");页脚内容19scanf("%s",&sex);for(i=0;i<n;i++){for(i=0;i<n;i++)if(strcmp(sex,stu[i].sex)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);页脚内容20printf("\n\t\t************************************************"); }printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xingbie(); //函数的递归调用return;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");页脚内容21getchar();getchar();}void xg()/*修改函数*/{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];char tele[15];char course[10];char score;int i,j,c;页脚内容22if(n!=0){printf("请输入您要修改的学生的学号:");scanf("%s", &num);printf("\n");for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j=i;printf("请选择您要修改的学生的信息内容:\n");printf("+--------------------------+\n");printf("| 姓名请按1 |\n");printf("| 班级请按2 |\n");printf("| 年龄请按3 |\n");printf("| 性别请按4 |\n");printf("| 出生年月请按5 |\n");printf("| 地址请按6 |\n");printf("| 电话请按7 |\n");页脚内容23printf("| 课程请按8 |\n");printf("| 成绩请按9 |\n");printf("| 取消请按0 |\n");printf("+--------------------------+\n");printf("请输入您的选择:");scanf("%d", &c);printf("\n");switch(c){case 0:break;case 1:printf("请输入新姓名:");scanf("%s",stu[j].name);strcpy(name,stu[j].name); //复制字符串,返回namebreak;case 2:printf("请输入新班级:");scanf("%s",stu[j].cla);页脚内容24strcpy(cla,stu[j].cla);break;case 3:printf("请输入新年龄:");scanf("%d",&stu[j].age);strcpy(age,stu[j].age);break;case 4:printf("请输入新性别:");scanf("%s",stu[j].sex);strcpy(sex,stu[j].sex);break;case 5:printf("请输入新出生年月:");scanf("%s",stu[j].bir);strcpy(bir,stu[j].bir);break;case 6:printf("请输入新地址:");scanf("%s",stu[j].addr);strcpy(addr,stu[j].addr);break;case 7:printf("请输入新电话:");scanf("%s",stu[j].tele);strcpy(tele,stu[j].tele);break;页脚内容25case 8:printf("请输入新课程:");scanf("%s",stu[j].course);strcpy(course,stu[j].course);break;case 9:printf("请输入新成绩:");scanf("%d",stu[j].score);strcpy(score,stu[j].score);break;default:printf("\n无效选项!");break;}}printf("\n\t\t按回车键返回主菜单:");getchar();getchar(); //输入回车键return;}elseprintf("提示:无学生数据,请输入数据!");页脚内容26}void sc()/*删除函数*/{int e=0;char name[15];int j;int i;char id[20];printf("\n\t\t请输入要删除联系人姓名:");scanf("%s",name);getchar();for (i=0;i<n;i++){if (strcmp(stu[i].name,name)==0){printf("\n\t\t以下是您要删除的学生纪录:");页脚内容27e++;printf("\n\t\t****************************");printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t****************************");printf("\n\t\t是否删除?(y/n)");if (getchar()=='y'){for (j=i;j<n;j++)页脚内容28stu[j]=stu[j+1];n--;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");getchar();if (getchar()=='y')sc();}}}if (e==0){printf("\n\t\t没有该学生的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getchar()=='y')sc(); //函数的递归调用}页脚内容29}void hz()/*汇总函数*/{int score;int i;int *p;for(i=0;i<n;i++){for(p=&stu[i].score;p<(stu[i].score+n);p++) //用指针变量指向数组元素printf("%d",*p); //*p即为学生的成绩if(*p<60){printf("\n\t\t************** 以下是不及格学生的信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);页脚内容30printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); }}}四、总结页脚内容31在这为期一周的课程设计中,我发现了很多问题,也正是因为发现了问题,我也学到了很多东西。

华中科技大学c语言课程设计实验报告_图文

华中科技大学c语言课程设计实验报告_图文
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; //垂直布局盒子,包含以下三个水平布局盒子 GtkWidget *hbox_username; //包含用户名提示标签和用户名文本框,下面 的 HBOX 作用类似 GtkWidget *hbox_pwd; GtkWidget *hbox_button; } wgt;
/*treeview 中对应 treeiter*/
} MEMBER_NODE;
中文字段名 姓名 身份证号 工作单位 性别 年龄 职称 成果排名 所属成果名称
类型及长度 char[20] char[18] char[30] char int char[15] int char[40]
number name dept_name sex age title rank achs_name
华中科技大学计算机科学与技术学院
《C 语言程序设计》课程设计
基础部分实验报告 题目: 科技成果信息管理系统
专业: 班级: 学号: 姓名: 成绩:
计算机科学与技术 1204

华中科技大学自动化学院C语言课设实验报告

华中科技大学自动化学院C语言课设实验报告

华中科技大学自动化学院《C语言程序设计》课程设计实验报告题目:南海军演模拟系统专业:测控班级: 1301学号: U201314492 U201314494姓名:柳焜剑杨渊超成绩:指导教师:周凯波完成日期:2014年11 月 1 日一系统功能结构模块及程序结构二各模块的功能1、maine();/*这个函数将第一张欢迎图片展示出来*/2、void init();/*画图初始化*/3、process0();process00();process01();process02();process03();process03A();process03B();/*实现各个界面的功能,通过if语句来执行不同的界面切换*/4、abc();form();bfjj1();bfjj2();bfjj3();help();/*画图函数以及返回mouse函数,通过返回到达不同界面下的不同按钮效果*/5、end/*结束函数 */6、outhz ()/*汉字和输入函数*7、menue();/*菜单函数,显示主菜单,四个按钮*/8 ……三试验结果1、主菜单页面2、军舰指导3、军演开始一、体会这是我们第一次做这么大型的且比较复杂的一个C程序,从暑假开始边看书边慢慢尝试到如今全部做出来花费了许多时间与精力。

以前接触到的C程序设计都是最简单、最基本的编程,就连最后的期末考试也只是一些小程序,并不像课程设计这样庞大复杂。

小程序是考察我们对基本概念的熟识,而这种大程序则是考察了我们对整体构架的设计以及各种小程序的拼接,看似不难,实则会遇到许多意想不到的困难,当然,这过程当中我们学到了许多。

后来经过网上的搜索资料以及和其他同学的讨论,对这个军演系统进行一些列分块,拆成几个部分,然后再逐个突破,这样显得有条理且方便。

接下来是真正开始动手写程序,随之而来的是一些列的问题,其中最困扰我的是内存模式。

在所有内核做好之后,接下来就是界面的问题,最开始的时候我考虑做图形界面,但是由于时间比较紧迫,不得不放弃,只好做了一个简易菜单,菜单设计容易,可是将界面和程序结合起来却又是一个难题。

华科计算机学院C语言课设源代码

华科计算机学院C语言课设源代码

#i n c l u d e<s t d i o.h> #include <stdlib.h>#include <ctype.h>#include <conio.h>#include <string.h>#include <stddef.h>#include <dos.h>#define SUM 100/*菜单内容*/char *menu[]={"File", /*文件*/"Edit ", /*修改*/"Insert", /*插入*/"Delete", /*删除*/"Query", /*查询*/"Statistic", /*统计*/"Help"};/*将首字母设为红色*/char *red[]={"F","E","I","D","Q","S","H"};/*File菜单*/char *F[]={"Create", /*新建*/"Save", /*保存*/"Load", /*载入*/"Exit"}; /*删除*/char *E[]={"Province","City","Town"};/*Insert菜单*/char *I[]={"Province","City","Town"};/*Delete菜单*/char *D[]={"Province","City","Town"};/*Query菜单*/char *Q[]={"Province","City","Town"};/*Statistic菜单*/char *S[]={"Province mode","City mode","Town mode"}; /*Help菜单*/char *H[]={"About..."};/*缓冲区*/char buf[18*10*2],buf1[17*2];/*乡镇受灾信息链结点结构*/typedef struct town{char town_id[4]; /*乡镇编号*/char town_name[7]; /*乡镇名称*/char city_id[5]; /*所属地市编号*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum3; /*该地市输入的乡镇数*/int vill_flo_num; /*洪灾自然村数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *next; /*指向下一乡镇的指针*/} town; /*定义结构名*//*地市受灾信息链结点结构*/typedef struct city{char city_id[5]; /*地市编号*/char city_name[10]; /*地市名称*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum2; /*该省自治区输入的地市数*/ int town_num; /*所辖乡镇数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *tnext; /*指向乡镇受灾信息的头指针*/ struct city *next; /*指向下一地市的指针*/} city;/*省自治区受灾信息链结点结构*/typedef struct prov{char prov_id[2]; /*省自治区编号*/char prov_name[20]; /*省自治区名称*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum1; /*输入的自治区数*/int city_num; /*所辖市县数*/int city_disa_num; /*受灾市县数*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct city *cnext; /* 指向地市受灾信息的头指针*/struct prov *next; /* 指向下一省自治区的指针*/} prov;char prov_id[2]; /*全局变量,记录省自治区编号*/char city_id[5]; /*全局变量,记录地市编号*/prov * head; /*省自治区链表头指针*/city * head2; /*地市链表头指针*/town * head3; /*乡镇链表头指针*/int sum1; /*存储省自治区总个数*/int sum2; /*存储地市个数*/int sum3; /*存储乡镇个数*/void frame(int startx,int starty,int width,int height) ; /* 画边框函数*/ void welcome(void) ; /*欢迎界面函数*/int mainmenu(void); /*主菜单界面函数*/int ShowAbout(void); /*显示帮助函数*/void CreateProv(prov ** ); /*创建省自治区链表函数*/void CreateCity(city ** ); /*创建地市链表函数*/void CreateTown(town ** ); /*创建乡镇链表函数*/void Save(prov*); /*保存信息函数*/void Load(prov **); /*载入信息函数*/void QueryProv(prov **); /*显示查询省自治区信息函数*/ void QueryCity(prov **,city **); /*显示查询地市信息函数*/void QueryTown(prov **,city **,town **); /*显示查询乡镇信息函数*/void InsertProv(prov *); /*显示插入省自治区信息函数*/ void InsertCity(prov *,city *); /*显示插入地市信息函数*/void InsertTown(prov *,city *,town *);/*显示插入乡镇信息函数*/void DeleteProv(prov *); /*显示删除省自治区信息函数*/ void DeleteCity(prov *,city *); /*显示删除地市信息函数*/void DeleteTown(prov *,city *,town *);/*显示删除乡镇信息函数*/void EditProv(prov **); /*显示修改省自治区信息函数*/ void EditCity(prov **,city **); /*显示修改地市信息函数*/void EditTown(prov **,city **,town **);/*显示修改乡镇信息函数*/void StatProv(prov **,city **,town **); /*显示统计省自治区信息函数*/ void StatCity(prov **,city **,town **); /*显示统计地市信息函数*/void StatTown(prov **,city **,town **); /*显示统计乡镇信息函数*/ void main(){int i,j,key,x,y,back;welcome();clrscr();menu:do{textbackground(BLACK);/* 设置屏幕背景颜色,并清除屏幕*/clrscr();window(1,1,80,1);/* 创建窗口用于显示菜单栏*//* 设置文本属性:白底蓝字*/textbackground(WHITE); /* 白色背景*/textcolor(BLUE); /* 蓝色字体*/clrscr(); /* 清屏*/window(1,1,80,1); /*设置活动菜单窗口*/clrscr(); /* 清屏*//* 显示菜单*/for(i=0,j=0;i<7;i++){/* 保存菜单第一个字母的位置,后面要用红色再打一次菜单的第一个字母*/x=wherex(); /* 当前光标X坐标*/y=wherey(); /* 当前光标Y坐标*/cprintf(" %s",menu[i]); /* 打印输出菜单*/j=strlen(menu[i]);textcolor(RED); /* 用红色输出菜单的第一个字母*/cprintf(" %s",red[i]);x=x+j+5;gotoxy(x,y);textcolor(BLUE); /* 将文本颜色修改为蓝色*/}x=0;key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*//*F\f 显示File下拉菜单*/if(key==33){textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/window(1,1,80,1);gotoxy(5,1);cprintf("%s",menu[0]);/*打印输出File */gettext(5,2,12,8,buf); /*备份将要被File下拉菜单窗口覆盖的区域到内存buf */ window(5,2,12,8); /*创建File下拉菜单窗口*//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);window(5,2,12,8); /* 画边框*/frame(1,1,8,6);/* 打印输出下拉菜单*/for(i=2; i<6;i++){gotoxy(2,i);cprintf("%s",F[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(5,3,12,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",F[0]);/* 处理按键*/y=2;key=get_key();while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){if(key==72)y=y==2? 5:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==5? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(5,y+1,12,y+1,buf1); /* 备份当前项(黄底蓝字) *//* 以下4行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",F[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /*恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();CreateProv(&head); /*创建文件*/case 2:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/ window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Save(head); /*保存文件*/break;case 3:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/ window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Load(&head); /*读取文件*/break;case 4:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/ window(1,2,80,25); /*在整个屏幕上建一个窗口*/textbackground(BLACK);clrscr();gotoxy(30,10);/*询问是否退出程序,若y则退出,若其他则跳出这一层*/printf("Exit,sure?y/n ");if(getchar()==121)exit(-1); /*终止程序*/elsebreak;default: break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(5,2,12,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(5,1);cprintf("%s",menu[0]);}}/*E\e显示Edit下拉菜单*/if(key==18){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(14,1); /*打印输出Edit */cprintf("%s",menu[1]);gettext(14,2,23,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf */ window(14,2,23,7); /*创建下拉菜单窗口*//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);clrscr();window(14,2,23,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(14,3,23,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",E[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(14,y+1,23,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(14,y+1,23,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",E[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditTown(head,head2,head3);/*显示插入乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(14,2,23,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(14,1);cprintf("%s",menu[2]);}}/*I\i显示Insert下拉菜单*/if(key==23){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(24,1);cprintf("%s",menu[2]); /*打印输出Insert */gettext(24,2,33,7,buf);/*备份将要被下拉菜单窗口覆盖的区域到内存buf */ window(24,2,33,7);/*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(24,2,33,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(24,3,33,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",I[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(24,y+1,33,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(24,y+1,33,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",I[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertTown(head,head2,head3);/*显示插入乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(24,2,33,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(24,1);cprintf("%s",menu[2]);}}/*D\d显示Delete下拉菜单*/if(key==32){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(35,1);cprintf("%s",menu[3]); /*打印输出Delete */gettext(35,2,44,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf */window(35,2,44,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(35,2,44,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",D[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(35,3,44,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",D[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){/*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){/* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(35,y+1,44,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",D[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteProv(head);/*删除省自治区信息函数*/goto menu;case 2: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteCity(head,head2);/*删除地市信息函数*/goto menu;case 3: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteTown(head,head2,head3); /*删除乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(35,2,44,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(35,1);cprintf("%s",menu[3]);}}/*Q\q显示Query下拉菜单*/if(key==16){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(46,1);cprintf("%s",menu[4]); /*打印输出Query*//*备份将要被下拉菜单窗口覆盖的区域到内存buf */ gettext(46,2,55,7,buf);window(46,2,55,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(46,2,55,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",Q[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(46,3,55,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",Q[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(46,y+1,55,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(46,y+1,55,y+1,buf1); /* 备份当前项(白底黑字) */textbackground(BLUE);/* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/ textcolor(YELLOW);gotoxy(2,y);cprintf("%s",Q[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryProv(head);/*显示查询省自治区信息函数*/goto menu;case 2: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryCity(head,head2);/*显示查询地市信息函数*/goto menu;case 3: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryTown(head,head2,head3);/*显示查询乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(46,2,55,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(46,1);cprintf("%s",menu[4]);}}/*S\s显示Statistic下拉菜单*/if(key==31){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(56,1);cprintf("%s",menu[5]);/*打印输出Statistic*/gettext(56,2,70,7,buf);/*备份*/window(56,2,70,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(56,2,70,7); /* 画边框*/frame(1,1,15,5);for(i=2; i<5;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",S[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(56,3,70,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",S[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(56,y+1,70,y+1,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(56,y+1,70,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",S[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatProv(head,head2,head3);/*执行省自治区统计函数*/goto menu;break;case 2: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatCity(head,head2,head3);/*执行地市统计函数*/goto menu;break;case 3: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatTown(head,head2,head3);/*执行乡镇统计函数*/goto menu;break;default:break;}}/* ESC--关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(56,2,70,7,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(56,1);cprintf("%s",menu[5]);}}/*H\h显示帮助信息*/if(key==35){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(70,1);cprintf("%s",menu[6]);/*备份将要被operation下拉菜单窗口覆盖的区域到内存buf */ gettext(70,2,79,5,buf);window(70,2,79,5);/*创建Help下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(70,2,79,5);frame(1,1,10,3);/* 画边框*//* 打印输出下拉菜单*/for(i=2; i<3;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",H[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(70,3,79,5,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",H[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*//* Enter */if(key==28){/* 下拉菜单处理*/puttext(70,2,79,5,buf);/*恢复屏幕显示*/puttext(70,3,79,3,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/window(1,2,80,25); /*创建一个占据整个屏幕的窗口*/clrscr();if(ShowAbout()==1)goto menu;}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(70,2,79,5,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(70,1);cprintf("%s",menu[6]);}}}while(1);}/*欢迎界面函数*/void welcome(void){struct date d; /*定义日期结构体*/struct time t; /*定义时间结构体*/getdate(&d); /*读取系统日期并把它放到结构体d中*/gettime(&t); /*读取系统时间并把它放到结构体t中*/clrscr();textbackground(BLACK); /*黑屏*/clrscr(); /*清屏*/textcolor(MAGENTA);gotoxy(3,8);cprintf("#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++#");gotoxy(3,9);cprintf("+ +");gotoxy(3,11);cprintf("+ +");gotoxy(3,13);cprintf("+ +");gotoxy(3,14);cprintf("#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++#\n\n");gotoxy(3,10);cprintf("+");gotoxy(78,10);cprintf("+");gotoxy(3,12);cprintf("+");gotoxy(78,12);cprintf("+");textcolor(YELLOW);gotoxy(4,10);cprintf(" * Welcome To * ");gotoxy(4,12);cprintf(" * The Information System Of Disaster! * ");textcolor(WHITE);gotoxy(36,21);cprintf("%d\\%02d\\%02d",d.da_year,d.da_mon,d.da_day); /*显示当前系统日期*/gotoxy(37,22);cprintf("%02d:%02d:%02d\n",t.ti_hour, t.ti_min, t.ti_sec); /*显示当前系统时间*/printf("\n");getchar();}/* 得到按键值函数*/int get_key(void){union REGS regs;regs.h.ah=0; /*设置光标位置*/int86(0x16,&regs,&regs); /*通用8086软中断接口*/return regs.h.ah;}/* 画边框函数*/void frame(int startx,int starty,int width,int height){int i;height=height+1;gotoxy(startx,starty=starty+1); putch(0xda); /*打印左上角*/ for (i=startx+1;i<width;i++)putch(0xc4); /*打印上边线*/putch(0xbf); /*打印右上角*/for(i=starty+1;i<height;i++){gotoxy(startx,i);putch(0xb3); /*打印左边的竖线*/gotoxy(width,i);putch(0xb3); /*打印右边的竖线*/}gotoxy(startx,height);putch(0xc0); /*打印左下角*/for(i=startx+1;i<width;i++)putch(0xc4); /*打印下边线*/putch(0xd9); /*打印右下角*/return;}/*显示帮助函数*/int ShowAbout(void){int key;window(1,2,80,25);textbackground(BLACK);clrscr();textcolor(LIGHTMAGENTA);gotoxy(6,2);cprintf("About the maker:");gotoxy(6,11);cprintf("About the program:");textcolor(YELLOW);gotoxy(9,4);printf("* Name: Liu Maolin");gotoxy(9,5);printf("* School: Huazhong University of Science and Technologe");gotoxy(9,6);printf("* Profession: Computer Science and Technologe");gotoxy(9,7);printf("* Class: cs1011");gotoxy(9,8);printf("* Student Num: U201014564");gotoxy(9,13);printf("# This is my first large scale C program.");gotoxy(9,14);printf("# I know there still have some regretful spots.");gotoxy(9,15);printf("# I'm fond of C program,as well as study.");textcolor(LIGHTGREEN);gotoxy(17,19);cprintf("Please press the to go back!");textcolor(WHITE);gotoxy(34,19);cprintf("Enter");Again:while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if (key==28)return 1;else{textcolor(WHITE);printf("\n Error!Please press again!\n");goto Again; /*若输入键不为Enter则返回Again再次输入*/ }}/*创建省自治区链表函数*/void CreateProv(prov ** head1){prov *p1; /*定义遍历指针*/int key,sum=0; /*用于判断是否退出*/char c; /*用于判断是否继续创建省自治区信息*/(*head1)=(prov *)malloc(sizeof(prov)); /*遍历指针指向链表头*/ p1=*head1; /*遍历指针初值同省自治区头指针*//*黑底粉字*/window(1,2,80,25);textbackground(BLACK);textcolor(LIGHTMAGENTA);clrscr();do{clrscr();printf(" *Input the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;else{float temp; /*定义一个中间变量*/printf("\tProvince number:");gets(p1->prov_id); /*读入省自治区编号*/fflush(stdin); /*清空输入流*/strcpy(prov_id,p1->prov_id); /*将省自治区编号记录进prov_id全局变量*/ printf("\tProvince name:");scanf("%s",p1->prov_name); /*读入省自治区名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p1->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p1->lake_area=temp;fflush(stdin);printf("\tSum of cities:");scanf("%d",&p1->city_num); /*读入所辖地市数*/ fflush(stdin);printf("\tSum of disacities:");scanf("%d",&p1->city_disa_num); /*读入受灾地市数*/ fflush(stdin);printf("\tSum of drocities:");scanf("%d",&p1->city_dro_num); /*读入旱灾地市数*/ fflush(stdin);printf("\tSum of flocities:");scanf("%d",&p1->city_flo_num); /*读入洪灾地市数*/ fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p1->popu_disa_num); /*读入受灾人口*/ fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p1->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p1->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p1->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p1->proflo_area=temp;fflush(stdin);printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/ p1->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");scanf("%f",&temp); /*读入抗洪投入资金*/ p1->flo_fund=temp;fflush(stdin);printf("\tSum of relief:");scanf("%f",&temp); /*读入救济金额*/p1->relief=temp;fflush(stdin);}sum++;p1->sum1=sum;CreateCity(&p1->cnext); /*调用建立地市链表函数,建立该省自治区所辖地市链表*/printf("Next province? Y/N "); /*询问是否有下一个省自治区*/scanf("%c",&c);fflush(stdin);while((c!='Y'&&c!='y')&&(c!='N'&&c!='n')) /*若输入错误输出提示信息,重新输入*/{printf("Error!Input again:");scanf("%c",&c);}fflush(stdin);if (c=='N'||c=='n') /*若无下一个省自治区则跳出循环*/{break;}p1->next=(prov *)malloc(sizeof(prov)); /*用next指针新建省自治区链表*/p1=p1->next; /*遍历指针指向新建链表*/clrscr();gotoxy(3,1);cprintf("Next province:\n"); /*提示输入下一省自治区信息*/}while (c=='Y'||c=='y'); /*若有下一省自治区则循环读入信息*/printf("Create provinces successfully!\tSum=%d",p1->sum1); /*提示创建成功,显示创建数目*/ fflush(stdin);p1->next=NULL; /*如无后续省自治区链表并退出循环,将next指针赋为空*/ }/*创建地市链表函数*/void CreateCity(city ** head2){prov *p1;city *p2; /*定义遍历指针*/int key,sum=0;char c; /*用于判断是否继续创建地市信息*/(*head2)=(city *)malloc(sizeof(city)); /*遍历指针指向链表头*/p2=*head2; /*遍历指针初值同地市头指针*/window(1,2,80,25);clrscr();do{clrscr();printf(" *Input the cities of the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;elsefloat temp;strcpy(p2->prov_id,prov_id); /*所属省自治区赋值*/printf("\tCity number:");scanf("%s",p2->city_id); /*读入地市编号*/fflush(stdin); /*清空输入流*/strcpy(city_id,p2->city_id); /*将地市编号记录进city_id全局变量*/ printf("\tCity name:");scanf("%s",p2->city_name); /*读入地市名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p2->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p2->lake_area=temp;fflush(stdin);printf("\tSum of towns:");scanf("%d",&p2->town_num); /*读入所辖乡镇数*/fflush(stdin);printf("\tSum of disatowns:");scanf("%d",&p2->town_disa_num); /*读入受灾乡镇数*/ fflush(stdin);scanf("%d",&p2->town_dro_num); /*读入旱灾乡镇数*/ fflush(stdin);printf("\tSum of flotowns:");scanf("%d",&p2->town_flo_num); /*读入洪灾乡镇数*/ fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p2->popu_disa_num); /*读入受灾人口*/ fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p2->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p2->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p2->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p2->proflo_area=temp;printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/p2->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");scanf("%f",&temp); /*读入抗洪投入资金*/p2->flo_fund=temp;fflush(stdin);printf("\tSum of relief:");scanf("%f",&temp); /*读入救济金额*/p2->relief=temp;fflush(stdin);}sum++;p2->sum2=sum;CreateTown(&p2->tnext); /*调用建立乡镇链表函数,建立该地市所辖乡镇链表*/ printf("Next city? Y/N "); /*询问是否有下一地市*/scanf("%c",&c);fflush(stdin);while((c!='Y'&&c!='y')&&(c!='N'&&c!='n')) /*若输入错误输出提示信息,重新输入*/ {printf("Error!Input again:");scanf("%c",&c);。

c语言课程设计+报告+源代码

c语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。

二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。

用户密码的修改。

而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。

三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。

2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。

3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。

4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。

5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。

6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。

b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。

C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。

7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。

8.输出现有职工的信息: 会显示现在记录的职工的各项信息。

C语言课程设计报告2

C语言课程设计报告2

华中科技大学计算机科学与技术学院C语言课程设计报告题目: 模拟器和汇编程序的设计专业:计算机科学与技术班级:学号:姓名:成绩:指导教师:李开完成日期:2012年10月15日目录一、系统需求分析 (1)二、总体设计 (6)三、数据结构设计 (7)四、详细设计 (9)五、系统实现 (13)六、运行测试与结果分析 (42)七、总结 (44)八、参考文献 (45)九、指导教师评语 (46)一、系统需求分析Simulator and Assembler1. 用C语言编制汇编程序,将此简单计算机的汇编源程序翻译成目标代码,即机器码。

为了测试所编制汇编程序的正确性,需用以上介绍的指令集编写两个汇编源程序,汇编源程序的功能要求为:求1+2+3+…+100,并输出运算结果。

②求将” Simulator and Assembler”拷贝复制到新串并输出运算结果。

串并输出运算结果。

其中,32条指令以及伪指令和它们的功能如下:(1) 停机指令:HLT功能:终止程序运行。

(2) 无条件转移指令:JMP label功能:将控制转移至标号label处,执行标号label后的指令。

(3) 比较运算转移指令:CJMP label功能:如果程序状态字中比较标志位c的值为1(即关系运算的结果为真),则将控制转移至标号label处,执行标号label后的指令;否则,顺序往下执行。

(4) 溢出转移指令:OJMP功能:如果程序状态字中比较标志位o的值为1(即算术运算的结果发生溢出),则将控制转移至标号label处,执行标号label后的指令;否则,顺序往下执行。

(5) 调用子程序指令:CALL label功能:将通用寄存器A~G、程序状态字PSW、程序计数器PC中的值保存到ES,然后调用以标号label开始的子程序,将控制转移至标号label处,执行标号label后的指令。

(6) 子程序返回指令:RET功能:将ES中保存的通用寄存器A~Z、程序状态字PSW和程序字数器PC的值恢复,控制转移到子程序被调用的地方,执行调用指令的下一条指令。

华科计算机学院C语言课设源代码

华科计算机学院C语言课设源代码

#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <conio.h>#include <string.h>#include <stddef.h>#include <dos.h>#define SUM 100/*菜单内容*/char *menu[]={"File", /*文件*/"Edit ", /*修改*/"Insert", /*插入*/"Delete", /*删除*/"Query", /*查询*/"Statistic", /*统计*/"Help"};/*将首字母设为红色*/char *red[]={"F","E","I","D","Q","S","H"};/*File菜单*/char *F[]={"Create", /*新建*/"Save", /*保存*/"Load", /*载入*/"Exit"}; /*删除*//*Edite菜单*/char *E[]={"Province","City","Town"};/*Insert菜单*/char *I[]={"Province","City","Town"};/*Delete菜单*/char *D[]={"Province","City","Town"};/*Query菜单*/char *Q[]={"Province","City","Town"};/*Statistic菜单*/char *S[]={"Province mode","City mode","Town mode"}; /*Help菜单*/char *H[]={"About..."};/*缓冲区*/char buf[18*10*2],buf1[17*2];/*乡镇受灾信息链结点结构*/typedef struct town{char town_id[4]; /*乡镇编号*/char town_name[7]; /*乡镇名称*/char city_id[5]; /*所属地市编号*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum3; /*该地市输入的乡镇数*/int vill_dro_num; /*旱灾自然村数*/int vill_flo_num; /*洪灾自然村数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *next; /*指向下一乡镇的指针*/} town; /*定义结构名*//*地市受灾信息链结点结构*/typedef struct city{char city_id[5]; /*地市编号*/char city_name[10]; /*地市名称*/char prov_id[2]; /*所属省自治区编号*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum2; /*该省自治区输入的地市数*/ int town_num; /*所辖乡镇数*/int town_disa_num; /*受灾乡镇数*/int town_dro_num; /*旱灾乡镇数*/int town_flo_num; /*洪灾乡镇数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct town *tnext; /*指向乡镇受灾信息的头指针*/ struct city *next; /*指向下一地市的指针*/} city;/*省自治区受灾信息链结点结构*/typedef struct prov{char prov_id[2]; /*省自治区编号*/char prov_name[20]; /*省自治区名称*/float land_area; /*耕地面积*/float lake_area; /*湖泊面积*/int sum1; /*输入的自治区数*/int city_num; /*所辖市县数*/int city_disa_num; /*受灾市县数*/int popu_disa_num; /*受灾人口*/float dro_area; /*旱灾面积*/float flo_area; /*洪灾面积*/float prodro_area; /*抗旱面积*/float proflo_area; /*抗洪面积*/float dro_fund; /*抗旱投入资金*/float flo_fund; /*抗洪投入资金*/float relief; /*救济金额*/struct city *cnext; /* 指向地市受灾信息的头指针*/struct prov *next; /* 指向下一省自治区的指针*/} prov;char prov_id[2]; /*全局变量,记录省自治区编号*/char city_id[5]; /*全局变量,记录地市编号*/prov * head; /*省自治区链表头指针*/city * head2; /*地市链表头指针*/town * head3; /*乡镇链表头指针*/int sum1; /*存储省自治区总个数*/int sum2; /*存储地市个数*/int sum3; /*存储乡镇个数*/void frame(int startx,int starty,int width,int height) ; /* 画边框函数*/ void welcome(void) ; /*欢迎界面函数*/int mainmenu(void); /*主菜单界面函数*/int get_key(void); /* 得到按键值函数*/int ShowAbout(void); /*显示帮助函数*/void CreateProv(prov ** ); /*创建省自治区链表函数*/void CreateCity(city ** ); /*创建地市链表函数*/void CreateTown(town ** ); /*创建乡镇链表函数*/void Save(prov*); /*保存信息函数*/void Load(prov **); /*载入信息函数*/void QueryProv(prov **); /*显示查询省自治区信息函数*/ void QueryCity(prov **,city **); /*显示查询地市信息函数*/void QueryTown(prov **,city **,town **); /*显示查询乡镇信息函数*/void InsertProv(prov *); /*显示插入省自治区信息函数*/ void InsertCity(prov *,city *); /*显示插入地市信息函数*/void InsertTown(prov *,city *,town *);/*显示插入乡镇信息函数*/void DeleteProv(prov *); /*显示删除省自治区信息函数*/ void DeleteCity(prov *,city *); /*显示删除地市信息函数*/void DeleteTown(prov *,city *,town *);/*显示删除乡镇信息函数*/void EditProv(prov **); /*显示修改省自治区信息函数*/ void EditCity(prov **,city **); /*显示修改地市信息函数*/void EditTown(prov **,city **,town **);/*显示修改乡镇信息函数*/void StatProv(prov **,city **,town **); /*显示统计省自治区信息函数*/ void StatCity(prov **,city **,town **); /*显示统计地市信息函数*/void StatTown(prov **,city **,town **); /*显示统计乡镇信息函数*/void main(){int i,j,key,x,y,back;welcome();clrscr();menu:do{textbackground(BLACK);/* 设置屏幕背景颜色,并清除屏幕*/clrscr();window(1,1,80,1);/* 创建窗口用于显示菜单栏*//* 设置文本属性:白底蓝字*/textbackground(WHITE); /* 白色背景*/textcolor(BLUE); /* 蓝色字体*/clrscr(); /* 清屏*/window(1,1,80,1); /*设置活动菜单窗口*/clrscr(); /* 清屏*//* 显示菜单*/for(i=0,j=0;i<7;i++){/* 保存菜单第一个字母的位置,后面要用红色再打一次菜单的第一个字母*/x=wherex(); /* 当前光标X坐标*/y=wherey(); /* 当前光标Y坐标*/cprintf(" %s",menu[i]); /* 打印输出菜单*/j=strlen(menu[i]);gotoxy(x,y);textcolor(RED); /* 用红色输出菜单的第一个字母*/cprintf(" %s",red[i]);x=x+j+5;gotoxy(x,y);textcolor(BLUE); /* 将文本颜色修改为蓝色*/}x=0;key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*//*F\f 显示File下拉菜单*/if(key==33){textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/window(1,1,80,1);gotoxy(5,1);cprintf("%s",menu[0]);/*打印输出File */gettext(5,2,12,8,buf); /*备份将要被File下拉菜单窗口覆盖的区域到内存buf */window(5,2,12,8); /*创建File下拉菜单窗口*//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);window(5,2,12,8); /* 画边框*/frame(1,1,8,6);/* 打印输出下拉菜单*/for(i=2; i<6;i++){gotoxy(2,i);cprintf("%s",F[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(5,3,12,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",F[0]);/* 处理按键*/y=2;key=get_key();while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 5:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==5? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(5,y+1,12,y+1,buf1); /* 备份当前项(黄底蓝字) *//* 以下4行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",F[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /*恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();CreateProv(&head); /*创建文件*/case 2:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Save(head); /*保存文件*/break;case 3:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/clrscr();Load(&head); /*读取文件*/break;case 4:puttext(5,3,12,3,buf);/*恢复屏幕显示*/puttext(5,y+1,12,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/window(1,2,80,25); /*在整个屏幕上建一个窗口*/textbackground(BLACK);clrscr();gotoxy(30,10);/*询问是否退出程序,若y则退出,若其他则跳出这一层*/printf("Exit,sure?y/n ");if(getchar()==121)exit(-1); /*终止程序*/elsebreak;default: break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(5,2,12,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(5,1);cprintf("%s",menu[0]);}}/*E\e显示Edit下拉菜单*/if(key==18){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(14,1); /*打印输出Edit */cprintf("%s",menu[1]);gettext(14,2,23,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf *//*设置文本属性:白底黑字*/textbackground(WHITE);textcolor(BLACK);clrscr();window(14,2,23,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(14,3,23,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",E[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(14,y+1,23,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(14,y+1,23,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",E[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(14,2,23,7,buf);/*恢复屏幕显示*/puttext(14,y+1,23,y+1,buf1);EditProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(14,2,23,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(14,y+1,23,y+1,buf1);EditTown(head,head2,head3);/*显示插入乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(14,2,23,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(14,1);cprintf("%s",menu[2]);}}/*I\i显示Insert下拉菜单*/if(key==23){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(24,1);cprintf("%s",menu[2]); /*打印输出Insert */gettext(24,2,33,7,buf);/*备份将要被下拉菜单窗口覆盖的区域到内存buf */ window(24,2,33,7);/*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(24,2,33,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",I[i-2]);/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(24,3,33,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",I[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /*上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(24,y+1,33,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(24,y+1,33,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",I[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertProv(head);/*显示插入省自治区信息函数*/goto menu;case 2: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);InsertCity(head,head2);/*显示插入地市信息函数*/goto menu;case 3: puttext(24,2,33,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(24,y+1,33,y+1,buf1);goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(24,2,33,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(24,1);cprintf("%s",menu[2]);}}/*D\d显示Delete下拉菜单*/if(key==32){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(35,1);cprintf("%s",menu[3]); /*打印输出Delete */gettext(35,2,44,7,buf); /*备份将要被下拉菜单窗口覆盖的区域到内存buf */window(35,2,44,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(35,2,44,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",D[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/ gettext(35,3,44,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",D[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){/* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){/* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(35,y+1,44,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",D[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteProv(head);/*删除省自治区信息函数*/goto menu;case 2: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteCity(head,head2);/*删除地市信息函数*/goto menu;case 3: puttext(35,2,44,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(35,y+1,44,y+1,buf1);DeleteTown(head,head2,head3); /*删除乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(35,2,44,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(35,1);cprintf("%s",menu[3]);}}/*Q\q显示Query下拉菜单*/if(key==16){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE); /*设置文本属性:黑底白字*/gotoxy(46,1);cprintf("%s",menu[4]); /*打印输出Query*//*备份将要被下拉菜单窗口覆盖的区域到内存buf */gettext(46,2,55,7,buf);window(46,2,55,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(46,2,55,7);frame(1,1,10,5); /* 画边框*//* 打印输出下拉菜单*/for(i=2; i<5;i++){gotoxy(2,i);cprintf("%s",Q[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(46,3,55,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",Q[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(46,y+1,55,y+1,buf1); /* 恢复之前蓝底黄字的项到白底黑字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(46,y+1,55,y+1,buf1); /* 备份当前项(白底黑字) */textbackground(BLUE);/* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textcolor(YELLOW);gotoxy(2,y);cprintf("%s",Q[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){switch(y-1) /* 下拉菜单处理*/{case 1: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryProv(head);/*显示查询省自治区信息函数*/goto menu;case 2: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryCity(head,head2);/*显示查询地市信息函数*/goto menu;case 3: puttext(46,2,55,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(46,y+1,55,y+1,buf1);QueryTown(head,head2,head3);/*显示查询乡镇信息函数*/goto menu;default:break;}}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(46,2,55,8,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(46,1);cprintf("%s",menu[4]);}}/*S\s显示Statistic下拉菜单*/if(key==31){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(56,1);cprintf("%s",menu[5]);/*打印输出Statistic*/gettext(56,2,70,7,buf);/*备份*/window(56,2,70,7); /*创建下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(56,2,70,7); /* 画边框*/frame(1,1,15,5);for(i=2; i<5;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",S[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(56,3,70,3,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",S[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*/while(key!=28&&key!=1){ /* 上下键*//* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用蓝底黄字打印输出将要被选中的菜单项*/if(key==72||key==80){puttext(56,y+1,70,y+1,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/if(key==72)y=y==2? 4:y-1; /* 如果往上,到了最上面跳到最下面*/if(key==80)y=y==4? 2:y+1; /* 如果往下,到了最下面跳到最上面*/gettext(56,y+1,70,y+1,buf1); /* 备份当前项(白底黑字) *//* 以下3行,用蓝底黄字(表示选中)打印输出当前项*/textbackground(BLUE);textcolor(YELLOW);gotoxy(2,y);cprintf("%s",S[y-2]);}key=get_key(); /* 等待键盘输入*/}/* Enter */if(key==28){ /* 下拉菜单处理*/switch(y-1){case 1: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到白底黑字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatProv(head,head2,head3);/*执行省自治区统计函数*/goto menu;break;case 2: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatCity(head,head2,head3);/*执行地市统计函数*/goto menu;break;case 3: puttext(56,2,70,7,buf);/*恢复屏幕显示*//* 恢复之前蓝底黄字的项到黄底蓝字*/puttext(56,y+1,70,y+1,buf1);window(1,2,80,25);clrscr();StatTown(head,head2,head3);/*执行乡镇统计函数*/goto menu;break;default:break;}}/* ESC--关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(56,2,70,7,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(56,1);cprintf("%s",menu[5]);}}/*H\h显示帮助信息*/if(key==35){window(1,1,80,1);textbackground(BLACK);textcolor(WHITE);/*设置文本属性:黑底白字*/gotoxy(70,1);cprintf("%s",menu[6]);/*备份将要被operation下拉菜单窗口覆盖的区域到内存buf */gettext(70,2,79,5,buf);window(70,2,79,5);/*创建Help下拉菜单窗口*/textbackground(WHITE);textcolor(BLACK); /*设置文本属性:白底黑字*/clrscr();window(70,2,79,5);frame(1,1,10,3);/* 画边框*//* 打印输出下拉菜单*/for(i=2; i<3;i++) /* 打印输出下拉菜单*/{gotoxy(2,i);cprintf("%s",H[i-2]);}/* 备份下拉菜单的第一项到内存bufl,然后用蓝底黄字(表示选中)打印输出第一项*/gettext(70,3,79,5,buf1);textbackground(BLUE);textcolor(YELLOW);gotoxy(2,2);cprintf("%s",H[0]);/* 处理按键*/y=2;key=get_key(); /*读取键入的值*//* Enter */if(key==28){/* 下拉菜单处理*/puttext(70,2,79,5,buf);/*恢复屏幕显示*/puttext(70,3,79,3,buf1); /* 恢复之前蓝底黄字的项到黄底蓝字*/window(1,2,80,25); /*创建一个占据整个屏幕的窗口*/clrscr();if(ShowAbout()==1)goto menu;}/* ESC -关闭下拉菜单,恢复屏幕显示*/if(key==1){window(1,1,80,2);puttext(70,2,79,5,buf);textbackground(WHITE);textcolor(BLACK);gotoxy(70,1);cprintf("%s",menu[6]);}}}while(1);}/*欢迎界面函数*/void welcome(void){struct date d; /*定义日期结构体*/struct time t; /*定义时间结构体*/getdate(&d); /*读取系统日期并把它放到结构体d中*/gettime(&t); /*读取系统时间并把它放到结构体t中*/clrscr();textbackground(BLACK); /*黑屏*/clrscr(); /*清屏*/textcolor(MAGENTA);gotoxy(3,8);cprintf("#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#");gotoxy(3,9);cprintf("+ +");gotoxy(3,11);cprintf("+ +");gotoxy(3,13);cprintf("+ +");gotoxy(3,14);cprintf("#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#\n\n") ;gotoxy(3,10);cprintf("+");gotoxy(78,10);cprintf("+");gotoxy(3,12);cprintf("+");gotoxy(78,12);cprintf("+");textcolor(YELLOW);gotoxy(4,10);cprintf(" * Welcome To * ");gotoxy(4,12);cprintf(" * The Information System Of Disaster! * ");textcolor(WHITE);gotoxy(36,21);cprintf("%d\\%02d\\%02d",d.da_year,d.da_mon,d.da_day); /*显示当前系统日期*/gotoxy(37,22);cprintf("%02d:%02d:%02d\n",t.ti_hour, t.ti_min, t.ti_sec); /*显示当前系统时间*/printf("\n");getchar();}/* 得到按键值函数*/int get_key(void){union REGS regs;int86(0x16,&regs,&regs); /*通用8086软中断接口*/}/* 画边框函数*/void frame(int startx,int starty,int width,int height){int i;height=height+1;gotoxy(startx,starty=starty+1); putch(0xda); /*打印左上角*/for (i=startx+1;i<width;i++)putch(0xc4); /*打印上边线*/putch(0xbf); /*打印右上角*/for(i=starty+1;i<height;i++){gotoxy(startx,i);putch(0xb3); /*打印左边的竖线*/gotoxy(width,i);putch(0xb3); /*打印右边的竖线*/}gotoxy(startx,height);putch(0xc0); /*打印左下角*/for(i=startx+1;i<width;i++)putch(0xc4); /*打印下边线*/putch(0xd9); /*打印右下角*/return;}/*显示帮助函数*/int ShowAbout(void){int key;window(1,2,80,25);textbackground(BLACK);clrscr();textcolor(LIGHTMAGENTA);gotoxy(6,2);cprintf("About the maker:");gotoxy(6,11);cprintf("About the program:");textcolor(YELLOW);gotoxy(9,4);printf("* Name: Liu Maolin");gotoxy(9,5);printf("* School: Huazhong University of Science and Technologe");gotoxy(9,6);printf("* Profession: Computer Science and Technologe");gotoxy(9,7);printf("* Class: cs1011");gotoxy(9,13);printf("# This is my first large scale C program.");gotoxy(9,14);printf("# I know there still have some regretful spots.");gotoxy(9,15);printf("# I'm fond of C program,as well as study.");textcolor(LIGHTGREEN);gotoxy(17,19);cprintf("Please press the to go back!");textcolor(WHITE);gotoxy(34,19);cprintf("Enter");Again:while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if (key==28)return 1;else{textcolor(WHITE);printf("\n Error!Please press again!\n");goto Again; /*若输入键不为Enter则返回Again再次输入*/ }}/*创建省自治区链表函数*/void CreateProv(prov ** head1){prov *p1; /*定义遍历指针*/int key,sum=0; /*用于判断是否退出*/char c; /*用于判断是否继续创建省自治区信息*/(*head1)=(prov *)malloc(sizeof(prov)); /*遍历指针指向链表头*/p1=*head1; /*遍历指针初值同省自治区头指针*//*黑底粉字*/window(1,2,80,25);textbackground(BLACK);textcolor(LIGHTMAGENTA);clrscr();do{clrscr();printf(" *Input the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;else{float temp; /*定义一个中间变量*/printf("\tProvince number:");gets(p1->prov_id); /*读入省自治区编号*/fflush(stdin); /*清空输入流*/strcpy(prov_id,p1->prov_id); /*将省自治区编号记录进prov_id全局变量*/printf("\tProvince name:");scanf("%s",p1->prov_name); /*读入省自治区名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p1->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p1->lake_area=temp;fflush(stdin);printf("\tSum of cities:");scanf("%d",&p1->city_num); /*读入所辖地市数*/fflush(stdin);printf("\tSum of disacities:");scanf("%d",&p1->city_disa_num); /*读入受灾地市数*/fflush(stdin);printf("\tSum of drocities:");scanf("%d",&p1->city_dro_num); /*读入旱灾地市数*/fflush(stdin);printf("\tSum of flocities:");scanf("%d",&p1->city_flo_num); /*读入洪灾地市数*/fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p1->popu_disa_num); /*读入受灾人口*/fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p1->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p1->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p1->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p1->proflo_area=temp;fflush(stdin);printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/p1->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");scanf("%f",&temp); /*读入抗洪投入资金*/p1->flo_fund=temp;fflush(stdin);printf("\tSum of relief:");scanf("%f",&temp); /*读入救济金额*/p1->relief=temp;fflush(stdin);}sum++;p1->sum1=sum;CreateCity(&p1->cnext); /*调用建立地市链表函数,建立该省自治区所辖地市链表*/ printf("Next province? Y/N "); /*询问是否有下一个省自治区*/scanf("%c",&c);fflush(stdin);while((c!='Y'&&c!='y')&&(c!='N'&&c!='n')) /*若输入错误输出提示信息,重新输入*/{printf("Error!Input again:");scanf("%c",&c);}fflush(stdin);if (c=='N'||c=='n') /*若无下一个省自治区则跳出循环*/{break;}p1->next=(prov *)malloc(sizeof(prov)); /*用next指针新建省自治区链表*/p1=p1->next; /*遍历指针指向新建链表*/clrscr();gotoxy(3,1);cprintf("Next province:\n"); /*提示输入下一省自治区信息*/ }while (c=='Y'||c=='y'); /*若有下一省自治区则循环读入信息*/printf("Create provinces successfully!\tSum=%d",p1->sum1); /*提示创建成功,显示创建数目*/ fflush(stdin);getchar();p1->next=NULL; /*如无后续省自治区链表并退出循环,将next指针赋为空*/}/*创建地市链表函数*/void CreateCity(city ** head2){prov *p1;city *p2; /*定义遍历指针*/int key,sum=0;char c; /*用于判断是否继续创建地市信息*/(*head2)=(city *)malloc(sizeof(city)); /*遍历指针指向链表头*/p2=*head2; /*遍历指针初值同地市头指针*/window(1,2,80,25);clrscr();do{clrscr();printf(" *Input the cities of the province or you can exit:\n");key=0;while (bioskey(1)==0); /* 等待键盘输入*/key=get_key(); /* 取得按键*/if(key==1)break;else{float temp;strcpy(p2->prov_id,prov_id); /*所属省自治区赋值*/printf("\tCity number:");scanf("%s",p2->city_id); /*读入地市编号*/fflush(stdin); /*清空输入流*/strcpy(city_id,p2->city_id); /*将地市编号记录进city_id全局变量*/ printf("\tCity name:");scanf("%s",p2->city_name); /*读入地市名称*/fflush(stdin);printf("\tLand area:");scanf("%f",&temp); /*读入耕地面积*/p2->land_area=temp;fflush(stdin);printf("\tLake area:");scanf("%f",&temp); /*读入湖泊面积*/p2->lake_area=temp;fflush(stdin);printf("\tSum of towns:");scanf("%d",&p2->town_num); /*读入所辖乡镇数*/fflush(stdin);printf("\tSum of disatowns:");scanf("%d",&p2->town_disa_num); /*读入受灾乡镇数*/ fflush(stdin);printf("\tSum of drotowns:");scanf("%d",&p2->town_dro_num); /*读入旱灾乡镇数*/ fflush(stdin);printf("\tSum of flotowns:");scanf("%d",&p2->town_flo_num); /*读入洪灾乡镇数*/ fflush(stdin);printf("\tPopulation in the disaster:");scanf("%d",&p2->popu_disa_num); /*读入受灾人口*/fflush(stdin);printf("\tDrought area:");scanf("%f",&temp); /*读入旱灾面积*/p2->dro_area=temp;fflush(stdin);printf("\tFlood area:");scanf("%f",&temp); /*读入洪灾面积*/p2->flo_area=temp;fflush(stdin);printf("\tProdrought area:");scanf("%f",&temp); /*读入抗旱面积*/p2->prodro_area=temp;fflush(stdin);printf("\tProflood area:");scanf("%f",&temp); /*读入抗洪面积*/p2->proflo_area=temp;fflush(stdin);printf("\tFund to drought:");scanf("%f",&temp); /*读入抗旱投入资金*/p2->dro_fund=temp;fflush(stdin);printf("\tFund to flood:");。

华科C语言课程设计报告

华科C语言课程设计报告

华中科技大学计算机科学与技术学院C语言课程设计报告题目:菜市场商品销售管理系统专业:计算机科学与技术专业班级:学号:姓名:成绩:指导教师:完成日期:2016年10月7日目录一、系统需求分析 (1)1.1数据维护功能 (1)1.2数据查询功能 (1)1.3数据统计功能 (1)1.4数据存取功能 (2)1.5辅助功能 (2)二、总体设计 (2)2.1文件模块 (2)2.2数据维护模块 (3)2.3数据查询模块 (4)2.4数据统计模块 (5)2.5帮助 (6)三、数据结构设计 (6)四、详细设计与系统实现 (11)4.0主程序 (11)4.1数据维护 (11)4.1.1分类信息维护 (12)4.1.2基本信息维护 (15)4.1.3销售信息维护 (19)4.2数据查询 (22)4.2.1分类信息查询 (22)4.2.2基本信息查询: (23)4.2.3销售信息查询 (25)4.3数据统计 (28)4.3.1按类别统计: (28)4.3.2按品种统计 (31)4.3.3按客户名称统计 (36)五、运行测试与结果分析 (40)5.1输入数据 (40)5.2初始化界面 (42)5.3系统主界面 (42)5.4数据维护界面 (43)5.5数据查询界面: (52)5.6数据统计界面 (57)5.7帮助模块界面 (62)六、总结 (64)七、参考文献 (65)附录1 程序源代码 (66)头文件:market.h (66)main.c文件: (74)一、系统需求分析菜市场商品销售管理系统用于管理人员对于菜市场的各类商品销售信息进行管理,主要包括商品分类信息,商品基本信息,商品销售信息等三类信息,以帮助商场管理人员及时了解产品销售情况和变化。

菜市场商品销售管理系统要求实现以下几方面的基本功能:1.1数据维护功能菜市场商品销售管理系统的基本信息主要包括以下三类:(1)商品分类信息:分类编码、分类名称等数据项。

(2)商品基本信息:商品编号、商品名称、分类码、产地、单价、售出数量等数据项。

c语言课程设计报告及其源代码

c语言课程设计报告及其源代码

西安郵電學院C语言课程设计报告书系部名称通信工程系学生姓名王子源专业名称通信工程专业班级通工0901班学号03091001指导教师衡霞2010年06月07日至时间2010年06月18日实验题目学生宿舍管理系统一、实验目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。

利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。

二、实验内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用。

三、需求分析本学生信息管理系统包含输入记录,显示记录,按房间号排序并显示,按学号排序并显示,插入一条记录按学号排序并显示,按姓名查找,删除一条记录,查找并显示一个记录,查找并修改一个记录,从文件中读入数据,循环写入数据等功能.需求分析:输入记录(Input)显示记录(Display)按房间号排序并显示(Sort_by_roomnum)按学号排序并显示(Sort_by_num)插入一条记录按学号排序并显示(Insert_a_record)按姓名查找,删除一条记录(Delete_a_record)查找并显示一个记录(Query_a_record)查找并修改一个记录(Change_a_record)从文件中读入数据(AddfromText)循环写入数据(WritetoText)四.概要设计1.系统分析功能模块图:总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。

程序结构图2、模块功能说明(1)输入记录模块(Input):用于输入学生的各项信息(2)显示记录模块(Display):按照输入的顺序显示出每个学生的各项信息(3)按房间号排序并显示模块(Sort_by_roomnum):按照房间号顺序显示每个学生信息(4)按学号排序并显示模块(Sort_by_num):按照学号顺序显示每个学生信息(5)插入一条记录按学号排序并显示模块(Insert_a_record):插入一条记录并按学号显示出所有记录。

C语言课程设计报告1

C语言课程设计报告1

华中科技大学计算机科学与技术学院C语言课程设计报告题目: C输入/输出库函数的程序设计专业:计算机科学与技术班级:学号:姓名:成绩:指导教师:完成日期:2012年10月15日目录一、系统需求分析 (1)二、总体设计 (1)三、详细设计 (3)四、系统实现 (6)五、运行测试与结果分析 (16)六、总结 (117)七、参考文献 (118)八、指导教师评语 (119)一、系统需求分析C输入/输出库函数的程序设计(1) 给定getchar和putchar函数,实现其它C输入输出库函数。

如:gets,puts,printf,scanf等。

并且在原函数名前加my构成新函数名。

如:mygets,myputs,myprintf,myscanf等。

对myprintf函数,其功能与printf函数相同。

但只要求支持简单的%c,%d,%s,%f,%lf格式说明。

不要求域宽控制。

对myscanf函数,其功能与scanf函数相同。

但只要求支持简单的%c,%d,%s,%f,%lf格式说明。

(2) 鼓励实现参考书[1]p241 APPENDIX B:Standard Library中B1 Input and Output: <stdio.h>中的其它库函数。

(3) 创建mylibrary.lib库,将自己实现的库函数加入到该库中。

(4) 对自行设计的每个库函数,编写实验程序,调用mylibrary.lib库自行设计的库函数,要求得到正确结果。

(5) 在设计报告中提交测试结果报告以说明调用结果。

(6) 提交详细注释的各个库函数清单,并且简短说明设计思路。

二、总体设计C输入输出库函数的程序设计(1)mygets函数用getchar函数循环依次读取输入缓冲区的字符,直到读取换行符' \n ' 后结束循环。

每读取一个字符就将该字符存到mygets函数的形参所指定的地址,同时形参指针值增加1。

读取换行符'\n' 后,存入字符'\0'。

华中科技大学计算机学院C 实验报告 实验二

华中科技大学计算机学院C  实验报告 实验二

void print( ) const;
//打印栈
~STACK( );
//销毁栈
};
2. 需求分析
采用面向对象的 C++语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶 添加一个整型元素、出栈等。
二、系统设计
概要设计
介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调 用关系、确定模块间的接口及人机界面等。
STACK& push(int e); //将 e 入栈,并返回栈
STACK& pop(int &e); //出栈到 e,并返回栈
STACK& assign(const STACK&s); //赋 s 给栈,并返回被赋值的栈
void print()const;
//打印栈
~STACK();
//销毁栈
};
-6-
面向对象程序设计实验报告
int t,x,x2,e,e3,e4; cout<<"请输入栈的最大容量 m:\n"; cin>>m; STACK st1(m); STACK st2(st1); cout<<"初始化栈:最多"<<m<<"个元素完成\n 用栈 s 拷贝初始化栈完成\n";
Sleep(3000); do { system("cls"); menu(); cout<<"请输入序号:\n"; cin>>op; switch(op) { case 1: t=st1.size(); cout<<"当前栈的大小为: "<<t; getchar();getchar(); break; case 2:

c语言课程设计实验报告

c语言课程设计实验报告

c语言课程设计实验报告c语言课程设计实验报告c语言是一门通用计算机编程语言,应用广泛。

下面就随小编一起去阅读c语言课程设计实验报告,相信能带给大家帮助。

第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。

(]1.2 实验要求在报告中记录建立、保存C程序实习过程。

1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main(){printf (“Hello World! ”);}2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。

第二章数据类型2.1 实验目的(1)掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。

()(2)通过编程进一步理解和掌握运算符的确切含义和功能。

2.2 实验要求(1)在报告中记录建立、保存C程序实习过程。

(2)完成典型题目,分析遇到的困难和实验中的收获。

2.3 实验基本内容输入程序,观察输出结果 1>./*test2.1c*/1)编译如下程序: #includevoid main() {char ch; int k;ch='a',k='b';printf("%d,%x,%c",ch,ch,ch,ch,k); printf("k=%%d ",k) }2)链接。

执行Build-命令。

3)运行。

执行Build Execute 命令。

显示结果。

4)关闭程序工作区。

2>./*test2.2c*/1)编译如下程序: #includevoid main() {float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12;b2=0.000001;printf("%f,%l f ",a1+a2,b1+b2);}2)链接。

华中科技大学C语言实验报告

华中科技大学C语言实验报告

课程实验报告课程名称:C语言程序设计专业班级:CS1409学号:U201414813姓名:唐礼威指导教师:吴海报告日期:2015年6月24日计算机科学与技术学院目录1 第一次实验 (1)1.1 实验目的 (1)1.2 实验容 (1)1.3 实验小结 (10)2第二次实验 (11)2.1 实验目的 (11)2.2 实验容 (11)2.3 实验小结 (16)3第三次实验 (16)3.1 实验目的 (16)3.2 实验容 (16)3.3 实验小结 (25)4第四次实验 (25)4.1 实验目的 (25)4.2 实验容 (25)4.3 实验小结 (30)5第五次实验 (31)5.1 实验目的 (31)5.2 实验容 (31)5.3 实验小结 (37)6 第六次实验 (37)6.1 实验目的 (37)6.2 实验容 (37)6.3 实验小结 (44)7第七次实验 (44)7.1 实验目的 (44)7.2 实验容 (44)7.3 实验小结 (55)8第八次实验 (55)8.1 实验目的 (55)8.2 实验容 (55)8.3 实验小结 (63)9 实验总结 (63)1 第一次实验1.1实验目的(1)熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。

(2)掌握if,while,for循环语句的用法与含义。

(3)掌握简单C程序(顺序结构程序)的编写方法。

(4)掌握getchar, putchar, scanf 和printf 函数的用法(5)学会简单使用函数调用1.2 实验容(一)使用两个变量实现两数交换【部分程序代码:】#include <stdio.h> //预处理void main() //主函数{int a,b; //定义两变量a=a+b;b=a-b;a=a-b; //精华部分,实现交换}要点说明:要先用一个数储存两个数的值,于是将a+b的值赋给a,从中减去b即获得a的值,赋给b。

华中科技大学c语言课程设计

华中科技大学c语言课程设计

华中科技大学c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法结构,掌握变量定义、数据类型、运算符和表达式;2. 学会使用C语言进行顺序、选择和循环结构编程;3. 掌握函数定义、声明和调用的方法,理解局部变量和全局变量的作用域;4. 理解数组、字符串、指针的使用,并能运用这些知识解决实际问题。

技能目标:1. 能够编写简单的C程序,实现输入输出、数据处理和逻辑控制等功能;2. 能够阅读和分析C程序代码,理解程序结构和执行过程;3. 学会使用调试工具,如GDB,对程序进行调试和排错;4. 培养良好的编程习惯,如代码规范、注释清晰等。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学生的创造力和创新精神;2. 培养学生面对编程挑战时的耐心、细心和毅力,增强解决问题的信心;3. 培养学生团队合作意识,学会与他人分享、讨论和协作;4. 强化学生的信息安全意识,遵循法律法规,遵循道德规范,养成良好的网络素养。

课程性质:本课程为华中科技大学计算机科学与技术专业的专业基础课程,旨在使学生掌握C语言的基本知识和编程技能,为后续课程打下坚实基础。

学生特点:学生具备一定的计算机操作能力和逻辑思维能力,但对编程知识尚处于起步阶段,需要通过实践和案例教学逐步提高。

教学要求:结合课本内容,注重理论与实践相结合,以案例驱动、任务导向的方式进行教学,提高学生的编程能力和实际应用能力。

同时,关注学生的个体差异,因材施教,激发学生的学习兴趣和潜能。

通过课后作业、上机实践和项目开发等环节,评估学生的学习成果,确保课程目标的实现。

二、教学内容本课程教学内容依据课程目标,结合教材《C程序设计》进行如下安排:1. C语言概述:介绍C语言的发展历程、特点和应用领域,理解C语言在计算机编程中的地位和作用。

教学内容:第一章 C语言概述2. 基本语法和数据类型:讲解变量定义、数据类型、常量和变量、运算符和表达式。

教学内容:第二章 基本数据类型和运算符;第三章 表达式与语句3. 控制结构:学习顺序、选择(if、switch)和循环(for、while、do-while)结构。

C语言课程设计报告医院管理系统

C语言课程设计报告医院管理系统

华中科技大学计算机科学与技术学院《C语言程序设计》课程设计实验报告题目:医院专家门诊挂号系统专业:计算机科学与技术班级:计算机XXX班学号: XXXX姓名: XXX 成绩:指导教师: XXX完成日期:20XX年10月10日一、系统功能模块图二、数据结构设计及用法说明主要的三个结构(采用了十字交叉链表):科室信息的结构、专家信息的结构及挂号信息的结构。

分别如下:/*科室信息*/struct Troom{char num[11]; /*保存科室号*/char name[20]; /*保存科室名*/char man[20]; /*保存负责人*/char tel[12]; /*保存电话*/int tot_reg; /*保存科室的总挂号量*/struct Troom *next; /*保存指向下一个科室信息的指针*/struct Tpro *sub; /*保存指向专家信息的头指针*/};/*挂号信息结构体*/struct Treg{char pro_num[11]; /*保存专家编号*/char case_num[15]; /*保存病历号*/char patient_name[20]; /*保存患者姓名*/char date[11]; /*保存挂号日期*/char assistant[20]; /*保存挂号人员*/int serial_num; /*保存挂号流水号*/float fee; /*保存挂号费*/struct Treg *next; /*保存指向下一个挂号信息的指针*/};/*专家信息结构体*/struct Tpro{char room_num[11]; /*保存科室号*/char num[11]; /*保存专家编号*/char name[20]; /*保存姓名*/char birth[11]; /*保存出生日期*/char sex; /*保存性别*/char tel[12]; /*保存电话*/char profession[15]; /*保存职称*/char summary[50]; /*保存简介*/int tot_reg; /*保存专家的总挂号量*/struct Tpro *next; /*保存指向下一个专家信息的指针*/struct Treg *sub; /*保存指向挂号信息的头指针*/};用法说明图示如下:三、程序结构流程图系统总体流程图:查询流程图:四、各模块功能数据管理模块中包含录入信息、修改信息、插入信息和删除信息四大功能:1、录入信息:录入科室、专家、挂号信息;2、修改信息:对科室、专家、挂号信息进行修改;3、添加信息:添加科室或专家;4、删除信息:取消科室或解雇专家。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告题目:航班时刻表信息查询系统课程名称: C语言程序设计专业班级:学号:姓名:指导教师:报告日期:计算机科学与技术学院毕业设计[论文]任务书姓名:班号:专业:计算机科学与技术同组姓名:指导教师:一、课题名称航班时刻表查询系统二、主要内容建立航班时刻表查询系统,提供创建、编辑和查询等基本功能和服务。

三、任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交《课程设计报告》。

四、系统功能系统主要提供航班信息的快速查询、检索和统计。

应该具有①按航班、按机场等查询信息的功能;②模糊条件检索航班信息;③统计航班座次情况等。

五、系统数据系统主要涉及“航班”、“经停机场”和“经停航班” 3类信息。

六、基本要求1)、只能使用C语言,源程序要有适当的注释,使程序容易阅读;2)、要有用户界面,要求至少采用教材p215-p216类似的简易菜单,鼓励采用文本菜单界面甚至采用图形菜单界面;3)、必须使用结构和十字交叉链表等数据结构;4)、使用文件保存数据;5)、至少输出一份报表(屏幕输出即可),鼓励自行增加新功能;6)、设计测试的模拟数据,完成系统测试;7)、写实验报告(要求正规打印,A4幅面)。

前言本C语言程序课程设计报告是由wt编写的。

本课程设计主要内容包括,内容中文摘要、Abstract(英文摘要)、正文、致谢、参考文献以及附录,其中: 正文主要内容有:一、系统功能模块,主要介绍该课程设计的航班时刻表查询系统的组成功能模块有哪些;二、数据结构设计及用法说明,主要是介绍说明本航班时刻表查询系统设计时用到的一些数据信息结构的设计思路和用法;三、程序结构流程图,用流程图的方式解释本课程设计中一些功能函数的设计思路和实现方法;四、各模块的功能,主要展示了本系统最终功能的解释说明;五、试验结果,主要展示了本航班时刻表查询系统最终功能的实现效果;六、体会,讲述作者在制作过程中的一些心得体会。

本C语言程序课程设计部分参考了曹计昌,卢萍,李开等老师2008年编著的《C语言程序设计》和李开,卢萍,曹计昌等老师编著的《C语言实验与课程设计》。

在此,谨向这些提供无私支持的老师们致以诚挚地谢意!感谢他们默默无闻的奉献!附录主要有两个部分:附录1是源程序代码清单,附录2是系统测试数据。

由于作者水平有限,加之时间仓促,难免有些缺点和错误,望广大读者给予批评指正。

编者2012年10月于华中科技大学摘要本系统可在VC++ 6.0、CODE:BLOCKS和C-Free中编译运行通过。

本系统支持快捷键操作,简单的鼠标操作和键盘操作。

本系统大量使用了标注,尽量使程序明了易懂,运用较多的数据结构,用三方向的十字交叉链表储存数据信息,运用数组,指针,结构与联合及文件输入输出,控制台等知识,系统主要提供航班信息以及机场信息的快速查询、检索和统计,本程序有飞机时刻查询,对各三级链表分别进行插入,删除,修改的操作。

本系统的一些主要功能及快捷键说明如下:1、F1 显示帮助主题;2、Alt + X 退出系统;3、Alt + C 清除屏幕;4、Alt + F 弹出"文件(F)"的下拉菜单;5、Alt + E 弹出"编辑(E)"的下拉菜单;6、Alt + I 弹出"查询(I)"的下拉菜单;7、Alt + S 弹出"统计(S)"的下拉菜单;8、Alt + H 弹出"帮助(H)"的下拉菜单;9、ESC 键关闭弹出窗口,回到主菜单栏;关键词:航班时刻表查询系统,模糊查询,关键字突显,数据实时更新, 数据自动加载,文件操作,时间动态显示AbstractThe system can be in VC++ 6.0, CODE:BLOCKS and C-Free compiled to run through. The system supports shortcut key operation, simple operation of the mouse and keyboard operation. This system uses a large number of tagging, try to make the program easier to understand, use more data structure, with three direction cross storage data information, the use of the array, pointer, and joint structure and file input and output, console and other knowledge, system is mainly to provide flight information, airport information query, retrieval and statistics, the present procedures have the aircraft time query, on each of three levels of linked respectively insertion, deletion, modification of the operation.This system main function and shortcuts as follows:1、F1 displays help topics;2、Alt + X to exit the system;3、Alt + C clear screen;4、Alt + F pop " File ( F ) " drop-down menu;5、Alt + E pop " Edit ( E ) " drop-down menu;6、Alt + I pop " Query ( I ) " drop-down menu;7、Alt + S pop " Statistics ( S ) " drop-down menu;8、Alt + H pop " Help ( H ) " drop-down menu;9、ESC key to close the pop-up window, back to the main menu bar;Key words: flight schedule query system,fuzzy query,keyword salience,Data updated in real time,Automatic data loading,file operation, Time dynamic display目录前言 (I)第1章摘要 (II)1.1 航班时刻表查询系统摘要 (II)1.2 关键字 (II)第2章Abstract (III)2.1 Flight Schedule Query System Abstract (III)2.2 Keywords (III)第3章正文 (1)3.1 系统功能模块结构 (1)3.2 数据结构设计及用法 (2)3.3 程序结构(流程图) (5)3.4 各模块的功能 (22)3.5 实验结果 (23)3.6 体会 (34)致谢 (35)参考文献 (35)附录 (36)附录1 源程序清单 (36)附录2 系统测试数据 (92)一、系统功能模块结构航班时刻表信息查询系统由五大功能模块组成:文件模块,编辑模块,查询模块,统计模块,帮助模块。

如下图1所示:图3.1.1 系统功能模块结构图1、文件模块包括五个子模块:数据保存,数据加载,数据备份,备份恢复,退出;2、编辑模块包括九个子模块:航班插入,航班修改,航班删除,机场插入,机场修改,机场删除,经停航班插入,经停航班修改,经停航班删除;3、查询模块包括三个子模块:航班查询,机场查询,模糊查询;4、统计模块包括两个子模块:座位统计,价格统计;5、帮助模块包括三个子模块:帮助主题,关于系统,清屏。

二、数据结构设计及用法说明1、帐号密码信息链数据结构(IP)及用法typedef struct ip_node{char id[15]; /*帐号*/char password[15]; /*密码*/struct ip_node *next;} IP;2、航班信息链数据结构(FLIGHT_NODE)及用法typedef struct flight_node{char flight_number[10]; /*航班编号*/char aircraft_model[20]; /*客机名称*/char flight_corp_number[10]; /*所属航空公司编号*/char flight_corp_name[20]; /*所属航空公司名称*/char initial[10]; /*始发地*/char terminal[10]; /*目的地*/char begin_time[10]; /*始发时间*/char end_time[10]; /*到达终点时间*/float one_price; /*单程票价*/float round_price; /*来回票价*/char full_time[10]; /*全程时间*/int mileage; /*飞行里程*/struct flight_node *next; /*指向下一结点*/struct stop_airport_node * anext; /*指向经停机场信息链结点的指针*/ } FLIGHT_NODE;3、经停机场信息链数据结构(STOP_AIRPORT_NODE)及用法typedef struct stop_airport_node{char airport_number[10]; /*机场编号*/char airport_name[20]; /*机场名称*/char regional_number[10]; /*所属地域编号*/char flight_number[10]; /*航班编号*/char arrive_time[10]; /*到达时间*/char leave_time[10]; /*离开时间*/char cur_time[10]; /*到目前为止飞行时间*/int cur_mileage; /*到目前为止飞行里程*/struct stop_airport_node *next; /*指向下一节点*/struct stop_flight_node *fnext; /*指向经停航班信息结点的指针*/ } STOP_AIRPORT_NODE;4、经停航班信息链数据结构(STOP_FLIGHT_NODE)及用法typedef struct stop_flight_node{char flight_number[10]; /*经停航班编号*/char aircraft_model[20]; /*经停客机型号*/char airport_number[10]; /*机场编号*/char regional_number[10]; /*所属地域编号*/char flight_type[20]; /*航班类型:始发-经停-终到*/char arrive_time[10]; /*到达时间*/char leave_time[10]; /*离开时间*/float cur_one_price; /*本机场到终点单程票价*/float cur_round_price; /*本机场到终点来回票价*/int surplus_ticket; /*余票数量*/struct stop_flight_node *next;/*指向下一个结点*/} STOP_FLIGHT_NODE;5、屏幕窗口信息链数据结构(LAYER_NODE)及用法typedef struct layer_node {char LayerNo; /*弹出窗口层数*/SMALL_RECT rcArea; /*弹出窗口区域坐标*/CHAR_INFO *pContent; /*弹出窗口区域字符单元原信息存储缓冲区*/char *pScrAtt; /*弹出窗口区域字符单元原属性值存储缓冲区*/struct layer_node *next; /*指向下一结点的指针*/} LAYER_NODE;6、标签束信息结构(LABEL_BUNDLE)及用法typedef struct label_bundle {char **ppLabel; /*标签字符串数组首地址*/COORD *pLoc; /*标签定位数组首地址*/int num; /*标签个数*/} LABEL_BUNDLE;标签束信息包括标签字符串数组内容,标签位置,标签个数。

相关文档
最新文档