一、要求:
总的模块要求:
第一个模块——主函数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("输入要删除得编号\n");
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("删除成功\n");
42 }
43 else printf("未找到对应编号\n");
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("内存分配失败\n");
53 system("pause");
54 return;
55 }
56 r.length=0;
57 printf("创建列表成功\n");
58 system("pause");
59 }
60 void Add()
61 {
62 system("cls");
63 printf("%d\n",r.length);
64 if(r.length>=N)
65 {
66 printf("储存空间不足,请开辟空间\n");
67 return;
68 }
69 printf("请按顺序输入以下内容\n");
70 printf("编号(char num[10])、姓名(char name[10])、性别(char sex[10])、职称(char prof[10])、所在院系(char dept[10])\n");
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("添加成功\n");
77 system("pause");
78 }
79 void Find()
80 {
81 system("cls");
82 printf("输入要查找得编号\n");
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])\n");
99 printf("%s %s %s %s %s\n",str1.num,str1.name,str1.sex,str1.prof,str1.dept);
100 }
101 else printf("未找到对应编号\n");
102 system("pause");
103 }
104 void Alter()
105 {
106 system("cls");
107 printf("输入要修改得编号\n");
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])\n");
124 printf("%s %s %s %s %s\n",str1.num,str1.name,str1.sex,str1.prof,str1.dept);
125 printf("按序输入要变改的新数据\n");
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("修改成功\n");
128 }
129 else printf("未找到对应编号\n");
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])\n");
136 int i;
137 for(i=0; i<r.length; i++)
138 {
139 //printf("%d %d\n",r.length,i);
140 str1=r.elem[i];
141 printf("%s %s %s %s %s\n",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\n",str1.num,str1.name,str1.sex,str1.prof,str1.dept);
156
157 }
158 fclose(fp);
159 printf("文件保存成功,程序运行结束\n");
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 ( " \n");
184 printf ( " \n");
185 printf ( " \n");
186 printf ("-------------------------------------- \n");
187 printf ("--------------------------------------\n");
188 printf ("--------丨[0]查看所有教师 丨---\n");
189 printf ("--------丨[1]查询教师(按教师编号)丨---\n");
190 printf ("--------丨[2]添加教师信息 丨---\n");
191 printf ("--------丨[3]修改教师信息 丨---\n");
192 printf ("--------丨[4]删除教师信息 丨---\n");
193 printf ("--------丨[5]创建存储数据表 丨---\n");
194 printf ("--------丨[6]结束 丨---\n");
195 printf ("----------输入相应数字----------------\n");
196 printf ("--------------------------------------- \n");
197 printf ( " \n");
198 printf ( " \n");
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 }
