一、要求:
总的模块要求:
第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:显示提示选单。
第三个模块——Quit()的功能是:退出选单。
第四个模块——Create()的功能是:创建新的数据记录。
第五个模块——Add()的功能是:增加新的数据记录,并返回选单。
第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。
第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。
第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。
第九个模块——List()的功能是:显示所有记录。
一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。用“文件”存储数据。
6.教师职称管理系统的设计与实现
(1)教师信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10])
(2)除了总的模块要求外,还需统计各职称人数及各院系各职称人数。
二、c语言代码:
1 #include<stdio.h> 2 #include<string.h> 3 #include<windows.h> 4 #define maxn 10 5 #define N 100005 6 typedef struct 7 { 8 char num[maxn],name[maxn],sex[maxn]; 9 char prof[maxn],dept[maxn]; 10 } teacher; 11 typedef struct 12 { 13 teacher *elem; 14 int length; 15 }Sqlist; 16 teacher str1; 17 Sqlist r; 18 void Delete() //按编号删除,因为编号能保证唯一 19 { 20 system("cls"); 21 printf("输入要删除得编号 "); 22 char id[maxn]; 23 scanf("%s",id); 24 int flag=0,i,j; 25 for(i=0; i<r.length; i++) 26 { 27 str1=r.elem[i]; 28 if(strcmp(str1.num,id)==0) 29 { 30 flag=1; 31 for(j=i; j<r.length-1; ++j) 32 { 33 r.elem[j]=r.elem[j+1]; 34 } 35 r.length--; 36 break; 37 } 38 } 39 if(flag) 40 { 41 printf("删除成功 "); 42 } 43 else printf("未找到对应编号 "); 44 system("pause"); 45 } 46 void Create() 47 { 48 system("cls"); 49 r.elem=(teacher *)malloc(sizeof(teacher)*N); 50 if(!r.elem) 51 { 52 printf("内存分配失败 "); 53 system("pause"); 54 return; 55 } 56 r.length=0; 57 printf("创建列表成功 "); 58 system("pause"); 59 } 60 void Add() 61 { 62 system("cls"); 63 printf("%d ",r.length); 64 if(r.length>=N) 65 { 66 printf("储存空间不足,请开辟空间 "); 67 return; 68 } 69 printf("请按顺序输入以下内容 "); 70 printf("编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10]) "); 71 str1=r.elem[r.length]; 72 73 scanf("%s%s%s%s%s",r.elem[r.length].num,r.elem[r.length].name,r.elem[r.length].sex,r.elem[r.length].prof,r.elem[r.length].dept); 74 r.length++; 75 //printf("%s%s%s%s%s",r.elem[r.length-1].num,r.elem[r.length-1].name); 76 printf("添加成功 "); 77 system("pause"); 78 } 79 void Find() 80 { 81 system("cls"); 82 printf("输入要查找得编号 "); 83 char id[maxn]; 84 scanf("%s",id); 85 int flag=0,pos,i; 86 for(i=0; i<r.length; i++) 87 { 88 str1=r.elem[i]; 89 if(strcmp(str1.num,id)==0) 90 { 91 pos=i; 92 flag=1; 93 break; 94 } 95 } 96 if(flag) 97 { 98 printf("编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10]) "); 99 printf("%s %s %s %s %s ",str1.num,str1.name,str1.sex,str1.prof,str1.dept); 100 } 101 else printf("未找到对应编号 "); 102 system("pause"); 103 } 104 void Alter() 105 { 106 system("cls"); 107 printf("输入要修改得编号 "); 108 char id[maxn]; 109 scanf("%s",id); 110 int flag=0,pos,i; 111 for(i=0; i<r.length; i++) 112 { 113 str1=r.elem[i]; 114 if(strcmp(str1.num,id)==0) 115 { 116 pos=i; 117 flag=1; 118 break; 119 } 120 } 121 if(flag) 122 { 123 printf("编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10]) "); 124 printf("%s %s %s %s %s ",str1.num,str1.name,str1.sex,str1.prof,str1.dept); 125 printf("按序输入要变改的新数据 "); 126 scanf("%s%s%s%s%s",r.elem[pos].num,r.elem[pos].name,r.elem[pos].sex,r.elem[pos].prof,r.elem[pos].dept); 127 printf("修改成功 "); 128 } 129 else printf("未找到对应编号 "); 130 system("pause"); 131 } 132 void List() 133 { 134 system("cls"); 135 printf("编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10]) "); 136 int i; 137 for(i=0; i<r.length; i++) 138 { 139 //printf("%d %d ",r.length,i); 140 str1=r.elem[i]; 141 printf("%s %s %s %s %s ",str1.num,str1.name,str1.sex,str1.prof,str1.dept); 142 143 } 144 system("pause"); 145 } 146 void Quit() 147 { 148 system("cls"); 149 FILE *fp=NULL; 150 fp=fopen("teacher.txt","w"); 151 int i; 152 for(i=0; i<r.length; i++) 153 { 154 str1=r.elem[i]; 155 fprintf(fp,"%s %s %s %s %s ",str1.num,str1.name,str1.sex,str1.prof,str1.dept); 156 157 } 158 fclose(fp); 159 printf("文件保存成功,程序运行结束 "); 160 system("pause"); 161 } 162 void init() 163 { 164 FILE *fp=NULL; 165 fp=fopen("teacher.txt","r"); 166 char ch; 167 while(1) 168 { 169 if(feof(fp)) break; 170 //str1=r.elem[r.length]; 171 fscanf(fp,"%s%s%s%s%s",r.elem[r.length].num,r.elem[r.length].name,r.elem[r.length].sex,r.elem[r.length].prof,r.elem[r.length].dept); 172 r.length++; 173 } 174 r.length--; 175 fclose(fp); 176 } 177 void Menu() 178 { 179 int x; 180 while(1) 181 { 182 system("cls"); 183 printf ( " "); 184 printf ( " "); 185 printf ( " "); 186 printf ("-------------------------------------- "); 187 printf ("-------------------------------------- "); 188 printf ("--------丨[0]查看所有教师 丨--- "); 189 printf ("--------丨[1]查询教师(按教师编号)丨--- "); 190 printf ("--------丨[2]添加教师信息 丨--- "); 191 printf ("--------丨[3]修改教师信息 丨--- "); 192 printf ("--------丨[4]删除教师信息 丨--- "); 193 printf ("--------丨[5]创建存储数据表 丨--- "); 194 printf ("--------丨[6]结束 丨--- "); 195 printf ("----------输入相应数字---------------- "); 196 printf ("--------------------------------------- "); 197 printf ( " "); 198 printf ( " "); 199 scanf("%d",&x); 200 if(x==0) 201 { 202 List(); 203 } 204 else if(x==1) 205 { 206 Find(); 207 } 208 else if(x==2) 209 { 210 Add(); 211 //List(); 212 } 213 else if(x==3) 214 { 215 Alter(); 216 } 217 else if(x==4) 218 { 219 Delete(); 220 } 221 else if(x==5) 222 { 223 Create(); 224 init(); 225 } 226 else if(x==6) 227 { 228 Quit(); 229 return; 230 } 231 } 232 return; 233 } 234 int main() 235 { 236 Menu(); 237 return 0; 238 }