功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,班级,各科成绩(语数外)。

系统功能:

    1.信息录入——录入学生信息;

    2.信息输出——显示所有信息;

    3.信息查询——查询单个学生信息(按学号或按姓名),按性别,班级查询;

    4.信息排序——分别按各科成绩,平均成绩,学号,姓名,总分排名;

    5.信息插入——插入一学生信息(中间插入和最后插入);

    6.信息删除——删除一学生信息;(先打出学生信息然后确认删除);

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define MAXSIZE 1000
  5. typedef struct
  6. {
  7. int no;
  8. char name[];
  9. char sex[];
  10. char cla[];
  11. int Chinese,math,Eng,sum,average;
  12. }Datatype;
  13.  
  14. typedef struct
  15. {
  16. Datatype data[MAXSIZE];
  17. int len;
  18. }SeqList;
  19.  
  20. /*录入学生信息*/
  21. void input(SeqList *L)
  22. {
  23. int i;
  24. printf("请输入学生的人数:");
  25. scanf("%d",&L->len);
  26. printf("请输入学生的学号、姓名、性别、班级、语数英成绩:\n");
  27. printf("(之间用Tab键隔开)\n\n");
  28. printf("学号 姓名 性别 班级 语文 数学 英语\n");
  29. for(i=;i<=L->len;i++)
  30. {
  31. scanf("%d%s%s%s%d%d%d",&L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,&L->data[i].Chinese,&L->data[i].math,&L->data[i].Eng);
  32. L->data[i].sum=L->data[i].Chinese+L->data[i].math+L->data[i].Eng;
  33. L->data[i].average=(int)L->data[i].sum/;
  34. }
  35. }
  36.  
  37. /*浏览学生信息*/
  38. void display(SeqList *L)
  39. {
  40. int i;
  41. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  42. for(i=;i<=L->len;i++)
  43. {
  44. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  45. }
  46. }
  47.  
  48. /*按学号查找学生信息*/
  49. int search_no(SeqList *L,Datatype x)
  50. {
  51. int i=;
  52. while(i<=L->len&&L->data[i].no!=x.no)
  53. {
  54. i++;
  55. }
  56. if(i>L->len)
  57. {
  58. return ;
  59. }
  60. else
  61. {
  62. return i;
  63. }
  64.  
  65. }
  66.  
  67. /*按姓名查找学生信息*/
  68. int search_name(SeqList *L,Datatype x)
  69. {
  70. int i=;
  71. while(i<=L->len&&strcmp(L->data[i].name,x.name)!=)
  72. {
  73. i++;
  74. }
  75. if(i>L->len)
  76. {
  77. return ;
  78. }
  79. else
  80. {
  81. return i;
  82. }
  83. }
  84.  
  85. /*按性别查找学生信息*/
  86. void search_sex(SeqList *L,Datatype x)
  87. {
  88. int i;
  89. for(i=;i<=L->len;i++)
  90. {
  91. if(i<=L->len&&strcmp(L->data[i].sex,x.sex)==)
  92. {
  93. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  94. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  95. }
  96. }
  97. }
  98.  
  99. /*按班级查找学生信息*/
  100. void search_cla(SeqList *L,Datatype x)
  101. {
  102. int i;
  103. for(i=;i<=L->len;i++)
  104. {
  105. if(i<=L->len&&strcmp(L->data[i].cla,x.cla)==)
  106. {
  107. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  108. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  109. }
  110. }
  111. }
  112.  
  113. /*按语文成绩排序*/
  114. void sort_Chinese(SeqList *L)
  115. {
  116. Datatype hold;
  117. int pass,i;
  118. for(pass=;pass<((L->len)-);pass++)
  119. {
  120. for(i=;i<L->len;i++)
  121. {
  122. if(L->data[i].Chinese<L->data[i+].Chinese)
  123. {
  124. hold=L->data[i];
  125. L->data[i]=L->data[i+];
  126. L->data[i+]=hold;
  127. }
  128. }
  129. }
  130. }
  131.  
  132. /*按数学成绩排序*/
  133. void sort_math(SeqList *L)
  134. {
  135. Datatype hold;
  136. int pass,i;
  137. for(pass=;pass<((L->len)-);pass++)
  138. {
  139. for(i=;i<L->len;i++)
  140. {
  141. if(L->data[i].math<L->data[i+].math)
  142. {
  143. hold=L->data[i];
  144. L->data[i]=L->data[i+];
  145. L->data[i+]=hold;
  146. }
  147. }
  148. }
  149. }
  150.  
  151. /*按英语成绩排序*/
  152. void sort_Eng(SeqList *L)
  153. {
  154. Datatype hold;
  155. int pass,i;
  156. for(pass=;pass<((L->len)-);pass++)
  157. {
  158. for(i=;i<L->len;i++)
  159. {
  160. if(L->data[i].Eng<L->data[i+].Eng)
  161. {
  162. hold=L->data[i];
  163. L->data[i]=L->data[i+];
  164. L->data[i+]=hold;
  165. }
  166. }
  167. }
  168. }
  169.  
  170. /*按平均分成绩排序*/
  171. void sort_average(SeqList *L)
  172. {
  173. Datatype hold;
  174. int pass,i;
  175. for(pass=;pass<((L->len)-);pass++)
  176. {
  177. for(i=;i<L->len;i++)
  178. {
  179. if(L->data[i].average<L->data[i+].average)
  180. {
  181. hold=L->data[i];
  182. L->data[i]=L->data[i+];
  183. L->data[i+]=hold;
  184. }
  185. }
  186. }
  187. }
  188.  
  189. /*按学号排序*/
  190. void sort_no(SeqList *L)
  191. {
  192. Datatype hold;
  193. int pass,i;
  194. for(pass=;pass<((L->len)-);pass++)
  195. {
  196. for(i=;i<L->len;i++)
  197. {
  198. if(L->data[i].no>L->data[i+].no)
  199. {
  200. hold=L->data[i];
  201. L->data[i]=L->data[i+];
  202. L->data[i+]=hold;
  203. }
  204. }
  205. }
  206. }
  207.  
  208. /*按姓名排序*/
  209. void sort_name(SeqList *L)
  210. {
  211. Datatype hold;
  212. int pass,i;
  213. for(pass=;pass<((L->len)-);pass++)
  214. {
  215. for(i=;i<L->len;i++)
  216. {
  217. if(strcmp(L->data[i].name,L->data[i+].name)>)
  218. {
  219. hold=L->data[i];
  220. L->data[i]=L->data[i+];
  221. L->data[i+]=hold;
  222. }
  223. }
  224. }
  225. }
  226.  
  227. /*按总分排序*/
  228. void sort_sum(SeqList *L)
  229. {
  230. Datatype hold;
  231. int pass,i;
  232. for(pass=;pass<((L->len)-);pass++)
  233. {
  234. for(i=;i<L->len;i++)
  235. {
  236. if(L->data[i].sum<L->data[i+].sum)
  237. {
  238. hold=L->data[i];
  239. L->data[i]=L->data[i+];
  240. L->data[i+]=hold;
  241. }
  242. }
  243. }
  244. }
  245.  
  246. /*插入学生信息*/
  247. void insert(SeqList *L,Datatype x)
  248. {
  249. int i=,j;
  250. while(i<=L->len&&(L->data[i].no<x.no))
  251. {
  252. i++;
  253. }
  254. if(L->len==MAXSIZE-)
  255. {
  256. printf("系统存储空间已满,无法增加学生信息!!");
  257. }
  258. else
  259. {
  260. for(j=L->len;j>=i;j--)
  261. {
  262. L->data[j+]=L->data[j];
  263. }
  264. L->data[i]=x;
  265. L->len++;
  266. }
  267. }
  268.  
  269. /*删除学生信息*/
  270. void del(SeqList *L,Datatype x)
  271. {
  272. int i,j;
  273. i=search_no(L,x);
  274. if(i==)
  275. {
  276. printf("学号有误!!\n");
  277. }
  278. else
  279. {
  280. for(j=i+;j<=(L->len);j++)
  281. {
  282. L->data[j-]=L->data[j];
  283. }
  284. L->len--;
  285. }
  286. }
  287. void menu()
  288. {
  289. printf("*************************************\n");
  290. printf("* 大学生成绩管理系统 *\n");
  291. printf("*1----------------------录入学生信息*\n");
  292. printf("*2----------------------浏览学生信息*\n");
  293. printf("*3----------------------查找学生信息*\n");
  294. printf("*4------------------------------排序*\n");
  295. printf("*5----------------------插入学生信息*\n");
  296. printf("*6----------------------删除学生信息*\n");
  297. printf("*0----------------------退出管理系统*\n");
  298. printf("*************************************\n");
  299. }
  300.  
  301. int main()
  302. {
  303. Datatype x;
  304. SeqList *L;
  305. int sel,k,s,i;
  306. L=(SeqList *)malloc(sizeof(SeqList));
  307. L->len=;
  308. printf(" 欢迎使用大学生成绩管理系统 \n");
  309. do
  310. {
  311. menu();
  312. printf("\n请输入你的选择:");
  313. scanf("%d",&sel);
  314. switch(sel)
  315. {
  316. case :printf("\n你选择了录入学生信息:\n\n");
  317. input(L);
  318. break;
  319. case :printf("\n你选择了浏览学生信息:\n\n");
  320. display(L);
  321. break;
  322. case :printf("\n你选择了查找学生信息:\n\n");
  323. printf("**************************************\n");
  324. printf("*按<学号>查找请按1,按<姓名>查找请按2*\n");
  325. printf("*按<性别>查找请按3,按<班级>查找请按4*\n");
  326. printf("**************************************\n");
  327. scanf("%d",&s);
  328. if(s==)
  329. {
  330. printf("请输入要查找的学生的学号:");
  331. scanf("%d",&x.no);
  332. k=search_no(L,x);
  333. if(k==)
  334. {
  335. printf("学号有误!!\n");
  336. }
  337. else
  338. {
  339. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  340. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
  341. }
  342. }
  343. else if(s==)
  344. {
  345. printf("请输入要查找的学生的姓名:");
  346. scanf("%s",x.name);
  347. k=search_name(L,x);
  348. if(k==)
  349. {
  350. printf("姓名有误!!\n");
  351. }
  352. else
  353. {
  354. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  355. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
  356. }
  357. }
  358. else if(s==)
  359. {
  360. printf("请输入性别(男或女):\n");
  361. scanf("%s",x.sex);
  362. search_sex(L,x);
  363. }
  364. else
  365. {
  366. printf("请输入班级:\n");
  367. scanf("%s",x.cla);
  368. search_cla(L,x);
  369. }
  370. break;
  371. case :printf("\n你选择了排序:\n\n");
  372. printf("*********************************************\n");
  373. printf("*按<语文成绩>排序请按1,按<数学成绩>排序请按2*\n");
  374. printf("*按<英语成绩>排序请按3,按<平均成绩>排序请按4*\n");
  375. printf("* 按<学号>排序请按5,按<姓名>排序请按6 *\n");
  376. printf("* 按<总分>排序请按7 *\n");
  377. printf("*********************************************\n");
  378. scanf("%d",&s);
  379. if(s==)
  380. {
  381. sort_Chinese(L);
  382. printf("按语文成绩排序:\n");
  383. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  384. for(i=;i<=L->len;i++)
  385. {
  386. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  387. }
  388. }
  389. if(s==)
  390. {
  391. sort_math(L);
  392. printf("按数学成绩排序:\n");
  393. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  394. for(i=;i<=L->len;i++)
  395. {
  396. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  397. }
  398. }
  399. if(s==)
  400. {
  401. sort_Eng(L);
  402. printf("按英语成绩排序:\n");
  403. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  404. for(i=;i<=L->len;i++)
  405. {
  406. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  407. }
  408. }
  409. if(s==)
  410. {
  411. sort_average(L);
  412. printf("按平均分排序:\n");
  413. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  414. for(i=;i<=L->len;i++)
  415. {
  416. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  417. }
  418. }
  419. if(s==)
  420. {
  421. sort_no(L);
  422. printf("按学号排序:\n");
  423. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  424. for(i=;i<=L->len;i++)
  425. {
  426. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  427. }
  428. }
  429. if(s==)
  430. {
  431. sort_name(L);
  432. printf("按姓名排序:\n");
  433. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  434. for(i=;i<=L->len;i++)
  435. {
  436. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  437. }
  438. }
  439. if(s==)
  440. {
  441. sort_sum(L);
  442. printf("按总分排序:\n");
  443. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  444. for(i=;i<=L->len;i++)
  445. {
  446. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
  447. }
  448. }
  449. break;
  450. case :printf("\n你选择了插入学生信息:\n\n");
  451. printf("请输入要插入的学生的学号、姓名、性别、班级、语数英成绩:\n");
  452. printf("学号 姓名 性别 班级 语文 数学 英语\n");
  453. scanf("%d%s%s%s%d%d%d",&x.no,x.name,x.sex,x.cla,&x.Chinese,&x.math,&x.Eng);
  454. x.sum=x.Chinese+x.math+x.Eng;
  455. x.average=(int)x.sum/;
  456. insert(L,x);
  457. break;
  458. case :printf("\n你选择了删除学生信息:\n\n");
  459. printf("请输入要删除的学生的学号:");
  460. scanf("%d",&x.no);
  461. k=search_no(L,x);
  462. if(k==)
  463. {
  464. printf("学号有误!!\n");
  465. }
  466. else
  467. {
  468. printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
  469. printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
  470. printf("\n是否要删除此学生的信息?\n");
  471. printf("(是请按1,否请按0)\n");
  472. printf("你的选择是:");
  473. scanf("%d",&s);
  474. if(s==)
  475. {
  476. del(L,x);
  477. }
  478. }
  479. break;
  480. }
  481. }while(sel!=);
  482. printf("谢谢使用此系统!!");
  483. return ;
  484. }

大学生成绩管理系统(C语言)的更多相关文章

  1. 学生成绩管理系统-JAVA语言测试

     首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...

  2. 学生成绩管理系统——C语言实现

    一.功能实现: 0.浏览学生信息 1.输入学生信息 2.增加学生信息 3.修改学生信息 4.删除学生信息 5.按学号查询 6.按班级查询 7.按姓名查询 8.按课堂名称查询 9.按总分高低排序 10. ...

  3. 【学生成绩管理系统】 大二c语言作业

    几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...

  4. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  5. C语言项目:学生成绩管理系统

    C语言项目:学生成绩管理系统    1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩    2.功能:   (1)增加学生记录    (2)  删除学生记录    (3)  查找学生信息(学号 ...

  6. C语言实现---学生成绩管理系统

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...

  7. 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念

    1 成绩管理系统概述 1.1  管理信息系统的概念  管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...

  8. C/C++编程笔记:C语言成绩管理系统!链式结构的管理系统源码分享

    最近很多同学因为学校的要求,需要完成自己的那个C语言课程设计,于是就有很多人私信或者加我私聊我,问的最多的还是<学生成绩管理系统>,其实当你项目写多了你就会发现:其实各类的管理系统都离不开 ...

  9. C语言利用结构体数组实现学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...

随机推荐

  1. uva 11324 The Largest Clique

    vjudge 上题目链接:uva 11324 scc + dp,根据大白书上的思路:" 同一个强连通分量中的点要么都选,要么不选.把强连通分量收缩点后得到SCC图,让每个SCC结点的权等于它 ...

  2. VS2013和VS2008项目的互通

    VS2013和VS2008项目的互通,大家可能都查到了百度经验里面的一个帖子: http://jingyan.baidu.com/article/f54ae2fc3c3adc1e92b849de.ht ...

  3. IE7浏览器下CSS属性选择器二三事

    一.为何专门说起IE7 以前,或者说数年前,我们从事桌面端网页开发的时候,基本上都还要兼顾IE6浏览器, 即使有些特性,IE7支持,我们也会忽略之.于是,我们会不自然地把IE6和IE7浏览器归为一路货 ...

  4. css归纳

    css文本框与按钮不对齐解决方案: 文字要包含在label标签中,并设置行高,否则文字会与文本框的顶 端对齐:文本框要设置vertical-align:middle;否则文本框与button顶端对齐: ...

  5. [Hadoop 周边] Hadoop资料收集【转】

    原文网址: http://www.iteblog.com/archives/851 最直接的学习参考网站当然是官网啦: http://hadoop.apache.org/ Hadoop http:// ...

  6. struts 标签库注解

    在struts2中有着一套像html一样的标签,俗称struts2标签,大多数公司使用ssh都是使用html标签,但为了保持项目的统一性,有的公司还是使用的struts2的标签,下面是一些常用的str ...

  7. python中字符串与列表的相互转换

    列表转字符串 list1 = ['abc' , 'def' , 'ghi'] str1 = ','.join(list1) str1 = '##'.join(list1) 字符串转列表 str1 = ...

  8. 18. 4Sum -- 找到数组中和为target的4个数

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  9. Android之ScrollView嵌套ListView

    在ScrollView中嵌套使用ListView,ListView只会显示的内容只有一行多一点 解决方案: public class Utility { public void setListView ...

  10. jquery json 操作(转)

    原文:http://www.vososo.com/?p=919 Jquery-json 是 jQuery 的一个插件,可轻松实现对象和 JSON 字符串之间的转换.可序列化 JavaScript 对象 ...