久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2525|回復: 0
打印 上一主題 下一主題
收起左側

C語言程序學生信息系統源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:585024 發表于 2019-7-17 10:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define N 100    //----------------------------------------函數聲明
  4. void init();
  5. char welcome();
  6. void InputInfo();
  7. void view();
  8. void xiugai();
  9. void DeleteInfo();
  10. void paiming1(struct student_info student[]); void paiming2(struct student_info student[]); void ViewAll();
  11. void PaimingView();
  12. void exit();
  13. struct student_info input();
  14. void SortInfo(struct student_info student[]); void ViewInfo(struct student_info *sp);
  15. void SaveStruct(struct student_info *sp,int size,int n,char filename[20]);
  16. void LoadStruct(struct student_info *sp,int size,int n,char filename[20]);
  17. void SaveInt(int *p,int size,int n,char filename[20]); void LoadInt(int *p,int size,int n,char filename[20]); int NumExist(struct student_info student[],int num);
  18. //---------------------------------定義學生信息結構體
  19. struct student_info
  20. {
  21. int num; //學號
  22. char name[6]; //姓名
  23. char sex[5]; //性別
  24. char adress[20]; //家庭住址
  25. char tel[10]; //電話
  26. int chinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;
  27. //語文 數學 英語 互評 品德 教評
  28. double ave,zhongping;
  29. // 平均 綜合
  30. //每個學生的信息為:學號、姓名、性別、家庭住址、聯系電話、語文、數學、外語三門單科成績、 //考試平均成績、考試名次、師兄互評分、品德成績、任課教師評分、綜合測評總分、綜合測評名次。 //考試平均成績、師兄互評分、品德成績、任課教師評分分別占綜合測評總分的60%,10%,10%,20%。 };
  31. //---------------------------------定義全局結構體數據
  32. };
  33. struct student_info student[100];
  34. int counter,PM;
  35. //----------------------------------------------主函數
  36. void main()
  37. {
  38. char select;
  39. init(); //調用初始化函數
  40. while(1)
  41. {
  42. select=welcome();
  43. switch(select)
  44. {
  45. case '1': system("cls"); InputInfo(); break; //選項1:輸入學生信息
  46. case '2': system("cls"); xiugai(); break; //選項2:修改學生信息         
  47. case '3': system("cls");DeleteInfo(); break; //選項3:刪除學生信息            
  48. case '4': system("cls");  view(); break; //選項4:瀏覽學生信息
  49. case '5': system("cls");paiming1(student);paiming2(student);PM=1;getchar();
  50. getchar(); system("cls"); break; //選項5:學生信息排名
  51. case '6': system("cls"); ViewAll();break; //選項6:瀏覽全部學生信息
  52. case '7': system("cls"); PaimingView();break; //選項7:查詢排名
  53. case '8': system("cls"); exit(); break; //選項8:退出
  54. }}}    //----------------------------------------初始化函數
  55. void init()
  56. {
  57. FILE *fp;
  58. fp=fopen("counter.dat","rb"); //打開計數變量counter文件
  59. if(fp!=NULL) //載入counter
  60. {
  61. fclose(fp);
  62. LoadInt(&counter,sizeof(counter),1,"counter.dat");
  63. }
  64. else
  65. {
  66. fp=fopen("counter.dat","wb"); //若沒有counter文件,則創建一個,counter初始為0。
  67. fclose(fp);
  68. counter=0;
  69. }
  70. if(counter!=0) //載入學生數據
  71. LoadStruct(student,sizeof(struct student_info),counter,"student_info.dat");
  72. }  //----------------------------------------歡迎函數
  73. char welcome()
  74. {
  75. char select;
  76. while(1)
  77. {
  78. system("cls");
  79. printf("\t\t歡迎使用學生信息管理系統 \n");
  80. printf("\n");
  81. printf("1.錄入學生信息 \n\n");
  82. printf("2.修改學生信息 \n\n");
  83. printf("3.刪除學生信息 \n\n");
  84. printf("4.瀏覽學生信息 \n\n");
  85. printf("5.排名學生成績 \n\n");
  86. printf("6.瀏覽所有學生信息 \n\n");
  87. printf("7.查詢排名 \n\n");
  88. printf("8.退出 \n\n");
  89. printf("輸入相應的功能序號:");
  90. select=getchar();
  91. if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'||select=='6'||select=='7'||select=='8')
  92. return select;
  93. system("cls");
  94. continue;
  95. }}
  96. //----------------------------------1.錄入學生信息-----------------------------------
  97. void InputInfo()
  98. {
  99. int i,n;
  100. printf("需要錄入多少位學生的信息:");
  101. scanf("%d",&n);
  102. system("cls");
  103. for(i=1;i<=n;i++)
  104. {
  105. student[counter]=input();
  106. counter++;
  107. }
  108. PM=0;
  109. SortInfo(student);
  110. SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
  111. SaveInt(&counter,sizeof(counter),1,"counter.dat");
  112. }
  113. //-------------------------------------2.修改學生信息----------------------------------------
  114. void xiugai()
  115. {
  116. int i,num;
  117. char YN,select;
  118. printf("請輸入需要修改的學生信息的學號:");
  119. scanf("%d",&num);
  120. getchar();
  121. if((i=NumExist(student,num))==-1)
  122. {
  123. printf("不存在該學號,按回車鍵返回...");
  124. getchar();
  125. system("cls");
  126. return;
  127. }
  128. ViewInfo(&student[i]);
  129. printf("是否要修改,(Y/N):");
  130. scanf("%c",&YN);
  131. getchar();
  132. if(YN !='Y'&& YN !='y')
  133. {
  134. printf("修改取消.");
  135. getchar();
  136. system("cls");
  137. return;
  138. }
  139. system("cls");
  140. printf("1.學號 \n");printf("2.性別 \n");printf("3.家庭住址 \n");printf("4.聯系電話 \n");printf("5.語文成績 \n");
  141. printf("6.數學成績 \n");printf("7.外語成績 \n");printf("8.師兄互評分 \n");printf("9.品德成績 \n");printf("0.任課教師教師評分 \n");
  142. scanf("%c",&select);
  143. switch(select)
  144. {
  145. case '1':printf("修改學號:");scanf("%d",&student[i].num);break;
  146. case '2':printf("修改性別:");scanf("%s",&student[i].sex);break;
  147. case '3':printf("修改家庭住址:");scanf("%s",&student[i].adress);break;
  148. case '4':printf("修改聯系電話:");scanf("%s",&student[i].tel);break;
  149. case '5':printf("修改語文成績:");scanf("%d",&student[i].chinese);break;
  150. case '6':printf("修改數學成績:");scanf("%d",&student[i].math);break;
  151. case '7':printf("修改外語成績:");scanf("%d",&student[i].english);break;
  152. case '8':printf("修改師兄互評分:");scanf("%d",&student[i].huping);break;
  153. case '9':printf("修改品德成績:");scanf("%d",&student[i].pingde);break;
  154. case '0':printf("修改任課教師評分:");scanf("%d",&student[i].jiaoping);break;
  155. }
  156. SortInfo(student);
  157. SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
  158. PM=0;
  159. getchar();
  160. printf("修改完成...");
  161. getchar();
  162. system("cls");
  163. }
  164. //-------------------------------------3.刪除學生信息----------------------------------------
  165. void DeleteInfo()
  166. {
  167. int i,j,num;
  168. char YN;
  169. printf("請輸入要刪除的學生信息學號:");
  170. scanf("%d",&num);
  171. getchar();
  172. if((i=NumExist(student,num))==-1)
  173. {
  174. printf("沒有該學號,按回車鍵返回...");
  175. getchar();
  176. system("cls");
  177. return;
  178. }
  179. ViewInfo(&student[i]);
  180. printf("\n確認刪除(Y/N):");
  181. scanf("%c",&YN);
  182. getchar();
  183. if(YN!='Y' && YN!='y')
  184. {
  185. printf("刪除取消...");
  186. }
  187. else
  188. {
  189. for(j=i;j<counter-1;j++)
  190. student[j]=student[j+1];
  191. counter--;
  192. PM=0;
  193. SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");
  194. SaveInt(&counter,sizeof(counter),counter,"counter.dat");
  195. printf("刪除完成...");
  196. }
  197. getchar();
  198. system("cls");
  199. }
  200. //-------------------------------------4.瀏覽學生信息----------------------------------------
  201. void view()
  202. {
  203. int i,num;
  204. printf("請輸入需要游覽的學生信息的學號:");
  205. scanf("%d",&num);
  206. getchar();
  207. if((i=NumExist(student,num))==-1)
  208. {
  209. printf("不存在該學號,按回車鍵返回...");
  210. getchar();
  211. system("cls");
  212. return;
  213. }
  214. ViewInfo(&student[i]);
  215. printf("\n按回車鍵返回...");
  216. getchar();
  217. system("cls");
  218. return;
  219. }
  220. //-------------------------------------5.平均分、綜合分排名------------------------------------
  221. void paiming1(struct student_info student[])
  222. {
  223. struct student_info *p[N],*temp;
  224. int i,j;
  225. for(i=0;i<counter;i++)
  226. p[i]=&student[i];
  227. for(i=0;i<counter-1;i++)
  228. for(j=i+1;j<counter;j++)
  229. {
  230. if(p[i]->ave < p[j]->ave)
  231. {
  232. temp=p[i];
  233. p[i]=p[j];
  234. p[j]=temp;
  235. }
  236. }
  237. for(i=0;i<counter;i++)
  238. p[i]->paiming1=i+1;
  239. printf("平均分排名完成...\n");
  240. }
  241. //綜合測評分排名
  242. void paiming2(struct student_info student[])
  243. {
  244. struct student_info *p[N],*temp;
  245. int i,j;
  246. for(i=0;i<counter;i++)
  247. p[i]=&student[i];
  248. for(i=0;i<counter-1;i++)
  249. for(j=i+1;j<counter;j++)
  250. {
  251. if(p[i]->zhongping < p[j]->zhongping)
  252. {
  253. temp=p[i];
  254. p[i]=p[j];
  255. p[j]=temp;
  256. }
  257. }
  258. for(i=0;i<counter;i++)
  259. p[i]->paiming2=i+1;
  260. printf("綜合測評分排名完成...\n"); }
  261. //----------------------------------6.瀏覽所有學生信息----------------------------------------
  262. void ViewAll()
  263. {
  264. int i;
  265. for(i=0;i<counter;i++)
  266. {
  267. ViewInfo(&student[i]);
  268. printf("\n");
  269. }
  270. getchar();
  271. printf("回車鍵返回...");
  272. getchar();
  273. system("cls");
  274. }
  275. //----------------------------------------7.查詢排名------------------------------
  276. void PaimingView()
  277. {
  278. int i,num;
  279. printf("輸入要查詢的學號:");
  280. scanf("%d",&num);
  281. getchar();
  282. i=NumExist(student,num);
  283. if(i==-1)
  284. {
  285. printf("該學號不存在...");
  286. getchar();
  287. return;
  288. }
  289. if(PM==0)
  290. {
  291. printf("請先進行成績排名...");
  292. getchar();
  293. return;
  294. }
  295. printf("%s的平均分排名%d\n",student[i].name,student[i].paiming1);
  296. printf("%s的綜合測評分排名%d\n",student[i].name,student[i].paiming2);
  297. printf("按回車鍵返回...");
  298. getchar();
  299. return;
  300. }
  301. //----------------------------------------8.退出----------------------------
  302. void exit()
  303. {
  304. printf("謝謝使用!\n");
  305. exit(0);
  306. }
  307. //----------------------------------------輸入信息函數----------------------------------------
  308. struct student_info input() {
  309. struct student_info stu,*sp;
  310. char YN;
  311. sp=&stu;
  312. while(1)
  313. {
  314. while(1)
  315. {
  316. printf("錄入學號:");
  317. scanf("%d",&sp->num);
  318. getchar();
  319. if(NumExist(student,sp->num)!=-1)
  320. {
  321. printf("該學號已存在,請重新輸入...");
  322. getchar();
  323. system("cls");
  324. continue;
  325. }
  326. break;
  327. }
  328. printf("錄入姓名:");
  329. gets(sp->name);
  330. printf("錄入性別:");
  331. gets(sp->sex);
  332. printf("錄入家庭住址:");
  333. gets(sp->adress);
  334. printf("錄入聯系電話:");
  335. gets(sp->tel);
  336. printf("\n接下來錄入成績\n");
  337. printf("語文:");
  338. scanf("%d",&sp->chinese);
  339. printf("數學:");
  340. scanf("%d",&sp->math);
  341. printf("英語:");
  342. scanf("%d",&sp->english);
  343. sp->ave=(sp->chinese+sp->math+sp->english)/3.0;
  344. printf("師兄互評:");
  345. scanf("%d",&sp->huping);
  346. printf("品德分數:");
  347. scanf("%d",&sp->pingde);
  348. printf("教師評價:");
  349. scanf("%d",&sp->jiaoping);
  350. getchar();
  351. sp->zhongping=(sp->ave*0.6+sp->huping*0.1+sp->pingde*0.1+sp->jiaoping*0.2);
  352. printf("錄入完畢,確認信息是否正確(Y/N)");
  353. YN=getchar();
  354. getchar();
  355. if(YN=='Y'|| YN=='y')
  356. break;
  357. else
  358. {
  359. printf("按回車鍵重新錄入信息。");
  360. getchar();
  361. system("cls");
  362. continue;
  363. }
  364. }
  365. system("cls");
  366. return stu;
  367. }
  368. //----------------------------------------排序函數
  369. void SortInfo(struct student_info student[])
  370. {
  371. int i,j;
  372. struct student_info temp;
  373. for(i=0;i<counter-1;i++)
  374. for(j=i+1;j<=counter-1;j++)
  375. {if(student[i].num<student[j].num)
  376. {temp=student[i];
  377. student[i]=student[j];
  378. student[j]=temp;}}
  379. }
  380. //----------------------------------------顯示學生信息
  381. void ViewInfo(struct student_info *sp)
  382. {
  383. printf("學號\t姓名\t性別\t家庭住址\t聯系電話\n");
  384. printf("%d\t%s\t%s\t%s\t\t%s\n",sp->num,sp->name,sp->sex,sp->adress,sp->tel);
  385. printf("語文\t數學\t英語\t互評\t品德\t教評\t平均分\t綜合分\n");
  386. printf("%d\t%d\t%d\t%d\t%d\t%d\t%.2f\t%.2f\t\n",sp->chinese,sp->math,sp->english,sp->huping,sp->pingde,sp->jiaoping,sp->ave,sp->zhongping);
  387. if(PM==1)
  388. {
  389. printf("平均分排名\t綜合測評分排名\n");
  390. printf("%d\t\t%d\n",sp->paiming1,sp->paiming2);
  391. }
  392. }
  393. //-----------------------------------信息存盤(結構體)----------------------------------------
  394. void SaveStruct(struct student_info *sp,int size,int n,char filename[20])
  395. {
  396. FILE *fp;
  397. fp=fopen(filename,"wb");
  398. fwrite(sp,size,n,fp);
  399. fclose(fp);
  400. }
  401. //-----------------------------------讀取信息(結構體)----------------------------------------
  402. void LoadStruct(struct student_info *sp,int size,int n,char filename[20])
  403. {
  404. FILE *fp;
  405. fp=fopen(filename,"rb");
  406. fread(sp,size,n,fp);
  407. fclose(fp);
  408. }
  409. //-------------------------------------信息存盤(整型)----------------------------------------
  410. void SaveInt(int *p,int size,int n,char filename[20])
  411. {
  412. FILE *fp;
  413. fp=fopen(filename,"wb");
  414. fwrite(p,size,n,fp);
  415. fclose(fp);
  416. }
  417. //-------------------------------------讀取信息(整型)----------------------------------------
  418. void LoadInt(int *p,int size,int n,char filename[20])
  419. {
  420. FILE *fp;
  421. fp=fopen(filename,"rb");
  422. fread(p,size,n,fp);
  423. fclose(fp);
  424. }
  425. //----------------------------------------檢索學號
  426. int NumExist(struct student_info student[],int num)
  427. {
  428. int i;
  429. for(i=0;i<counter;i++)
  430. {
  431. if(student[i].num==num)
  432. return i;
  433. }
  434. return -1;
  435. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91视频免费 | av黄色在线 | 福利电影在线 | 免费激情网站 | 欧美在线一区二区视频 | 国产成人网| 欧美综合一区二区三区 | 爱爱小视频 | 四虎影院新地址 | 亚洲午夜视频在线观看 | 怡红院免费的全部视频 | 国产亚洲精品久久久优势 | 中文一区二区 | 毛片片 | 91精品国产乱码久久久久久久 | 国产一区二区激情视频 | 日韩在线一区二区 | 亚洲一区在线观看视频 | 亚洲欧美视频一区 | 日韩视频高清 | 在线国产视频 | 国产一级在线 | 久久成人免费 | 毛片网在线观看 | 精品欧美一区二区在线观看欧美熟 | 国产三级精品三级在线观看四季网 | 国产精品一区二区视频 | 久久精品亚洲欧美日韩久久 | 欧美精品一区二区三区四区 在线 | 视频在线一区二区 | 久久久久国产成人精品亚洲午夜 | 成人免费看黄 | 亚洲第一网站 | 精品久久av | 欧美一级久久 | 国内精品久久精品 | 亚洲高清视频一区二区 | av毛片在线 | 国产一级一级毛片 | 久久国产激情视频 | 久久久久9999亚洲精品 |