学生成绩管理程序

\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7a0b\u5e8f

c++\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u8bba\u6587--\u8bfe\u7a0b\u8bbe\u8ba1[\u65e5\u671f\uff1a2007-01-19] \u6765\u6e90\uff1a25175--\u4f60\u6211\u4e00\u8d77\u821e \u4f5c\u8005\uff1a\u672a\u77e5 \u9605\u8bfb\uff1a3593 \u6b21 [\u5b57\u4f53\uff1a\u5927 \u4e2d \u5c0f] c++\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u8bba\u6587--\u8bfe\u7a0b\u8bbe\u8ba1powered by 25175.net

1\u3001 \u5bf9C++\u8bbe\u8ba1\u7684\u300a\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u300b\u603b\u4f53\u8bf4\u660e

\u7cfb\u7edf\u4e0a\u91c7\u7528BC31\u7f16\u8bd1\u5668\u4f5c\u4e3a\u5f00\u53d1\u73af\u5883\uff0c\u8fd9\u4e2a\u73af\u5883\u662f\u6211\u4eec\u5728\u5b66\u4e60C++\u7684\u5e73\u53f0\uff0c\u8fd9\u4e2a\u7f16\u8bd1\u5668\u529f\u80fd\u5b8c\u5584\uff0c\u4f7f\u7528\u65b9\u4fbf\u3002\u6211\u4f5c\u7684\u8fd9\u6b21\u8bfe\u7a0b\u8bbe\u8ba1\u662f\u300a\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u300b\uff0c\u5b83\u7684\u4e3b\u8981\u529f\u80fd\u662f\u5bf9\u5b66\u751f\u7684\u6210\u7ee9\u8fdb\u884c\u4fee\u6539\u548c\u7ba1\u7406\uff0c\u800c\u4e14\u65b9\u4fbf\u5feb\u901f\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u867d\u7136\u7b80\u5355\uff0c\u4f46\u662f\u53ef\u4ee5\u4f5c\u4e3a\u8001\u5e08\u7684\u8f85\u52a9\u8f6f\u4ef6\uff0c\u5bf9\u5b66\u751f\u7684\u5404\u79cd\u6210\u7ee9\u8fdb\u884c\u7ba1\u7406\u3002

\u7cfb\u7edf\u529f\u80fd\u8981\u6c42\uff1a

\uff081\uff09\u754c\u9762





****************************

\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf

****************************

************************************

** F1 --\u5e2e\u52a9 **

** F2 --\u8f93\u5165\u6570\u636e\u5e76\u5b58\u5165\u6587\u4ef6 **

** F3 --\u6839\u636e\u5b66\u53f7\u67e5\u8be2\u6210\u7ee9 **

** F4 --\u6839\u636e\u59d3\u540d\u67e5\u8be2\u6210\u7ee9 **

** F5 --\u8f93\u51fa\u6587\u4ef6\u5185\u5bb9 **

** F6 --\u7edf\u8ba1\u53ca\u683c\u548c\u4f18\u79c0\u4eba\u6570 **

** ESC--\u9000\u51fa\u7cfb\u7edf **

************************************

\uff082\uff09\u529f\u80fd

\u8fd9\u4e2a\u7a0b\u5e8f\u7684\u4e3b\u8981\u529f\u80fd\u662f\u8f93\u5165\u5b66\u751f\u7684\u5b66\u53f7\u3001\u59d3\u540d\u5bf9\u5176\u8fdb\u884c\u5b58\u50a8\uff0c\u5728\u5b58\u50a8\u540e\u53ef\u4ee5\u5bf9\u5b66\u751f\u7684\u6210\u7ee9\u6309\u5b66\u53f7\u548c\u59d3\u540d\u8fdb\u884c\u67e5\u5bfb\u3002\u8be5\u7cfb\u7edf\u5177\u6709\u5b58\u8d2e\u5b66\u751f\u6570\u636e\uff0c\u6309\u5b66\u53f7\u3001\u59d3\u540d\u67e5\u8be2\uff0c\u5217\u51fa\u5b66\u751f\u6210\u7ee9\u548c\u7edf\u8ba1\u529f\u80fd\u3002\u4f7f\u7528\u65b9\u6cd5\uff1a\u7cfb\u7edf\u8f93\u5165\u6570\u636e\u540e\uff0c\u5c06\u5728\u5f53\u524d\u76ee\u5f55\u4e2d\u5efa\u7acb\u4e00\u4e2a\u540d\u4e3astu.dat\u6587\u4ef6\uff0c\u7528\u4e8e\u4fdd\u5b58\u8f93\u5165\u7684\u6570\u636e\u3002\u5b66\u53f7\u8f93\u5165\u53ea\u80fd\u7528\u6570\u5b57\u8f93\u5165\uff0c\u5e76\u4e14\u5b66\u53f7\u53ea\u80fd\u662f10\u4f4d\u3002\u59d3\u540d\u8f93\u5165\u7b26\u5408\u4e2d\u56fd\u4eba\u7684\u59d3\u540d\uff0c\u53ea\u80fd\u7528\u4e2d\u6587,\u4e14\u6700\u957f\u4e3a5\u4e2a\u6c49\u5b57\u3002\u6b64\u7a0b\u5e8f\u5728BC2.0\u4e0b\u8fd0\u884c\u901a\u8fc7\u7531\u4e8e\u662f\u7b2c\u4e00\u6b21\u7528C++\u7f16\u5199\uff0c\u6240\u4ee5\u6c34\u5e73\u6709\u9650\u6b64\u7cfb\u7edf\u8fd8\u6709\u8bb8\u591a\u4e0d\u591f\u5b8c\u6574\u548c\u4e25\u5bc6\u6027\uff0c\u656c\u8bf7\u8001\u5e08\u6307\u6b63\uff01

\uff083\uff09\u5b9e\u7528\u6027

\u300a\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u300b\u662f\u5bf9\u5b66\u751f\u7684\u6210\u7ee9\u8fdb\u884c\u4fee\u6539\u548c\u7ba1\u7406\uff0c\u800c\u4e14\u65b9\u4fbf\u5feb\u901f\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u867d\u7136\u7b80\u5355\uff0c\u4f46\u662f\u53ef\u4ee5\u4f5c\u4e3a\u8001\u5e08\u7684\u8f85\u52a9\u8f6f\u4ef6\uff0c\u5bf9\u5b66\u751f\u7684\u5404\u79cd\u6210\u7ee9\u8fdb\u884c\u7ba1\u7406\u3002

\u76ee\u7684\uff1a

\u901a\u8fc7\u8bfe\u7a0b\u8bbe\u8ba1\u57f9\u517b\u4e86\u6211\u7684\u52a8\u624b\u80fd\u529b\u4ee5\u53ca\u7efc\u5408\u8fd0\u7528\u6240\u5b66\u7684C++\u8bed\u8a00\u57fa\u7840\u7406\u8bba\uff0c\u57fa\u7840\u77e5\u8bc6\uff0c\u57fa\u672c\u6280\u80fd,\u8fdb\u884c\u7a0b\u5e8f\u5206\u6790\u548c\u7a0b\u5e8f\u5f00\u53d1\uff0c\u63d0\u9ad8\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\u89e3\u51b3\u95ee\u9898\u7684\u80fd\u529b\uff0c\u8fbe\u5230\u4e86\u80fd\u591f\u5229\u7528C++\u8bed\u8a00\u8fdb\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u89c4\u5212\uff0c\u5206\u6790\uff0c\u8bbe\u8ba1\u548c\u5b9e\u65bd\uff0c\u66f4\u80fd\u8fdb\u4e00\u6b65\u4f7f\u6211\u5bf9\u8fd9\u95e8\u8bed\u8a00\u6709\u6df1\u523b\u7684\u7406\u89e3\u548c\u66f4\u597d\u7684\u5f97\u5230\u5de9\u56fa\uff0c\u66f4\u80fd\u5bf9\u6211\u6240\u5b66\u7684\u77e5\u8bc6\u5f97\u5230\u68c0\u9a8c\u3002



2\u3001\u5bf9\u300a\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u300b\u7684\u4ecb\u7ecd

\u5177\u4f53\u7684\u529f\u80fd\uff1a

\uff081\uff09\u5e2e\u52a9

\uff082\uff09\u8f93\u5165\u6570\u636e\u5e76\u5b58\u5165\u6587\u4ef6

\uff083\uff09\u6839\u636e\u5b66\u53f7\u67e5\u8be2\u6210\u7ee9

\uff084\uff09\u6839\u636e\u59d3\u540d\u67e5\u8be2\u6210\u7ee9

\uff085\uff09\u8f93\u51fa\u6587\u4ef6\u5185\u5bb9

\uff086\uff09\u7edf\u8ba1\u53ca\u683c\u548c\u4f18\u79c0\u4eba\u6570

\uff087\uff09\u9000\u51fa

\uff081\uff09\u5e2e\u52a9

\u8fd0\u884c\u7a0b\u5e8f\uff0c\u5c4f\u5e55\u51fa\u73b0\u8be5\u7a0b\u5e8f\u754c\u9762\uff0c\u7b2c\u4e00\u9879\u5c31\u662f\u5e2e\u52a9\uff0c\u5728\u6309\u4e0b\u201cF1\u201d\u540e\u51fa\u73b0\u5e2e\u52a9\u4fe1\u606f\uff0c\u201c\u6b64\u7cfb\u7edf\u662f\u5e94\u8001\u5e08\u6240\u5e03\u7f6e\u7684\u4f5c\u4e1a\u7f16\u5236\u800c\u6210\uff0c\u8be5\u7cfb\u7edf\u5177\u6709\u5b58\u8d2e\u5b66\u751f\u6570\u636e\uff0c\u6309\u5b66\u53f7\u3001\u59d3\u540d\u67e5\u8be2\uff0c\u5217\u51fa\u5b66\u751f\u6210\u7ee9\u548c\u7edf\u8ba1\u529f\u80fd\u3002\u4f7f\u7528\u65b9\u6cd5\uff1a\u7cfb\u7edf\u8f93\u5165\u6570\u636e\u540e\uff0c\u5c06\u5728\u5f53\u524d\u76ee\u5f55\u4e2d\u5efa\u7acb\u4e00\u4e2a\u540d\u4e3astu.dat\u6587\u4ef6\uff0c\u7528\u4e8e\u4fdd\u5b58\u8f93\u5165\u7684\u6570\u636e\u3002\u5b66\u53f7\u8f93\u5165\u53ea\u80fd\u7528\u6570\u5b57\u8f93\u5165\uff0c\u5e76\u4e14\u5b66\u53f7\u53ea\u80fd\u662f10\u4f4d\u3002\u59d3\u540d\u8f93\u5165\u7b26\u5408\u4e2d\u56fd\u4eba\u7684\u59d3\u540d\uff0c\u53ea\u80fd\u7528\u4e2d\u6587,\u4e14\u6700\u957f\u4e3a5\u4e2a\u6c49\u5b57\u3002\u201d

\uff082\uff09\u8f93\u5165\u6570\u636e\u5e76\u5b58\u5165\u6587\u4ef6

\u5728\u754c\u9762\u72b6\u6001\u4e0b\uff0c\u6309\u4e0b\u201cF2\u201d\u540e\u51fa\u73b0\u201c\u8bf7\u8f93\u5165\u5b66\u53f7\uff1a\u201d\uff0c\u82e5\u8f93\u5165\u201c#\u201d\uff0c\u5219\u8fd4\u56de\u771f\u503c\u7ed3\u675f\u8f93\u5165\u3002\u5728\u5176\u540e\u9762\u53ef\u4ee5\u8f93\u5165\u5b66\u751f\u7684\u5b66\u53f7\uff0c\u957f\u5ea6\u8981\u6c4210\u4f4d\u800c\u4e14\u5fc5\u987b\u662f\u6570\u5b57\uff0c\u8fd9\u91cc\u7528\u5230\u4e86\u7ed3\u6784\u4f53\u53d8\u91cf\u548c\u51fd\u6570\uff0c\u5bf9\u8f93\u5165\u7684\u5b57\u7b26\u8fdb\u884c\u5224\u65ad\uff0c\u5982\u679c\u8f93\u5165\u5b57\u6bcd\u548c\u6c49\u5b57\u4f1a\u51fa\u73b0\u201c\u975e\u6cd5\u5b66\u53f7!\u8bf7\u91cd\u65b0\u8f93\u5165\u3002\u201d\uff0c\u5982\u679c\u5b66\u53f7\u957f\u5ea6\u4e0d\u4e3a10,\u5219\u8fd4\u56de\u91cd\u65b0\u8f93\u5165\u63d0\u793a\u201c\u5b66\u53f7\u957f\u5ea6\u4e0d\u5bf9\u3002\u201d\uff0c \u5982\u679c\u5b66\u53f7\u540e\u9762\u7684\u5b57\u7b26\u4e0d\u662f\u56de\u8f66\u7b26\uff0c\u5219\u5b66\u53f7\u957f\u5ea6\u5927\u4e8e10\u63d0\u793a\u201c\u5b66\u53f7\u957f\u5ea6\u5927\u4e8e10\u4e2a!\u8bf7\u91cd\u65b0\u8f93\u5165!\u201d \u8f93\u5165\u5b8c\u5b66\u53f7\u540e\u4f1a\u51fa\u73b0\u63d0\u793a\u201c\u8bf7\u8f93\u5165\u59d3\u540d\uff1a\u201d\uff0c\u5728\u5176\u540e\u9762\u53ef\u4ee5\u8f93\u5165\u5b66\u751f\u7684\u59d3\u540d\uff0c\u59d3\u540d\u5fc5\u987b\u662f\u6c49\u5b57\u800c\u4e14\u957f\u5ea6\u5fc5\u987b\u662f5, \u8fd9\u91cc\u4e5f\u7528\u5230\u4e86\u7ed3\u6784\u4f53\u53d8\u91cf\u548c\u51fd\u6570\uff0c\u5bf9\u8f93\u5165\u7684\u5b57\u7b26\u8fdb\u884c\u5224\u65ad\uff0c\u5982\u679c\u8f93\u5165\u4e3a\u5b57\u6bcd\u548c\u6570\u5b57\u4f1a\u63d0\u793a\u201c\u59d3\u540d\u53ea\u80fd\u7528\u4e2d\u6587\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\uff01\u201d\uff0c\u5982\u679c\u8f93\u5165\u7684\u6c49\u5b57\u957f\u5ea6\u5927\u4e8e5\u4f1a\u63d0\u793a\u201c\u59d3\u540d\u957f\u5ea6\u5927\u4e8e5\u4e2a!\u8bf7\u91cd\u65b0\u8f93\u5165!\u201d\uff0c\u8f93\u5165\u59d3\u540d\u540e\u4f1a\u51fa\u73b0\u201c\u8bf7\u8f93\u5165\u6570\u5b66\u6210\u7ee9:\u201d\u3001\u201c \u8bf7\u8f93\u5165\u82f1\u8bed\u6210\u7ee9:\u201d\u548c\u201c\u8bf7\u8f93\u5165\u603b\u8bc4\u6210\u7ee9:\u201d\u8f93\u5165\u89c4\u5219\u4e5f\u548c\u524d\u9762\u8f93\u5165\u5b66\u53f7\u3001\u59d3\u540d\u7684\u7c7b\u4f3c\uff0c\u5224\u65ad\u8f93\u5165\u7684\u662f\u5426\u4e3a\u6570\u5b57\uff0c\u5982\u679c\u4e0d\u662f\u5c31\u4f1a\u51fa\u73b0\u63d0\u793a\uff0c\u91cd\u65b0\u8f93\u5165\uff0c\u76f4\u5230\u8f93\u5165\u6b63\u786e\u4e3a\u6b62\u3002\u90fd\u8f93\u5165\u5b8c\u6210\u540e\uff0c\u6539\u7cfb\u7edf\u4f1a\u8c03\u7528\u5199\u6587\u4ef6\u51fd\u6570\u5bf9\u6307\u5b9a\u7684\u6587\u4ef6\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u628a\u8f93\u5165\u7684\u5b66\u751f\u4fe1\u606f\u5199\u5165\u5230\u6587\u4ef6\u4e2d\u3002

\uff083\uff09\u6839\u636e\u5b66\u53f7\u67e5\u8be2\u6210\u7ee9

\u5728\u754c\u9762\u72b6\u6001\u4e0b\uff0c\u5728\u6309\u4e0b\u201cF3\u201d\u540e\u4f1a\u51fa\u73b0\u201c\u8bf7\u8f93\u5165\u8981\u67e5\u8be2\u7684\u5b66\u53f7:\u201d \u8f93\u5165\u201c#\u201d\u7ed3\u675f\u67e5\u8be2\uff0c\u82e5\u6587\u4ef6\u6253\u4e0d\u5f00\u5219\u8f93\u51fa\u4e0b\u9762\u7684\u4fe1\u606f\uff0c\u201c\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\u6309\u4efb\u610f\u952e\u8fd4\u56de...\u201d\uff0c\u5982\u679c\u6587\u4ef6\u6253\u5f00\u4f1a\u6309\u7167\u7528\u6237\u7684\u8981\u6c42\u4ece\u6587\u4ef6\u5934\u5f00\u59cb\u67e5\u8be2\u6ee1\u8db3\u8981\u6c42\u7684\u5b66\u53f7\uff0c\u627e\u5230\u5373\u663e\u793a\u8be5\u5b66\u751f\u7684\u57fa\u672c\u4fe1\u606f\u548c\u6210\u7ee9\u3002\u5982\u679c\u672a\u627e\u5230\u5c31\u4f1a\u663e\u793a\u201c\u65e0\u6b64\u5b66\u53f7\u201d\u3002

\uff084\uff09\u6839\u636e\u59d3\u540d\u67e5\u8be2\u6210\u7ee9

\u5728\u754c\u9762\u72b6\u6001\u4e0b\uff0c\u5728\u6309\u4e0b\u201cF4\u201d\u540e\u4f1a\u51fa\u73b0\u201c\u8bf7\u8f93\u5165\u8981\u67e5\u8be2\u7684\u5b66\u751f\u59d3\u540d:\u201d \u8f93\u5165\u201c#\u201d\u7ed3\u675f\u67e5\u8be2\uff0c\u82e5\u6587\u4ef6\u6253\u4e0d\u5f00\u5219\u8f93\u51fa\u4e0b\u9762\u7684\u4fe1\u606f\uff0c\u201c\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\u6309\u4efb\u610f\u952e\u8fd4\u56de...\u201d\uff0c\u5982\u679c\u6587\u4ef6\u6253\u5f00\u4f1a\u6309\u7167\u7528\u6237\u7684\u8981\u6c42\u4ece\u6587\u4ef6\u5934\u5f00\u59cb\u67e5\u8be2\u6ee1\u8db3\u8981\u6c42\u7684\u59d3\u540d\uff0c\u627e\u5230\u5373\u663e\u793a\u8be5\u5b66\u751f\u7684\u57fa\u672c\u4fe1\u606f\u548c\u6210\u7ee9\u3002\u5982\u679c\u672a\u627e\u5230\u5c31\u4f1a\u663e\u793a\u201c\u65e0\u6b64\u5b66\u751f!\u201d\u3002

\uff085\uff09\u8f93\u51fa\u6587\u4ef6\u5185\u5bb9

\u8f93\u51fa\u6587\u4ef6,\u5217\u51fa\u6240\u6709\u5b66\u751f\u6210\u7ee9\u3002\u5982\u679c\u6587\u4ef6\u672a\u6253\u5f00\u4f1a\u51fa\u73b0\u201c\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\u6309\u4efb\u610f\u952e\u8fd4\u56de...\u201d\u6253\u5f00\u6210\u529f\u4f1a\u6bcf\u8f93\u51fa20\u4e2a\u5b66\u751f\u6210\u7ee9\uff0c\u505c\u4e00\u4e0b\u63d0\u793a\uff0c\u201c\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...\u201d\uff0c\u5173\u95ed\u6587\u4ef6\u3002

\uff086\uff09\u7edf\u8ba1\u53ca\u683c\u548c\u4f18\u79c0\u4eba\u6570

\u8fd9\u91cc\u7528\u5230\u7ed3\u6784\u4f53\u51fd\u6570\u548c\u53d8\u91cf\uff0c\u5224\u65ad\u6210\u7ee9\u5927\u4e8e\u7b49\u4e8e60\u5206\u7684\u4e3a\u53ca\u683c\uff0c\u5e76\u7edf\u8ba1\u4eba\u6570\uff0c\u5224\u65ad\u6210\u7ee9\u5927\u4e8e\u7b49\u4e8e80\u5206\u7684\u4e3a\u4f18\u79c0\uff0c\u5e76\u7edf\u8ba1\u4eba\u6570\uff0c\u6700\u540e\u7edf\u8ba1\u51fa\u6765\uff0c\u663e\u793a\u5728\u5c4f\u5e55\u4e0a\u3002

\uff087\uff09\u9000\u51fa

\u5728\u754c\u9762\u72b6\u6001\u4e0b\uff0c\u6309\u4e0b\u201cESC\u201d\u4f1a\u9000\u51fa\u8be5\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u3002\u8fd4\u56de\u6e90\u7a0b\u5e8f\u3002

\u7a0b\u5e8f\u6e05\u5355

/*-------------1-------------*/

#include

#include /*\u5934\u6587\u4ef6*/

#include

#include

#include

#include

#include

#include



#define NULL 0

#define ESC 0x001b /* \u9000\u51fa */

#define F1 0x3b00 /* \u67e5\u770b\u5e2e\u52a9\u4fe1\u606f\uff0c\u8c03\u7528HelpMassage()\u51fd\u6570 */

#define F2 0x3c00 /*\u8f93\u5165\u5b66\u751f\u6210\u7ee9*/

#define F3 0x3d00 /*\u6309\u5b66\u53f7\u67e5\u627e*/

#define F4 0x3e00 /*\u6309\u59d3\u540d\u67e5\u627e*/

#define F5 0x3f00 /*\u5217\u51fa\u6240\u6709\u5b66\u751f\u6210\u7ee9*/

#define F6 0x4000 /*\u7edf\u8ba1*/



struct stuType /*\u5b9a\u4e49\u7ed3\u6784\u4f53\u53d8\u91cf*/

{

char NO[11]; /*\u5b66\u53f7\u957f\u5ea6\u4e3a10*/

char XM[10];

float CJ[4]; /*\u5305\u542b4\u95e8\u6210\u7ee9*/

};



/*-------------2-------------*/

int JY_NO(char *stu_num,FILE *fp) /*\u68c0\u9a8c\u5b66\u53f7\u7684\u6b63\u786e\u6027*/

{ struct stuType stud;

int NO;

char *p=stu_num;

if(strcmp(stu_num,"#")==0) return 1; /*\u82e5\u8f93\u5165"#"\u8fd4\u56de\u771f\u503c,\u4e0d\u518d\u5faa\u73af\u8f93\u5165*/

while(*p!='\0') /*\u5b66\u53f7\u5fc5\u987b\u662f\u6570\u5b57\uff0c\u5426\u5219\u8fd4\u56de\u91cd\u65b0\u8f93\u5165*/

{ NO=(int)*p;

if(NO57)

{ puts("\t\t\t\u975e\u6cd5\u5b66\u53f7!\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

return 0;

}

else p++; /*\u6307\u9488\u52a01*/

}

if(strlen(stu_num)!=10) /*\u82e5\u5b66\u53f7\u957f\u5ea6\u4e0d\u4e3a10,\u5219\u8fd4\u56de\u91cd\u65b0\u8f93\u5165*/

{ puts("\t\t\t\u5b66\u53f7\u957f\u5ea6\u4e0d\u5bf9!\n");

return 0;

}

if(getchar()!='\n') /*\u82e5\u5b66\u53f7\u540e\u9762\u7684\u5b57\u7b26\u4e0d\u662f\u56de\u8f66\u7b26\uff0c\u5219\u5b66\u53f7\u957f\u5ea6\u5927\u4e8e10*/

{ printf("\t\t\t\u5b66\u53f7\u957f\u5ea6\u5927\u4e8e10\u4e2a!\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

do{}while(getchar()!='\n'); /*\u7528getchar\u63a5\u6536\u591a\u4f59\u7684\u5b57\u7b26*/

return 0;

}



else

{

rewind(fp); /*\u4f7f\u6587\u4ef6\u6307\u9488\u6307\u5411\u5934*/

while(!feof(fp)) /*\u82e5\u6587\u4ef6\u6307\u9488\u672a\u5230\u7ed3\u5c3e,\u5c31\u7ee7\u7eed\u6267\u884c\u4e0b\u9762\u7684\u5faa\u73af,feof\u9047\u5230\u6587\u4ef6\u7ed3\u675f\u7b26\u8fd4\u56de\u975e\u96f6\u503c,\u5426\u5219\u8fd4\u56de0*/

{ fread(&stud,sizeof(struct stuType),1,fp); /*\u8bfb\u53d6\u4e00\u5b9a\u957f\u5ea6\u7684\u6570\u636e*/

if(strcmp(stu_num,stud.NO)==0) /*\u5b66\u53f7\u7684\u552f\u4e00\u6027*/

{ printf("\t\t\t\u5b66\u53f7\u91cd\u590d\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

printf("\t\t\t\u8be5\u5b66\u751f\u6210\u7ee9\u5982\u4e0b\uff1a\n");

printf("\t\t\t\u8bed\u6587\uff1a%.1f\n",stud.CJ[0]);

printf("\t\t\t\u6570\u5b66\uff1a%.1f\n",stud.CJ[1]);

printf("\t\t\t\u82f1\u8bed\uff1a%.1f\n",stud.CJ[2]);

printf("\t\t\t\u603b\u8bc4\uff1a%.1f\n",stud.CJ[3]);

return 0;

}

}

}

return 1;



}



/*-------------3-------------*/

int JY_NO2(char *stu_num) /*\u68c0\u9a8c\u5b66\u53f7*/

{ int NO;

char *p=stu_num;

if(strcmp(stu_num,"#")==0)return 1; /*\u82e5\u8f93\u5165\u201c#\u201d\uff0c\u5219\u8fd4\u56de\u771f\u503c\u7ed3\u675f*/

if(strlen(stu_num)!=10) /*\u5b66\u53f7\u957f\u5ea6\u4e3a10*/

{ puts("\t\t\t\u5b66\u53f7\u957f\u5ea6\u4e0d\u5bf9!\n");

return 0;

}

while(*p!='\0') /*\u5b66\u53f7\u5fc5\u987b\u7528\u6570\u5b57,\u82e5\u5305\u542b\u6709\u5b57\u6bcd\uff0c\u6216\u5176\u5b83\u5b57\u7b26\u5219\u8fd4\u56de\u5047\u503c\u91cd\u65b0\u8f93\u5165*/

{ NO=(int)*p;

if(NO57)

{ puts("\t\t\t\u975e\u6cd5\u5b66\u53f7!\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

return 0;

}

else p++; /*\u6307\u9488\u52a01*/

}

if(getchar()!='\n') /*\u68c0\u9a8c\u5b66\u53f7\u957f\u5ea6\u662f\u5426\u5927\u4e8e10\uff0c\u5e76\u628a\u591a\u4f59\u7684\u5b57\u7b26\u53bb\u6389*/

{ printf("\t\t\t\u5b66\u53f7\u957f\u5ea6\u5927\u4e8e10\u4e2a!\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

do{}while(getchar()!='\n');

return 0;

}

return 1;

}



/*-------------4-------------*/

int JY_XM(char *stu_XM) /*\u68c0\u9a8c\u59d3\u540d*/

{ int PD;

char *p;

p=stu_XM;

while(*p!='\0') /*\u59d3\u540d\u53ea\u80fd\u7528\u4e2d\u6587*/

{

PD=(int)*p;

if(PD>0)

{ puts("\t\t\t\u59d3\u540d\u53ea\u80fd\u7528\u4e2d\u6587\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\uff01\n");

return 0;

}

else p++; /*\u4f7f\u6307\u9488\u52a01\uff0c\u6307\u5411\u4e0b\u4e00\u6c49\u5b57*/

}

if(getchar()!='\n') /*\u59d3\u540d\u957f\u5ea6\u4e0d\u5f97\u5927\u4e8e5\u4e2a*/

{ printf("\t\t\t\u59d3\u540d\u957f\u5ea6\u5927\u4e8e5\u4e2a!\u8bf7\u91cd\u65b0\u8f93\u5165!\n");

do{}while(getchar()!='\n');

return 0;

}

return 1; /*\u5b57\u7b26\u4e32\u5168\u4e3a\u6c49\u5b57\u8fd4\u56de\u771f*/



}



/*-------------5-------------*/

int JY_CJ(float stu_CJ) /*\u5b66\u751f\u6210\u7ee9\u53ea\u80fd\u57280~100\u4e4b\u95f4*/

{

if(stu_CJ100)

{ printf("\t\t\t\u8f93\u5165\u9519\u8bef\uff0c\u6210\u7ee9\u53ea\u80fd\u57280~100\u4e4b\u95f4!\n");

return 0;

}

return 1;

}



/*-------------6-------------*/

void CreatFile() /*\u8f93\u5165\u6587\u4ef6*/

{ FILE *fp;

struct stuType stu,stu0={"","",}; /*\u5bf9stu0\u5148\u8d4b\u503c*/

fp=fopen("stu.dat","wb+"); /*\u6253\u5f00\u6216\u521b\u5efa\u4e00\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6,\u6253\u5f00\u65f6\u5c06\u539f\u6765\u7684\u5185\u5bb9\u5220\u9664*/

if(fp==NULL)

{ printf("\t\t\t\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\n\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return;

}

else

{ while(1)

{ stu=stu0;

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u5b66\u53f7:"); /*\u8f93\u5165\u5b66\u53f7\u5e76\u68c0\u9a8c\u5176\u6b63\u786e\u6027*/

scanf("%10s",stu.NO);

}while(!JY_NO(stu.NO,fp));

if(strcmp(stu.NO,"#")==0)break;

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u59d3\u540d:"); /*\u8f93\u5165\u59d3\u540d\u5e76\u68c0\u9a8c\u5176\u6b63\u786e\u6027*/

scanf("%10s",stu.XM);

}while(!JY_XM(stu.XM));

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u8bed\u6587\u6210\u7ee9:"); /*\u8f93\u5165\u6210\u7ee9\u5e76\u68c0\u9a8c\u5176\u6b63\u786e\u6027*/

scanf("%f",&stu.CJ[0]);

}while(!JY_CJ(stu.CJ[0]));

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u6570\u5b66\u6210\u7ee9:"); /*\u540c\u4e0a*/

scanf("%f",&stu.CJ[1]);

}while(!JY_CJ(stu.CJ[1]));

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u82f1\u8bed\u6210\u7ee9:");

scanf("%f",&stu.CJ[2]);

}while(!JY_CJ(stu.CJ[2]));

do{ printf("\n\t\t\t\u8bf7\u8f93\u5165\u603b\u8bc4\u6210\u7ee9:");

scanf("%f",&stu.CJ[3]);

}while(!JY_CJ(stu.CJ[3]));

fwrite(&stu,sizeof(struct stuType),1,fp); /*\u5199\u6587\u4ef6*/

}



}

fclose(fp); /*\u5173\u95ed\u6587\u4ef6*/



}



/*-------------7-------------*/

void Search_Xuehao() /*\u6309\u5b66\u53f7\u67e5\u8be2*/

{ FILE *fp;

int flag;

struct stuType stu,stud;

fp=fopen("stu.dat","rb");

if(fp==NULL) /*\u82e5\u6587\u4ef6\u6253\u4e0d\u5f00\u5219\u8f93\u51fa\u4e0b\u9762\u7684\u4fe1\u606f*/

{ printf("\t\t\t\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\n\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return;

}

else

{ do{ puts("\n\t\t\t\u8f93\u5165\u201c#\u201d\u7ed3\u675f\u67e5\u8be2");

do{ printf("\t\t\t\u8bf7\u8f93\u5165\u8981\u67e5\u8be2\u7684\u5b66\u53f7:");

scanf("%10s",stu.NO);

}while(!JY_NO2(stu.NO));

if(strcmp(stu.NO,"#")==0)break; /*\u82e5\u8f93\u5165\u201c#\u201d\u5219\u7ed3\u675f\u5faa\u73af*/

flag=0;

rewind(fp);

while(fread(&stud,sizeof(struct stuType),1,fp)) /*\u68c0\u67e5\u6587\u4ef6\u6307\u9488\u7ed3\u675f*/

{ if(strcmp(stu.NO,stud.NO)==0) /*\u6bd4\u8f83\u5b66\u53f7*/

{ puts("\t\t\t\u8be5\u5b66\u751f\u6210\u7ee9\u5982\u4e0b\uff1a");

printf("\t\t\t\u5b66\u53f7:%s\n",stud.NO);

printf("\t\t\t\u59d3\u540d:%s\n",stud.XM);

printf("\t\t\t\u8bed\u6587:%.1f\n",stud.CJ[0]);

printf("\t\t\t\u6570\u5b66:%.1f\n",stud.CJ[1]);

printf("\t\t\t\u82f1\u8bed:%.1f\n",stud.CJ[2]);

printf("\t\t\t\u603b\u8bc4:%.1f\n",stud.CJ[3]);

flag=1; /*\u8bb0\u5f55\u5b66\u53f7\u662f\u5426\u67e5\u5230*/

}

}

if(flag==0)puts("\t\t\t\u65e0\u6b64\u5b66\u53f7!");

}while(strcmp(stu.NO,"#")!=0);





}

fclose(fp); /*\u5173\u95ed\u6587\u4ef6*/



}



/*-------------8-------------*/

void Search_Xingming() /*\u6309\u59d3\u540d\u67e5\u627e*/

{ FILE *fp;

int flag=0;

struct stuType stu,stud;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{ printf("\t\t\t\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\n\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return;

}

else

{ do{

do{ printf("\t\t\t\u8bf7\u8f93\u5165\u8981\u67e5\u8be2\u7684\u5b66\u751f\u59d3\u540d:");

scanf("%10s",stu.XM);

}while(!JY_XM(stu.XM));

rewind(fp); /*\u6587\u4ef6\u6307\u9488\u6307\u5411\u5934*/

while(fread(&stud,sizeof(struct stuType),1,fp))

{ if(strcmp(stu.XM,stud.XM)==0) /*\u6bd4\u8f83\u59d3\u540d\u662f\u5426\u76f8\u540c*/

{ puts("\t\t\t\u8be5\u5b66\u751f\u59d3\u540d\u5982\u4e0b:");

printf("\t\t\t\u5b66\u53f7\uff1a%s\n",stud.NO);

printf("\t\t\t\u59d3\u540d\uff1a%s\n",stud.XM);

printf("\t\t\t\u8bed\u6587\uff1a%.1f\n",stud.CJ[0]);

printf("\t\t\t\u6570\u5b66\uff1a%.1f\n",stud.CJ[1]);

printf("\t\t\t\u82f1\u8bed\uff1a%.1f\n",stud.CJ[2]);

printf("\t\t\t\u603b\u8bc4\uff1a%.1f\n",stud.CJ[3]);

flag=1; /*\u8bb0\u5f55\u59d3\u540d\u662f\u5426\u88ab\u67e5\u5230*/

}

}

if(flag==0)puts("\n\t\t\t\u65e0\u6b64\u5b66\u751f!");

puts("\t\t\t\u662f\u5426\u7ee7\u7eed(y--\u7ee7\u7eed\uff0c\u5176\u4ed6\u8fd4\u56de)?");

}while(getch()=='y');

}

fclose(fp);

/* puts("\t\t\t\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...");*/

/* getch();*/





}



/*-------------9-------------*/

int ListFile(void) /*\u8f93\u51fa\u6587\u4ef6,\u5217\u51fa\u6240\u6709\u5b66\u751f\u6210\u7ee9*/

{ FILE *fp;

int REC=0; /*\u8bb0\u5f55\u5b66\u751f\u4eba\u6570*/

struct stuType stu;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{ printf("\t\t\t\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\n\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return 1;

}

else{ printf("\t\t\t\u5b66\u751f\u6210\u7ee9\u5982\u4e0b\uff1a\n");

printf("\t\t\t\u5b66\u53f7\t\t\u59d3\u540d\t\u8bed\u6587\t\u6570\u5b66\t\u82f1\u8bed\t\u603b\u8bc4\n");

rewind(fp);

while(fread(&stu,sizeof(struct stuType),1,fp))

{ /*\u6bcf\u8bfb\u53d6\u4e00\u4e2a\u957f\u5ea6\u7684\u6570\u636e\u5c31\u8f93\u51fa*/

printf("\t\t\t%s",stu.NO);

printf("\t%s",stu.XM);

printf("\t%.1f",stu.CJ[0]);

printf("\t%.1f",stu.CJ[1]);

printf("\t%.1f",stu.CJ[2]);

printf("\t%.1f",stu.CJ[3]);

printf("\n");

REC++;

if(REC%20==0) /*\u6bcf\u8f93\u51fa20\u4e2a\u5b66\u751f\u6210\u7ee9\uff0c\u505c\u4e00\u4e0b*/

{ printf("\t\t\t\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...\n");

getch();

}

}

}

fclose(fp); /*\u5173\u95ed\u6587\u4ef6*/

printf("\t\t\t\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...");

getch();



}



/*-------------10-------------*/

void Statistics() /*\u7edf\u8ba1\u53ca\u683c\u548c\u4f18\u79c0\u4eba\u6570*/

{ FILE *fp;

int REC=0,pass[4]={0},good[4]={0}; /*REC--\u8bb0\u5f55\u4e2a\u6570,\u5373\u4eba\u6570,pass--\u53ca\u683c\u4eba\u6570,good--\u4f18\u79c0\u4eba\u6570*/

float highest[4]={0},score[4]={0}; /*highest--\u6700\u9ad8\u5206,score--\u603b\u5206*/

struct stuType stu;

fp=fopen("stu.dat","rb");

if(fp==NULL)

{ printf("\t\t\t\u6587\u4ef6\u6253\u5f00\u5931\u8d25!\n\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return;

}

else { rewind(fp);

while(fread(&stu,sizeof(struct stuType),1,fp))

{ REC++;

score[0]=score[0]+stu.CJ[0]; /*\u8bed\u6587*/

if(stu.CJ[0]>=60)pass[0]++;

if(stu.CJ[0]>=80)good[0]++;

if(highest[0]<stu.CJ[0])highest[0]=stu.CJ[0];

score[1]=score[1]+stu.CJ[1]; /*\u6570\u5b66*/

if(stu.CJ[1]>=60)pass[1]++;

if(stu.CJ[1]>=80)good[1]++;

if(highest[1]<stu.CJ[1])highest[1]=stu.CJ[1];

score[2]=score[2]+stu.CJ[2]; /*\u82f1\u8bed*/

if(stu.CJ[2]>=60)pass[2]++;

if(stu.CJ[2]>=80)good[2]++;

if(highest[2]<stu.CJ[2])highest[2]=stu.CJ[2];

score[3]=score[3]+stu.CJ[3]; /*\u603b\u8bc4*/

if(stu.CJ[3]>=60)pass[3]++;

if(stu.CJ[3]>=80)good[3]++;

if(highest[3]<stu.CJ[3])highest[3]=stu.CJ[3];

}

if(REC==0) /*\u53ef\u4ee5\u9632\u6b62\u8bb0\u5f55\u4e3a0\u662fREC\u4f5c\u9664\u6570\u800c\u9020\u6210\u7684\u9519\u8bef*/

{ printf("\t\t\t\u672a\u8f93\u5165\u5b66\u751f\u8bb0\u5f55\uff01\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();

return;

}

else{

printf("\t\t\t\t \u8bed\u6587\t \u6570\u5b66\t \u82f1\u8bed\t \u603b\u8bc4\n"); /*\u8f93\u51fa\u7edf\u8ba1\u4fe1\u606f*/

printf("\t\t\t\u5e73\u5747\u5206: %.1f\t %.1f\t %.1f\t %.1f\n",score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);

printf("\t\t\t\u6700\u9ad8\u5206\uff1a %.1f\t %.1f\t %.1f\t %.1f\n",highest[0],highest[1],highest[2],highest[3]);

printf("\t\t\t\u4f18\u79c0\u4eba\u6570\uff1a%d\t %d\t %d\t %d\n",good[0],good[1],good[2],good[3]);

printf("\t\t\t\u53ca\u683c\u4eba\u6570\uff1a%d\t %d\t %d\t %d\n",pass[0],pass[1],pass[2],pass[3]);

}

}

fclose(fp);

printf("\n\t\t\t\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...");

getch();



}



/*-------------11-------------*/

void HelpMessage()

{ clrscr();

printf("\n\n\n\n\n \u6b64\u7cfb\u7edf\u662f\u5e94\u8001\u5e08\u6240\u5e03\u7f6e\u7684\u4f5c\u4e1a\u7f16\u5236\u800c\u6210\uff0c\u8be5\u7cfb\u7edf\u5177\u6709\u5b58\u8d2e\u5b66\u751f\u6570\u636e\uff0c\u6309\u5b66\u53f7\u3001\u59d3\u540d\u67e5\u8be2\uff0c\u5217\u51fa\u5b66\u751f\u6210\u7ee9\u548c\u7edf\u8ba1\u529f\u80fd\u3002\n \n \u4f7f\u7528\u65b9\u6cd5\uff1a\u7cfb\u7edf\u8f93\u5165\u6570\u636e\u540e\uff0c\u5c06\u5728\u5f53\u524d\u76ee\u5f55\u4e2d\u5efa\u7acb\u4e00\u4e2a\u540d\u4e3astu.dat\u6587\u4ef6\uff0c\u7528\u4e8e\u4fdd\u5b58\u8f93\u5165\u7684\u6570\u636e\u3002\u5b66\u53f7\u8f93\u5165\u53ea\u80fd\u7528\u6570\u5b57\u8f93\u5165\uff0c\u5e76\u4e14\u5b66\u53f7\u53ea\u80fd\u662f10\u4f4d\u3002\u59d3\u540d\u8f93\u5165\u7b26\u5408\u4e2d\u56fd\u4eba\u7684\u59d3\u540d\uff0c\u53ea\u80fd\u7528\u4e2d\u6587,\u4e14\u6700\u957f\u4e3a5\u4e2a\u6c49\u5b57\u3002\n \u6b64\u7a0b\u5e8f\u5728Turbo C2.0\u4e0b\u8fd0\u884c\u901a\u8fc7\n\n \u7531\u4e8e\u662f\u521d\u5b66\u8005\uff0c\u6c34\u5e73\u6709\u9650\u6b64\u7cfb\u7edf\u8fd8\u6709\u8bb8\u591a\u4e0d\u591f\u5b8c\u6574\u548c\u4e25\u5bc6\u6027\uff0c\u656c\u8bf7\u6307\u6b63\uff01");

getch();

}



/*-------------12-------------*/

int GetKey(void) /*\u6b64\u51fd\u6570\u8fd4\u56de\u4e00\u4e2a\u6309\u952e\u7684\u6570\u503c*/

{ int key;

key=bioskey(0); /*bioskey\u4e3a\u8c03\u7528BIOS\u952e\u76d8\u63a5\u53e3*/

if(key<<8) /*\u4f4d\u79fb*/

{

key=key&0x00ff;



}

return key; /*\u8fd4\u56de\u6309\u952e*/

}



/*-------------13-------------*/

void main()

{ int key;

struct date d; /*\u5b9a\u4e49\u65f6\u95f4\u7ed3\u6784\u4f53*/

getdate(&d); /*\u8bfb\u53d6\u7cfb\u7edf\u65e5\u671f\u5e76\u628a\u5b83\u653e\u5230\u7ed3\u6784\u4f53d\u4e2d*/

clrscr(); /*\u6e05\u9664\u5c4f\u5e55*/

printf("\n\n\n\n\n");

printf("\t\t\t****************************\n"); /*\u7248\u672c\u4fe1\u606f*/

printf("\t\t\t \u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf1.0 \n");

printf("\t\t\t****************************\n");

printf("\t\t\t \u5236\u4f5c\u4eba\uff1a\u5f20\u6625\u8983 \n");

printf("\t\t\t \u6307\u5bfc\u8001\u5e08\uff1a\u6768\u5b87\u6676 \u4e8e\u5b8f\u4f1f \n");

printf("\t\t\t \u5236\u4f5c\u65f6\u95f4\uff1a2005\u5e749\u6708 \n");

printf("\t\t\t****************************\n");

printf("\t\t\t\u8bf7\u6309\u4efb\u610f\u952e\u7ee7\u7eed...");

/*while(!kbhit());*/

getch(); /*\u4ece\u952e\u76d8\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26,\u4f46\u4e0d\u663e\u793a\u4e8e\u5c4f\u5e55*/

system("cls"); /*\u8c03\u7528DOS\u7684\u6e05\u5c4f\u51fd\u6570,TC\u4e2d\u53ef\u7528clrscr\u4ee3\u66ff*/

while(1) /*\u4e3b\u83dc\u5355*/

{

printf("\n\n\n\n\n");

printf("\t\t\t************************************\n");

printf("\t\t\t**\tF1 --\u5e2e\u52a9 **\n");

printf("\t\t\t**\tF2 --\u8f93\u5165\u6570\u636e\u5e76\u5b58\u5165\u6587\u4ef6 **\n");

printf("\t\t\t**\tF3 --\u6839\u636e\u5b66\u53f7\u67e5\u8be2\u6210\u7ee9 **\n");

printf("\t\t\t**\tF4 --\u6839\u636e\u59d3\u540d\u67e5\u8be2\u6210\u7ee9 **\n");

printf("\t\t\t**\tF5 --\u8f93\u51fa\u6587\u4ef6\u5185\u5bb9 **\n");

printf("\t\t\t**\tF6 --\u7edf\u8ba1\u53ca\u683c\u548c\u4f18\u79c0\u4eba\u6570 **\n");

printf("\t\t\t**\tESC--\u9000\u51fa\u7cfb\u7edf **\n");

printf("\t\t\t************************************\n");

printf("\n\t\t\t\u8bf7\u8f93\u5165\u9009\u9879\t\t%d\u5e74%d\u6708%d\u65e5\n\n",d.da_year,d.da_mon,d.da_day); /*\u63d0\u793a\u4fe1\u606f,\u5e76\u663e\u793a\u5f53\u524d\u7cfb\u7edf\u65e5\u671f*/

key=GetKey(); /*\u8c03\u7528\u81ea\u5b9a\u4e49\u51fd\u6570,\u8bfb\u53d6\u4e00\u4e2a\u952e*/

switch(key)

{

case F1: HelpMessage(); break;

case F2: CreatFile(); break\uff1b

case F3: Search_Xuehao(); break;

case F4: Search_Xingming();break;

case F5: ListFile(); break;

case F6: Statistics(); break;

case ESC:exit(1); break;

/*default: puts("\t\t\t\u8f93\u5165\u9519\u8bef\u9009\u9879!");

printf("\t\t\t\u6309\u4efb\u610f\u952e\u8fd4\u56de...");

getch();*/

}

clrscr(); /*\u6bcf\u6267\u884c\u5b8c\u4e00\u9879\u529f\u80fd\u540e,\u81ea\u52a8\u6e05\u5c4f*/

}



}

\u8fd9\u4e2a\u6210\u7ee9\u7ba1\u7406\u7a0b\u5e8f\u3002\u5728vc++ \u5b66\u4e60\u6848\u4f8b\u5206\u6790\u91cc\u9762\u5e38\u89c1\uff0c \u53ef\u4ee5\u53bb\u627e\u672c\u8fd9\u6837\u7684\u4e66\u3002COPY\u4ee3\u7801\uff0c\u53ef\u4ee5\u4fee\u6539\u6210\u81ea\u5df1\u7684\u4e1c\u897f\uff01\u53ea\u8981\u4e0d\u7528\u4e8e\u5546\u4e1a\u8d5a\u94b1\u3002\u4e0d\u4f1a\u4fb5\u6743\u7684\uff01

#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("\t\t\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组数据
7、回到主菜单,输入5,回车
按提示输入姓名,删除数据
出现删除成功的信息
8、回到主菜单,输入6,回车
输入姓名进行查询
9、回到主菜单,输入7,回车
出现统计信息
10、回到主菜单,输入9,回车
输入result.txt,回车
出现成功写入文件的信息
11、回到主菜单,输入0,回车退出系统
回答者:kingkey001 - 试用期 一级 7-14 22:38
修改答复: kingkey001,您要修改的答复如下: 积分规则 关闭
C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
三、程序正文部分
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("\t\t\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组

地址: http://post.baidu.com/f?kz=227914765

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<iostream>
using namespace std;

void file();
void init();
void init1();
void init2();
void init3();
void init4();
void doChoice1();
void doChoice2();
void doChoice3();
void doChoice4();
void doChoice5();
#define FORMAT "%-7s%-9s%-10.3f%-14.3f%-12.3f%-14.3f%.3f"
float total_ave,math_ave,data_ave,eng_ave,c_ave;
int n=0;
FILE *fp;

struct student
{
char num[7];
char name[20];
float score[4];
float average;
}stu[80];
struct student *p;

void load(char filename[])
{
n=0;
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Cannot open file.\n");
return;
}
do
{
if(fread(&stu[n],sizeof(struct student),1,fp)!=1)
{
if(feof(fp)) return;
printf("file read error!!!\n\n");
}
n++;
}while(1);
fclose(fp);
}

void save(char filename[])
{
int i;
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cannot open file.\n");
return;
}
else
{
for(i=0;i<n;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error!!!");
fclose(fp);
}
}
void Edit()
{
char choice;
do
{
init();
choice=getch();
if(choice=='1')
doChoice1();
else if(choice=='2')
doChoice2();
else if(choice=='3')
doChoice3();
else if(choice=='4')
doChoice4();
else if(choice=='5')
doChoice5();
else if(choice=='6')
return;
else
printf("Input error!!!!\n\n");
} while(1);
}

void newfile()
{
char ch,filename[15];
do
{
file();
ch=getch();
if(ch=='1')
{
printf("请输入filename:");
gets(filename);
fp=fopen(filename,"wb+");
printf("已成功建立数据库文件。\n\n");
fclose(fp);
}
else if(ch=='2')
{
printf("\n请输入filename:");
gets(filename);
fp=fopen(filename,"rb");
if(fp==NULL) printf("输入有误,不存在该文件!!!\n\n");
else
{
load(filename);
printf("已成功载入数据。\n\n");
}
}
else if(ch=='3')
{
printf("\n");
Edit();
}

else if(ch=='4')
{
printf("\n请输入filename:");
gets(filename);
fp=fopen(filename,"rb");
if(fp==NULL) printf("输入有误,不存在该文件,请新建立文件!!!\n\n");
else
{
save(filename);
printf("已成功保存数据。\n\n");
}
}
else if(ch=='5') return;

else printf("Input error!!!\n\n");
}while(1);
}

int main()
{
system("cls"); //调用函数
printf("\t*****************************************************************\n");
printf("\t\t\t欢迎使用学生考试成绩数据处理系统\n");
printf("\t*****************************************************************\n");
newfile();
printf("谢谢本处理系统。\n");

}
void file()
{
printf("请选择操作菜单:\n");
printf("\t①.建立新的数据文件\n");
printf("\t②.载入数据\n");
printf("\t③.编辑数据\n");
printf("\t④.保存\n");
printf("\t⑤.退出\n");
}

void init()
{
printf("请选择操作菜单:\n");
printf("\t①.增加或删除学生记录\n");
printf("\t②.查询成绩\n");
printf("\t③.统计平均成绩\n");
printf("\t④.不及格统计\n");
printf("\t⑤.特定查询\n");
printf("\t⑥.返回\n");
}

void init1()
{
printf("\n请选择操作菜单:\n");
printf("\t①.增加学生的记录\n");
printf("\t②.删除学生的记录\n");
printf("\t③.返回!!\n");
}
void Add()
{
char c;
do
{
printf("\n请输入学生的学号:");
scanf("%s",stu[n].num);
printf("请输入学生的姓名:");
scanf("%s",stu[n].name);
printf("请输入<数学>成绩:");
scanf("%f",&stu[n].score[0]);
printf("请输入<数据库概论>成绩:");
scanf("%f",&stu[n].score[1]);
printf("请输入<英语>成绩:");
scanf("%f",&stu[n].score[2]);
printf("请输入<C语言程序设计>成绩:");
scanf("%f",&stu[n].score[3]);
getchar();
n++;
printf("继续录入附否?(按y继续,其他退出)");

c=getch();
printf("\n");

}while(c=='y'||c=='Y');
printf("\t数据已成功输入^_^!\n");
}

void Del()
{
int i,flag=1;
char number[8];
printf("请输入学生的学号:");
gets(number);
for(i=0;i<n;i++)
if(strcmp(stu[i].num ,number)==0)
{
stu[i]=stu[n-1];
n--;
flag=0;
}
if(flag) printf("输入有误,不存在该学生数据!!!\n");
printf("\t已成功删除该学生数据^_^!\n");

}

void doChoice1()
{
char choice1;
do
{
init1();
choice1=getch();
if(choice1=='1') Add();
else if(choice1=='2') Del();
else if(choice1=='3') return;
else printf("Input error!!!!\n");

}while(1);
printf("\n");
}

void init2()
{
printf("\n请选择操作菜单:\n");
printf("\t①.输入学号查成绩(包括平均成绩)\n");
printf("\t②.按平均成绩顺序输出学生成绩\n");
printf("\t③.按学号顺序输出所有学生成绩\n");
printf("\t④.按某门课成绩好坏顺序输出学生成绩\n");
printf("\t⑤.返回!!\n");
}

void average()
{
float sum=0,sum0=0,sum1=0,sum2=0,sum3=0;
for(p=stu;p<stu+n;p++)
{
p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3])/4;
sum=sum+p->average;
sum0=sum0+p->score[0];
sum1=sum1+p->score[1];
sum2=sum2+p->score[2];
sum3=sum3+p->score[3];
}
total_ave=sum/n;
math_ave=sum0/n;
data_ave=sum1/n;
eng_ave=sum2/n;
c_ave=sum3/n;
}

void doChoice2_1()
{
char number[8];
int flag=1;
printf("\n请输入学号:");
gets(number);
for(p=stu;p<stu+n;p++)
if(strcmp(number,p->num)==0)
{
printf("\n姓名%s 数学%.3f 数据库概论%.3f ",p->name,p->score[0],p->score[1]);
printf("\n英语%.3f C语言程序设计%.3f 平均成绩%.3f",p->score[2],p->score[3],p->average);
flag=0;
}
printf("\n");
if(flag) printf("输入有误,没有该学生数据!!!\n");
}

void Oder1()
{
int i,j;
struct student t;
for(i=0;i<=n-2;i++)

for(j=0;j<=n-2-i;j++)
if(stu[j].average<stu[j+1].average)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}

}

void Oder2()
{
int i,j;
struct student t;
for(i=0;i<=n-2;i++)
for(j=0;j<=n-2-i;j++)
if(strcmp(stu[j].num,stu[j+1].num)>0)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}

Print()
{
printf("\n");
printf("学号 姓名 数学 数据库概论 英语 C语言程序设计 平均分 \n ");
printf("-----------------------------------------------------------------------------\n");
for(p=stu;p<stu+n;p++)
{
printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->average);
printf("\n\n");
}
printf("\n");

}

void Order3(int i)
{
int j,k;
struct student t;
for(j=0;j<=n-2;j++)
{
for(k=0;k<=n-2-j;k++)
if(stu[k].score[i]<stu[k+1].score[i])
{
t=stu[k];
stu[k]=stu[k+1];
stu[k+1]=t;
}
}

}

void doChoice2_4()
{
int i;
average();
printf("\n请输入课程代号(数学0, 数据库概论1, 英语2, C语言程序设计3):");
scanf("%d",&i);
getchar();
if(i<4&&i>=0)
{
Order3(i);
Print();
}
else printf("i值不合要求!!!");
printf("\n");

}

void doChoice2()
{
char choice2;
average();
do
{
init2();
choice2=getch();
if(choice2=='1') doChoice2_1();
else if(choice2=='2')
{
Oder1();
Print();
}
else if(choice2=='3')
{
Oder2();
Print();
}
else if(choice2=='4') doChoice2_4();
else if(choice2=='5') return;
else printf("Input error!!!!\n");
}while(1);

}

void init3()
{
printf("\n请选择操作菜单:\n");
printf("\t①.输出总平均成绩\n");
printf("\t②.输出每门课程平均成绩\n");
printf("\t③.返回!!\n");
}
void doChoice3_1()
{
printf("\n所有学生所有课程的平均成绩为:%.3f\n",total_ave);
printf("\n");
}

void doChoice3_2()
{
printf("\n");
printf("数学平均成绩:%.3f\n数据库概论平均成绩:%.3f\n",math_ave,data_ave);

printf("英语平均成绩:%.3f\nC语言程序设计平均成绩:%.3f\n",eng_ave,c_ave);
printf("\n");
}

void doChoice3()
{
char choice3;
average();
do
{
init3();
choice3=getch();
if(choice3=='1') doChoice3_1();
else if(choice3=='2') doChoice3_2();
else if(choice3=='3') return;
else printf("Input error!!!!\n");
}while(1);

}

void init4()
{
printf("\n请选择操作菜单:\n");
printf("\t①.输出课程有不及格的学生名单\n");
printf("\t②.输出指定课程有不及格的学生名单\n");
printf("\t③.输出有三门或三门以上课程不及格的学生名单\n");
printf("\t④.计算并输出每门课不及格比例\n");
printf("\t⑤.返回!!\n");
}
void doChoice4_1()
{
int flag=1,i;
for(p=stu;p<stu+n;p++)
{
for(i=0;i<4;i++)
if(p->score[i]<60)
{
printf("%s ",p->name);
flag=0;
break;
}
}
if(flag) printf("无人不及格^_^。\n");
else printf("有不及格课程。\n");
}

pass2(int i)
{
int flag=1;
for(p=stu;p<stu+n;p++)
if(p->score[i]<60)
{
printf("%s ",p->name);
flag=0;
}
if(flag) printf("无人不及格^_^。\n");
else printf("不及格\n");
}

void doChoice4_2()
{
int i;
printf("\n请输入课程代号(数学0, 数据库概论1, 英语2, C语言程序设计3):");
scanf("%d",&i);
getchar();
if(i<4&&i>=0) pass2(i);
else printf("i值不合要求!!!");
printf("\n");
}

void doChoice4_3()
{
int i,flag,flag1=1;
for(p=stu;p<stu+n;p++)
{
flag=0;
for(i=0;i<4;i++)
if(p->score[i]<60)
flag++;
if(flag>=3)
{
printf("\t%s有%d门课程不及格\n",p->name,flag);
flag1=0;
}

}
if(flag1) printf("无人有三门或三门以上课程不及格^_^!\n");
printf("\n");
}

void doChoice4_4()
{
int fail[4]={0,0,0,0},i;
for(i=0;i<4;i++)
for(p=stu;p<stu+n;p++)
if(p->score[i]<60)
fail[i]++;
printf("\n");
printf("课程 不及格人数 总人数 \n");
printf("**********************************************************\n");

printf("数学 %d %d \n",fail[0],n);
printf("数据库概论 %d %d \n",fail[1],n);
printf("英语 %d %d \n",fail[2],n);
printf("C语言程序设计 %d %d \n",fail[3],n);
printf("\n");
}

void doChoice4()
{
char choice4;
do
{
init4();
choice4=getch();
if(choice4=='1') doChoice4_1();
else if(choice4=='2') doChoice4_2();
else if(choice4=='3') doChoice4_3();
else if(choice4=='4') doChoice4_4();
else if(choice4=='5') return;
else printf("Input error!!!!\n");
}while(1);
printf("\n");

}

void init5()
{
printf("\n请选择操作菜单:\n");
printf("\t①.输出每门课成绩最好和最差的学生\n");
printf("\t②.总成绩分段查询(如总成绩在300~400)\n");
printf("\t③.各门成绩分段查询(如各门成绩均在80~90)\n");
printf("\t④.返回\n");
}

void doChoice5_1()
{
Oder1();
printf("\n 成绩最好的学生 成绩最差学生\n" );
Order3(0);
printf("数学 %s %s\n",stu[0].name,stu[n-1].name);

Order3(1);
printf("数据库概论 %s %s\n",stu[0].name,stu[n-1].name);

Order3(2);
printf("英语 %s %s\n",stu[0].name,stu[n-1].name);

Order3(3);
printf("C语言程序设计 %s %s\n",stu[0].name,stu[n-1].name);
printf("\n\n");
}

void doChoice5_2()
{
int flag=0;
float M,m;
printf("请输入上限:");
scanf("%f",&M);
printf("\n请输入下限:");
scanf("%f",&m);
getchar();
average();
if(M<m)
{
printf("上限小于下限,输入有误!!!\n");
return;
}
for(p=stu;p<stu+n;p++)
if(p->average>(m/4)&&p->average<(M/4))
{
printf("%s ",p->name);
flag=1;
}
if(flag) printf("总分处在该分数段之间。");
else printf("没有总分处在该分数段之间的学生。");
printf("\n");
}

void doChoice5_3()
{
int flag=1,flag1=1,i;
float M,m;
printf("请输入上限:");
scanf("%f",&M);
printf("\n请输入下限:");
scanf("%f",&m);
getchar();
if(M<m)
{
printf("上限小于下限,输入有误!!!\n");
return;
}
for(p=stu;p<stu+n;p++)
{ flag1=1;
{
for(i=0;i<4;i++)
if(p->score[i]<m||p->score[i]>M) flag1=0;
}
if(flag1) printf("%s ",p->name);
flag=0;
}
if(flag) printf("没有符合条件的学生!");
else printf("所有课程成绩都处在该分数段之间。");
printf("\n");
}

void doChoice5()
{
char choice5;
average();
do
{
init5();
choice5=getch();
if(choice5=='1') doChoice5_1();
else if(choice5=='2') doChoice5_2();
else if(choice5=='3') doChoice5_3();
else if(choice5=='4') return;
else printf("Input error!!!!\n");
}while(1);
printf("\n");

}

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int INDEX[32];
struct STUDENT
{
int id,age,chinese,math,english;
char name[21];
}students[32];
void page_title(char *menu_item)
{
clrscr();
printf(">>> 学 生 管 理 系 统 <<<\n\n- %s -\n\n",menu_item);
}
void return_confirm(void)
{
printf("\n按任意键返回……\n");
getch();
}

void student_new(void)
{
int n;
page_title("录入学生基本信息");
for(n=0;n<32;n++)
if(students[n].id==0) break;
printf("学号:");
scanf("%d",&students[n].id);
printf("姓名:");
scanf("%s",&students[n].name);
printf("年龄:");
scanf("%d",&students[n].age);
return_confirm();
}

int search_id(void)
{
int n,i;
printf("请输入学生学号:");
scanf("%d",&i);
for(n=0;n<32;n++)
{
if(students[n].id==i&&students[n].id!=0)
{
printf("学号:%d\n",students[n].id);
printf("姓名:%s\n",students[n].name);
printf("年龄:%d\n",students[n].age);
return n;
}
}
printf("\n输入错误或学号不存在.\n");
return -1;
}

void student_del(void)
{
int n;
page_title("注销学生基本信息");
if((n=search_id())!=-1) students[n].id=0;
printf("\n!该学生已注销.\n");
return_confirm();
}

void student_edit(void)
{
int n;
page_title("编辑学生基本信息");
if((n=search_id())!=-1)
{
printf("\n请重新输入新信息:\n学号:");
scanf("%d",&students[n].id);
printf("姓名:");
scanf("%s",&students[n].name);
printf("年龄:");
scanf("%d",&students[n].age);
}
return_confirm();
}
void score_input(void)
{
int s,n,t;
page_title("录入成绩");
printf("\n请用数字键选择科目\n1-语文 2-数学 3-英语\n");
scanf("%d",&s);
for(n=0;n<32;n++)
{
if(students[n].id!=0)
{
printf("学号:%d 姓名:%s 成绩:",students[n].id,students[n].name);
scanf("%d",&t);
switch(s)
{
case 1 : students[n].chinese=t;break;
case 2 : students[n].math=t;break;
case 3 : students[n].english=t;break;
}
}
}
return_confirm();
}

void score_edit(void)
{
int n;
page_title("修改成绩");
if((n=search_id())!=-1)
{
printf("语文:%d 数学:%d 英语:%d\n",students[n].chinese,students[n].math,students[n].english);
printf("\n请重新输入成绩:\n语文:");
scanf("%d",&students[n].chinese);
printf("数学:");
scanf("%s",&students[n].math);
printf("英语:");
scanf("%d",&students[n].english);
}
return_confirm();
}

void sort_it(char nn)
{
int n,m,p,x,t[32];
for(n=0;n<32;n++)
{
switch(nn)
{
case '1' : t[n]=students[n].id;break;
case '2' : t[n]=students[n].chinese;break;
case '3' : t[n]=students[n].math;break;
case '4' : t[n]=students[n].english;break;
case '5' : t[n]=students[n].chinese+students[n].math+students[n].english;break;
}
}
for(n=0;n<32;n++)
{
x=0;
p=-1;
for(m=0;m<32;m++)
{
if(t[m]>x)
{
x=t[m];
p=m;
}
}
t[p]=-1;
INDEX[n]=p;
}
}

void browser(void)
{
int n,x;
char k;
sort_it('1');
while(1)
{
page_title("浏览");
printf("按数字键选择排序方式或按 0 返回\n");
printf("学号-1\t姓名\t\t年龄\t语文-2\t数学-3\t英语-4\t总分-5\n");
for(n=0;n<32;n++)
{
if(INDEX[n]!=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t",students[x].age,students[x].chinese);
printf("%d\t%d\t",students[x].math,students[x].english);
printf("%d\n",students[x].chinese+students[x].math+students[x].english);
}
}
k=getch();
if(k<'6'&&k>'0') sort_it(k);
else if(k=='0') break;
else continue;
}
}
void main(void)
{
menu: page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("1 录入学生基本信息\n2 修改学生基本信息\n");
printf("3 注销学生基本信息\n\n4 录入成绩\n5 修改成绩\n\n");
printf("6 浏览...\n \n0 退出\n");
switch(getch())
{
case '1' : student_new();break;
case '2' : student_edit();break;
case '3' : student_del();break;
case '4' : score_input();break;
case '5' : score_edit();break;
case '6' : browser();break;
case '0' : exit(0);
}
goto menu;
}

我运行过了,保证对的!
记得把分给我哦!
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>

#define InputRcd 1
#define UpdateRcd 2
#define SelectRcd 3
#define Exit 4

#define NAMELEN 16
#define CLASSLEN 6

struct record {
char classID[CLASSLEN];
int term;
char name[NAMELEN];
int chinese,math,english;
};

void showProgInform()
{
printf("-------------------------------------------------\n");
printf("| *** STUDENTS' SCORE PLATFORM *** |\n");;
printf("-------------------------------------------------\n\n");
}

void showMenu() {
system("cls");
showProgInform();

printf("Please select an operation fo the following MENU: \n");
printf(" 1. Input a record \n");
printf(" 2. Update a record\n");
printf(" 3. Select record(s)\n");
printf(" 4. Exit. \n");
}

void inputRecord() {
struct record inscr;
FILE * fp;

system("cls");
showProgInform();

printf("Mention: You are to add new record\n\n");
printf("Please input by the following instructions: \n");
printf("Class ID: ");
scanf("%s",inscr.classID);
printf("Term Number: ");
scanf("%d",&(inscr.term));
printf("Student Name: ");
scanf("%s",inscr.name);
printf("Chinese score: ");
scanf("%d",&(inscr.chinese));
printf("Math score: ");
scanf("%d",&(inscr.math));
printf("English Score: ");
scanf("%d",&(inscr.english));
getchar();

if((fp=(fopen("stu_score.rcd","ab+")))==NULL) {
printf("Input record failed!\n");
return;
}

fwrite(&inscr,sizeof(struct record),1,fp);
fclose(fp);

if((fp=fopen("stu_score.txt","ab+"))==NULL) {
return;
}

fprintf(fp,"%s-%d %s: %d %d %d\r\n",inscr.classID,inscr.term,inscr.name,inscr.chinese,inscr.math,inscr.english);;
fclose(fp);
}

void showSingleRecord(struct record rc) {
printf("%s-%d %s: (CHI)%d (MAT)%d (ENG)%d\n",rc.classID,rc.term,rc.name,rc.chinese,rc.math,rc.english);
}

void updateRecord()
{
long fsize,arraySize,i;
struct record *allRecords,newRcd;
int hasFound = 0;

FILE * fp;
FILE * txt;

system("cls");
showProgInform();

if((fp = fopen("stu_score.rcd","rb")) == NULL ) {
printf("! No records , cannot operate\n");
return;
}

printf("Mention: You are to update record\n\n");
printf("Please the record you want to update by the follow mention: \n");
printf("Class Id: ");
scanf("%s",newRcd.classID);
printf("Term number: ");
scanf("%d",&newRcd.term);
printf("Student name: ");
scanf("%s",newRcd.name);

fseek(fp,0,SEEK_END);
fsize = ftell(fp);
arraySize = fsize/(sizeof(struct record));
allRecords = (struct record *)calloc(arraySize,sizeof(struct record));

rewind(fp);
fread(allRecords,sizeof(struct record),arraySize,fp);

for(i=0;i<arraySize;i++) {
if(strcmp(newRcd.classID,allRecords[i].classID)==0 && newRcd.term==allRecords[i].term && strcmp(newRcd.name,allRecords[i].name)==0) {
printf("Find the matching record: ");
showSingleRecord(allRecords[i]);

printf("Input new Score: \n");
printf("New Chinese Score: ");
scanf("%d",&(allRecords[i].chinese));
printf("New Math Score: ");
scanf("%d",&(allRecords[i].math));
printf("New English Score: ");
scanf("%d",&(allRecords[i].english));
printf("After update ,the records is : \n\t");
showSingleRecord(allRecords[i]);
printf("\n");
hasFound = 1;
break;
}
}
fclose(fp);

if(!hasFound) {
printf("No matching record has found!\n");
free(allRecords);
return;
}

if((fp = fopen("stu_score.rcd","w"))==NULL) {
printf("Write file stu_score.rcd failed\n");
return;
}

if((txt = fopen("stu_score.txt","w"))==NULL) {
printf("Write file stu_score.txt failed\n");
return;
}

fwrite(allRecords,sizeof(struct record),arraySize,fp);

for(i=0;i<arraySize;i++) {
fprintf(txt,"%s-%d %s: %d %d %d\r\n",allRecords[i].classID,allRecords[i].term,allRecords[i].name,allRecords[i].chinese,allRecords[i].math,allRecords[i].english);
}

free(allRecords);

fclose(fp);
fclose(txt);
}

void showSelectMenu(char classID[],int term) {
system("cls");
showProgInform();

printf("Mention: All the following opertion based on classID: %s,Term: %d\n\n",classID,term);
printf("Mention: You are to select the records\n\n");
printf("\t Please choose an operation: \n");
printf("\t 1. Select all records of the classID.\n");
printf("\t 2. Sort by the average score.\n");
printf("\t 3. Select no passed record.\n");
printf("\tOther. Return the high level menu.\n\n");
}

void showStatistic(struct record *r ,long size,char classID[],int term) {
int total;
float ave;
long i;

system("cls");
showProgInform();
printf("All records for class: %s,term: %d; total record nubmer: %ld\n",classID,term,size);

printf("********************************************************\n");
for(i=0;i<size;i++) {
total = r[i].chinese+r[i].english +r[i].math ;
ave = (float)total/3;
printf(" %s: (CHI)%d (MAT)%d (ENG)%d (Total)%d (Ave)%.2f\r\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,ave);
}
printf("********************************************************\n\n");
printf("Press Enter to return Select submenu\n");
getchar();
}

void sortSelectByAve(struct record * r,long size) {

FILE *fp;
struct record temp;
float outerAve ,innerAve;
int total;
long i,j;
system("cls");
showProgInform();
printf("\nSorted the records by average score\n");

for(i=0;i<size;i++) {
outerAve = (float)(r[i].chinese+r[i].math+r[i].english)/3;
for(j=i+1;j<size;j++) {
innerAve = (float)(r[j].chinese+r[j].math+r[j].english)/3;
if(innerAve > outerAve) {
strcpy(temp.name,r[j].name);
temp.chinese = r[j].chinese;
temp.math = r[j].math ;
temp.english = r[j].english ;

strcpy(r[j].name,r[i].name);
r[j].chinese = r[i].chinese ;
r[j].math = r[i].math ;
r[j].english = r[i].english ;

strcpy(r[i].name,temp.name);
r[i].chinese = temp.chinese ;
r[i].math = temp.math ;
r[i].english = temp.english ;
}
}
}

printf("\nshow sorted records \n");
printf("********************************************\n");
for(i=0;i<size;i++) {
total = r[i].chinese + r[i].math + r[i].english ;
innerAve = (float)total/3;
printf("%s: %d %d %d %d %f\n",r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);
}
printf("********************************************\n");

printf("write sorted records to \"sorted.txt\"\n");
if((fp = fopen("sorted.txt","w"))== NULL) {
printf("open sort.txt failed\n");
return;
}

for(i=0;i<size;i++) {
total = r[i].chinese + r[i].math + r[i].english ;
innerAve = (float)total/3;
fprintf(fp,"(CLASS-TERM)%s-%d (NAME)%s: (CHI)%3d (MAT)%3d (ENG)%3d (TOTAL)%4d (AVERG)%.2f\r\n",r[i].classID,r[i].term,r[i].name,r[i].chinese,r[i].math,r[i].english,total,innerAve);
}

printf("write file sorted.txt finished\n");
fclose(fp);

printf("\nPress any key to return Select subMenu\n");
}

void noPass(struct record * r,int size) {
long i=0,j=0;

FILE * fp;
if((fp=fopen("no-pass.txt","w"))==NULL) {
printf("create no-pass.txt failed");
return;
}

system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");

printf("\nShow student that one subject is no-pass\n");
printf("***********************************************\n");
for(i=0;i<size;i++) {
if(r[i].chinese <60 || r[i].math<60 || r[i].english <60) {
printf("%s-%d %s: ",r[i].classID,r[i].term,r[i].name);
fprintf(fp,"%s-%d %s: ",r[i].classID,r[i].term,r[i].name);
if(r[i].chinese < 60 ) {
printf("(Chinese)%d ",r[i].chinese);
fprintf(fp,"(Chinese)%d ",r[i].chinese );
}
if(r[i].math < 60) {
printf("(Math)%d ",r[i].math);
fprintf(fp,"(Math)%d ",r[i].math);
}
if(r[i].english < 60) {
printf("(English)%d",r[i].english);
fprintf(fp,"(English)%d",r[i].english);
}
printf("\r\n");
fprintf(fp,"\r\n");
}
}
printf("***********************************************\n");
fclose(fp);
printf("Press Enter to return \"Select\" submenu\n");
}

void selectRecord() {
char classID[CLASSLEN];
int term;
FILE * fp;
long fsize=0,arraySize=0,thisSize=0,i=0,j=0;
struct record *allRcd,*thisClass;

system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");
printf("Mention: please operate by the following instructions\n\n");

printf("Input ClassID: ");
scanf("%s",classID);
printf("Input term number: ");
scanf("%d",&term);

if((fp=fopen("stu_score.rcd","r"))==NULL) {
printf("\nWarining: No record exists!\n");
return;
}

fseek(fp,0,SEEK_END);
fsize = ftell(fp);
arraySize = fsize/(sizeof(struct record));
allRcd = (struct record *)calloc(arraySize,sizeof(struct record));
rewind(fp);
fread(allRcd,sizeof(struct record),arraySize,fp);

printf("Press Enter to show the sub menu of Select menu\n");

for(i=0;i<arraySize;i++) {
if(strcmp(classID,allRcd[i].classID)==0 && term==allRcd[i].term) {
thisSize++;
}
}

if(thisSize==0) {
printf("\nWaring: No record for Class %s Term %d\n",classID,term);
fclose(fp);
free(allRcd);
return;
}

thisClass = (struct record *)calloc(thisSize,sizeof(struct record));
j=0;
for(i=0;i<arraySize;i++) {
if(strcmp(classID,allRcd[i].classID)==0 && term==allRcd[i].term ) {
strcpy(thisClass[j].classID,classID) ;
thisClass[j].term = term ;
strcpy(thisClass[j].name,allRcd[i].name);
thisClass[j].chinese = allRcd[i].chinese;
thisClass[j].math = allRcd[i].math ;
thisClass[j].english = allRcd[i].english ;
j++;
}
}
free(allRcd);
/////////////////////////////////////////////////////////////
getchar();
getchar();
while(1) {
system("cls");
showProgInform();
printf("Mention: The following operation will be all on the classId and term you input\n\n");
showSelectMenu(classID,term);

switch(getchar()) {
case '1':
getchar();
showStatistic(thisClass,thisSize,classID,term);
break;
case '2':
getchar();
sortSelectByAve(thisClass,thisSize);
getchar();
break;
case '3':
getchar();
noPass(thisClass,thisSize);
printf("0: Press 0 to return \"Select\" submenu\n");
if(getchar()=='0')
break;
default:
getchar();
return;
}
}

free(thisClass);
fclose(fp);
}

void go_on() {
printf("Press Enter to continue\n");
getchar();
}

void main() {
showProgInform();

while(1) {
showMenu();
switch(getchar()) {
case '1':
getchar();
inputRecord();
go_on();
break;

case '2':
getchar();
updateRecord();
getchar();
go_on();
break;

case '3':
getchar();
selectRecord();
getchar();
go_on();

break;

case '4':
getchar();
//exit(1);
return;

default:
getchar();
printf("Wrong Option! input again\n");
go_on();
break;
}
}
}

我要求实现如下功能:建立文件、增加学生记录、新建学生信息文件、显示记录、文件存储、读取文件、删除记录、修改记录、查询记录、对记录进行排序、测试程序,最好不低于500行。

  • .瀛︾敓鎴愮哗绠$悊 c璇█绋嬪簭
    绛旓細printf(" 瀛︾敓绠$悊绯荤粺\n");printf("===\n");printf("1.鏁版嵁褰曞叆\n");printf("2.鏌ヨ\n");printf("3.鍒犻櫎\n");printf("4.鎺掑簭\n");printf("0.閫鍑篭n");printf("===\n");printf("璇烽夋嫨鐩稿簲鐨勫姛鑳:");} //鏁版嵁褰曞叆 void input(){system("cls");float s;int t;stu x...
  • c璇█璁捐涓涓瀛︾敓鎴愮哗绠$悊绋嬪簭,姹傚姪
    绛旓細cout<<"璇疯緭鍏ヨ鏂鎴愮哗锛";cin>>a[top].yw;cout<<"璇疯緭鍏ユ暟瀛︽垚缁╋細";cin>>a[top].sx;cout<<"璇疯緭鍏ヨ嫳璇垚缁╋細";cin>>a[top].yy;sort(a+1,a+top+1,cmp);} void cz(){ string name;cout<<"璇疯緭鍏ュ垹闄よ呯殑濮撳悕锛";cin>>name;for(int i=1; i<=50; i++)if(a[i].xm==...
  • 缂栧啓涓涓绋嬪簭鏉绠$悊瀛︾敓鎴愮哗,
    绛旓細define MAX 10 //瀛︾敓鏁版嵁鏈澶т釜鏁帮紝鐢变簬瑕佹彃鍏ユ暟鎹紝鏁呬竴鑸緭鍏ヨ灏忎簬10涓 static int n=0; //鍏ㄥ眬鍙橀噺锛岃褰曞鐢熺殑鎬绘暟 struct student { char name[10]; //瀛︾敓濮撳悕 float score; //瀛︾敓鎴愮哗 };void init(struct student * std) //鏁版嵁鐨勫垵濮嬪寲 { char k;struct student temp; //涓存椂...
  • 鐢–++璇█缂栧啓涓涓瀛︾敓鎴愮哗绠$悊绯荤粺鈥濄
    绛旓細鐢–++璇█缂栧啓涓涓瀛︾敓鎴愮哗绠$悊绯荤粺鈥濄  鎴戞潵绛 棣栭〉 鍦ㄩ棶 鍏ㄩ儴闂 濞变箰浼戦棽 娓告垙 鏃呮父 鏁欒偛鍩硅 閲戣瀺璐㈢粡 鍖荤枟鍋ュ悍 绉戞妧 瀹剁數...break; //鐢 break 璺冲嚭鏈惊鐜,涓嶈鐢 return ,return 鏄鍑绋嬪簭 } } } else if(L1.check(ch, "0")) return; } return; } #include "...
  • 瀛︾敓鎴愮哗绠$悊绋嬪簭璁捐
    绛旓細棰樼洰;瀛︾敓鎴愮哗绠$悊绋嬪簭璁捐鍐呭;瀛︾敓鎴愮哗绠$悊鐨勫熀鏈搷浣:鏁版嵁杈撳叆銆佹暟鎹煡璇傝姹傚鐢熶俊鎭寘鍚濂姐佸鍚嶃佸叆瀛︽椂闂淬佺郴鍒佺彮绾с佺浉鍏宠绋嬪悕绉扮瓑銆傜▼搴忓叿鏈夋暟鎹緭鍏ャ佸垹闄ゃ佷慨鏀... 棰樼洰;瀛︾敓鎴愮哗绠$悊绋嬪簭璁捐 鍐呭;瀛︾敓鎴愮哗绠$悊鐨勫熀鏈搷浣:鏁版嵁杈撳叆銆佹暟鎹煡璇傝姹傚鐢熶俊鎭寘鍚濂姐佸鍚嶃佸叆瀛︽椂闂淬佺郴鍒佺彮绾с佺浉鍏...
  • 姹傜敤C璇█璁捐涓涓瀛︾敓鎴愮哗绠$悊绋嬪簭,鏄庡ぉ涓嬪崍瑕佺敤銆
    绛旓細棰樼洰瀛︾敓鎴愮哗绠$悊绋嬪簭浠诲姟:浣跨敤C璇█涓浉鍏崇煡璇,璁捐鍑哄鐢熸垚缁╃鐞嗙▼搴忋傝姹傚涓嬫墍杩:1褰曞叆瀛︾敓淇℃伅,姣忎綅瀛︾敓褰曞叆鐨勪俊鎭湁:濮撳悕銆佸鍙枫佹у埆銆佺彮绾с佸拰涓夐棬鍔熻(鏁板,鑻辫,... 棰樼洰 瀛︾敓鎴愮哗绠$悊绋嬪簭浠诲姟:浣跨敤C璇█涓浉鍏崇煡璇,璁捐鍑哄鐢熸垚缁╃鐞嗙▼搴忋傝姹傚涓嬫墍杩: 1褰曞叆瀛︾敓淇℃伅,姣忎綅瀛︾敓褰曞叆鐨勪俊鎭湁:濮撳悕銆...
  • 鏈夊叧C璇█绋嬪簭(瀛︾敓鎴愮哗绠$悊绋嬪簭)
    绛旓細鏈夊叧C璇█绋嬪簭(瀛︾敓鎴愮哗绠$悊绋嬪簭) 10 瀹炶瑕佹眰,甯屾湜鍝綅楂樻墜鑳藉府蹇欒В鍐!鏄瀹炵幇杩欎釜绋嬪簭#include<stdio.h>#include<string.h>#defineN60typedefstructstudent{intnum;/*瀛﹀彿*/charname[20];/*濮撳悕*/charsex[4];/*鎬у埆*... 瀹炶瑕佹眰,甯屾湜鍝綅楂樻墜鑳藉府蹇欒В鍐!鏄瀹炵幇杩欎釜绋嬪簭#include <stdio.h>#include...
  • 缂栫▼濡備綍鐢–璇█缂栧啓涓涓瀛︾敓鎴愮哗绠$悊绯荤粺绋嬪簭
    绛旓細2018-04-27 鐢–璇█缂栫▼瀹炵幇涓涓畝鍗曠殑瀛︾敓鎴愮哗绠$悊绯荤粺 4 2012-07-23 鎬庢牱鐢╟璇█缂栧啓涓涓鐢熸垚缁╃鐞嗙郴缁 4 2015-01-15 鎬庝箞鐢╟璇█缂栧啓涓涓鐢熸垚缁╃鐞嗙郴缁熷晩?鎬モ︹ 2 2009-07-21 鐢–璇█鍐欎釜瀛︾敓鎴愮哗绠$悊绯荤粺绋嬪簭 2013-06-16 鐢–璇█缂栧啓涓涓瀛︾敓绠$悊绯荤粺銆 227 2015-07-14 鐢–璇█缂栫▼...
  • 姹傜畝鍗瀛︾敓鎴愮哗绠$悊绋嬪簭(C璇█)
    绛旓細2015-06-29 C璇█瀛︾敓鎴愮哗绠$悊绋嬪簭 12 2019-04-10 鎬ユ眰C璇█ 瀛︾敓鎴愮哗绠$悊绯荤粺 绋嬪簭鍙婃祦绋嬪浘(瑕佺畝鍗曠殑) 2014-06-26 姹備竴涓秴绠鍗曠殑C璇█缂栬瘧鐨勫鐢熸垚缁╃鐞嗙▼搴 2015-02-04 璺眰C璇█绋嬪簭 瀛︾敓浣滀笟鎴愮哗绠$悊绋嬪簭 5 2010-09-01 瀛︾敓鎴愮哗绠$悊绋嬪簭璁捐(C璇█) 2014-06-13 姹:绠鍗曠殑瀛︾敓鎴愮哗绠$悊绋嬪簭 ...
  • c璇█绋嬪簭璁捐-瀛︾敓鎴愮哗绠$悊绯荤粺(鎴愮哗鐨勬煡璇,缁熻,鐢ㄧ粨鏋勪綋,鎸囬拡)_鐧惧害...
    绛旓細printf("璇疯緭鍏%d涓鐢熶俊鎭(瀛﹀彿锛屽鍚嶏紝鎴愮哗):\n",n);for(i=0;i<n;i++){ scanf("%d %s %f",&p[i].num,&p[i].name,&p[i].grade);} for(i=0;i<n;i++){ printf("%d %s %f\n",p[i].num,p[i].name,p[i].grade);} printf("璇疯緭鍏ヨ鏌ヨ瀛︾敓鎴愮哗鐨勭紪鍙:\n");...
  • 扩展阅读:学生成绩查询登录入口官网 ... 初中生查成绩的网站 ... 考试成绩查询入口官网 ... 扫一扫题目出答案 ... 中小学生考试成绩查询 ... 小学成绩查询app ... 个人成绩查询登录入口 ... 初中生成绩查询平台 ... 小学生成绩查询官网 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网