zoukankan      html  css  js  c++  java
  • 学生选课系统 c语言

      1 /*********************************
      2 *主题:学生选修课程系统设计 
      3 * 
      4 *设计要求: 
      5 *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加的类别,要求编号要唯一,如果添加了重复编号的记录是,则提示数据添加重复并取消添加。 
      6 *2.查询功能:可根据编号、姓名等信息对已添加的同学和课程记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 
      7 *3.显示功能:可显示当前系统中所有学生和课程的记录,每条记录占据一行。 
      8 *4.编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 
      9 *5.删除功能:主要实现对已添加的学生和课程记录进行删除。如果当前系统中没有对应的记录,则提示“记录为空!”并返回操作。 
     10 *6.统计功能:能根据多种参数进行统计。能统计学生人数、课程门数、选修某门课程的学生的相关信息。 
     11 *
     12 *********************************/
     13 /* 
     14 *    Verson:2.0(basic) 
     15 *    
     16 *    History: 完成课程信息的录入,查询等操作;完成选课功能(2017-05-05 20:30:00-01:20:00) 
     17 *
     18 *    Author:universes 
     19 *
     20 *
     21 *********************************/
     22 /* 
     23 *    Verson:1.9
     24 *    
     25 *    History:完成了学生信息的查询操作 (2017-05-04 22:00:32-01:11:00) 
     26 *
     27 *    Author:universes 
     28 *
     29 *
     30 ********************************/
     31 /* 
     32 *    Verson:1.5
     33 *    
     34 *    HIstory2:添加查重功能 (2017-05-02 23:39:19-01:06:05) 
     35 *    History1:完成了用户对课程和学生信息的添加操作(没有查重功能)(2017-05-02 22:06:13-23:39:19) 
     36 *
     37 *    Author:universes
     38 *
     39 *
     40 ********************************/
     41 /* 
     42 *    Verson:1.0 
     43 *
     44 *    History:完成了用户的选择功能框架(2017-04-19 22:06:13-22:40:47) 
     45 *
     46 *    Author:universes 
     47 *
     48 *
     49 ********************************/
     50 #include <stdio.h>
     51 #include <malloc.h>
     52 #include <stdlib.h>
     53 #include <string.h>
     54 
     55 #define SIZE_STU 10
     56 #define SIZE_COU 10
     57 #define SIZE_SEL 10
     58 //////////////函数声明部分 
     59 void home(void);
     60 void stu_operate(void);
     61 void cou_operate(void);
     62 void statistic(void);
     63 void choose(void);
     64 void delete_sel(int);
     65 //--学生信息部分: 
     66 void input_stu(void);
     67 void search_stu(void);
     68 void search_stu_id(void);
     69 void search_stu_name(void);
     70 void show_stu(void);
     71 void edit_stu(void);
     72 void renew_stu(void); 
     73 void delete_stu(void);
     74 //--课程信息部分: 
     75 void input_cou(void);
     76 void search_cou(void);
     77 void search_cou_id(void);
     78 void search_cou_name(void);
     79 void show_cou(void);
     80 void edit_cou(void);
     81 void renew_cou(void); 
     82 void delete_cou(void);
     83 
     84 /*学生信息结构体*/
     85 struct student_info {
     86     char stu_ID[9];
     87     char stu_name[5];
     88     char sex[9];
     89     char age[9];
     90     char collage[9];
     91     char grade[9];
     92     char contact[9];
     93 }stu[SIZE_STU];
     94 
     95 /*课程信息结构体*/
     96 struct course_info {
     97     char course_ID[9];
     98     char course_name[9];
     99     char property[9];
    100     char period[9];
    101     char credit[9];
    102     char time[9];
    103     int people;
    104 }cou[SIZE_COU];
    105 
    106 /*选课记录结构体*/
    107 struct select {
    108     int s;//存放学生信息的数组下标 
    109     int c;//存放课程信息的数组下标 
    110 }sel[SIZE_SEL]; 
    111 
    112 //全局变量i,j,x分别是学生,课程,选课信息数组下标
    113 int i = -1;
    114 int j = -1;
    115 int x = -1;
    116 
    117 int main(void){
    118     //进入欢迎界面 
    119     home();
    120     return 0;
    121 }
    122 
    123 //欢迎界面 
    124 void home(void) {
    125     printf("
    -------------------------欢迎进入选课系统!----------------------"); 
    126     int h;
    127     printf("
    
                            请选择你要进行的操作:");
    128     printf("
    
                                 1.学生操作");
    129     printf("
                                 2.课程操作");
    130     printf("
                                 3.开始选课");
    131     printf("
                                 4.选课统计");
    132     printf("
                                 5.退出系统");
    133     printf("
                                                          ");
    134     printf("
                            请输入:");
    135     scanf("%d",&h);
    136     system("cls");
    137     switch(h){
    138         case 1:
    139             stu_operate();
    140             break;
    141         case 2:
    142             cou_operate(); 
    143             break;
    144         case 3:
    145             choose();
    146             break;
    147         case 4:
    148             statistic();
    149             break;
    150         default:
    151             system("cls");
    152             printf("BYE!");
    153             break;
    154     }
    155 }
    156 /*开始选课*/
    157 void choose(void){
    158     char stu_id[10],cou_id[10];
    159     printf("
    -------------------------欢迎进入选课系统!----------------------"); 
    160     //输入选课学生信息 
    161     printf("
    
                     请输入选课人学号:");
    162     fflush(stdin);
    163     scanf("%s",stu_id);
    164     int h,flag = 0;
    165     for(h = 0;h <= i;h++){
    166         if(strcmp(stu[h].stu_ID,stu_id)==0){
    167             flag = 0;
    168             break;
    169         } else {
    170             flag = 1;
    171         }
    172     }
    173     if(flag||i==-1){
    174         printf("
                     不存在此学号
    ");
    175         system("pause");
    176         system("cls");
    177         home();
    178     }
    179     //录入姓名信息 
    180     x++;
    181     sel[x].s = h; 
    182     //输入课程信息 
    183     printf("
    
                     请输入选修课程号:");
    184     fflush(stdin);
    185     scanf("%s",cou_id);
    186     flag = 0;
    187     for(h = 0;h <= j;h++){
    188         if(strcmp(cou[h].course_ID,cou_id)==0){
    189             flag = 0;
    190             break;
    191         } else {
    192             flag = 1;
    193         }
    194     }
    195     if(flag||j==-1){
    196         printf("
                     不存在此课程号
    ");
    197         x--;
    198         system("pause");
    199         system("cls");
    200         home();
    201     }
    202     //录入课程信息
    203     sel[x].c = h;
    204     cou[h].people++; 
    205     printf("
                     录入成功!
    ");
    206     system("pause");
    207     system("cls");
    208     home();
    209 }
    210 /*删除选课记录*/
    211 void delete_sel(int q){//删除第q+1条记录 
    212 /*注意!本函数没有将x减1,请在函数外手动减1(考虑外层函数循环的需要)*/    
    213     int h;
    214     cou[sel[q].c].people--;
    215     for(h = q;q < x;h++){
    216         q++;
    217         sel[h].c = sel[q].c;
    218         sel[h].s = sel[q].s;
    219     }
    220     
    221 }
    222 //对学生记录进行操作
    223 void stu_operate(void) {
    224     printf("
    -------------------------欢迎进入选课系统!----------------------"); 
    225     printf("
    
                     请选择你要对学生记录进行的操作:");
    226     printf("
    
                                 1.添加");
    227     printf("
                                 2.查询");
    228     printf("
                                 3.显示");
    229     printf("
                                 4.返回主页面");
    230     printf("
                                                          ");
    231     printf("
                            请输入:");
    232     int i;
    233     scanf("%d",&i);
    234     system("cls");
    235     switch(i){
    236         case 1://添加学生信息 
    237             input_stu();
    238             break;
    239         case 2://查询学生信息 
    240             search_stu(); 
    241             break;
    242         case 3://显示所有学生信息
    243             show_stu(); 
    244             break;
    245         case 4:
    246             home();
    247             break; 
    248     }
    249 }
    250 //对课程记录进行操作 
    251 void cou_operate(void) {
    252     printf("
    -------------------------欢迎进入选课系统!----------------------"); 
    253     printf("
    
                     请选择你要对课程记录进行的操作:");
    254     printf("
    
                                 1.添加");
    255     printf("
                                 2.查询");
    256     printf("
                                 3.显示");
    257     printf("
                                 4.返回主页面");
    258     printf("
                                                          ");
    259     printf("
                            请输入:");
    260     int i;
    261     scanf("%d",&i);
    262     system("cls");
    263     switch(i){
    264         case 1:
    265             input_cou();
    266             break;
    267         case 2:
    268             search_cou();
    269             break;
    270         case 3:
    271             show_cou();
    272         case 4:
    273             home();
    274             break; 
    275     }
    276 }
    277 //选课信息统计记录
    278 void statistic(void){
    279     printf("
    -------------------------欢迎进入选课系统!----------------------"); 
    280     printf("
    
                         共有学生信息:%d 条",i+1); 
    281     printf("
                         共有课程信息:%d 条",j+1);
    282     if(x == -1){
    283         printf("
                           选课记录:0 条");
    284         printf("
    
                         "); 
    285         system("pause");
    286         system("cls");
    287         home();
    288     } else {
    289         printf("
    
                            选课记录 %d 条:",x+1);
    290         int m;
    291         for(m = 0;m <= x;m++){
    292             printf("
                         ================");
    293             printf("
                         第%d条",m+1);
    294             printf("
                         学生学号:%s",stu[sel[m].s].stu_ID);
    295             printf("
                         学生姓名:%s",stu[sel[m].s].stu_name);
    296             printf("
                         课程号:%s",cou[sel[m].c].course_ID);
    297             printf("
                         课程名:%s",cou[sel[m].c].course_name); 
    298         }
    299         printf("
    
                "); 
    300         system("pause");
    301         system("cls");
    302         home();
    303     }
    304     
    305 }
    306 
    307 
    308 //--------------------------------------学生信息插入--------------------------------------
    309 void input_stu(void){
    310     char flag;
    311     FILE * fp;
    312     //--判断文件是否为空 
    313     fp = fopen("student.txt","r+");
    314     flag = fgetc(fp);
    315     if(flag==EOF){
    316         fprintf(fp,"学号	姓名	性别	年龄	系别	班级	联系方式
    ");
    317     }
    318     fclose(fp);
    319     //-- 
    320     fp = fopen("student.txt","a+");
    321     if(fp == NULL){
    322         printf("打开文件失败!");
    323         system("cls");
    324         stu_operate();
    325     }
    326     printf("学号	姓名	性别	年龄	系别	班级	联系方式
    ");
    327     while(1){
    328         i++;
    329         scanf("%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
    330         //--数据查重
    331         int h; 
    332         for(h = 0;h < i;h++){
    333             if(i == 0) break;//第一条数据不需要查重 
    334             if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==0) {
    335                 printf("该学号已存在,请重新输入!
    ");
    336                 scanf("
    %s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
    337                 h = -1;
    338             }
    339         }
    340         //-- 
    341         fprintf(fp,"%s	%s	%s	%s	%s	%s	%s
    ",stu[i].stu_ID,stu[i].stu_name,stu[i].sex,stu[i].age,stu[i].collage,stu[i].grade,stu[i].contact);
    342         printf("
    录入成功,继续录入输入y,返回上一级请按任意键:");
    343         fflush(stdin); 
    344         scanf("%c",&flag); 
    345         fclose(fp);
    346         if(flag!='y'&&'Y') break;
    347         fp = fopen("student.txt","a");
    348     }
    349     renew_stu();
    350     system("cls");
    351     stu_operate();
    352 } 
    353 /*查询学生信息*/
    354 void search_stu(void){
    355     system("cls");
    356     printf("
    请选择查询方式:");
    357     printf("
      1.学号查询");
    358     printf("
      2.姓名查询");
    359     printf("
    请选择:");
    360     int h;
    361     scanf(" %d",&h);
    362     switch(h){
    363         case 1:
    364             search_stu_id();
    365             break;
    366         case 2:
    367             search_stu_name();
    368             break;
    369             
    370     } 
    371 }
    372 /*学号查询*/
    373 void search_stu_id(void){
    374     system("cls");
    375     char id[9];
    376     printf("
    输入学生的学号:");
    377     fflush(stdin); 
    378     scanf("%s",id);
    379     int h;
    380     for(h = 0;h <= i;h++){
    381         if(strcmp(stu[h].stu_ID,id)==0){
    382             system("cls");
    383             printf("查找成功!"); 
    384             printf("
    
    	学号	姓名	性别	年龄	系别	班级	联系方式");
    385             printf("
    	-----------------------------------------------------------------"); 
    386             printf("
    	%s	%s	%s	%s	%s	%s	%s
    ",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    387             system("pause");
    388             system("cls");
    389             stu_operate();
    390         }
    391     }
    392     system("cls");
    393     printf("没有此学号!
    ");
    394     system("pause");
    395     system("cls");
    396     stu_operate();
    397 } 
    398 /*姓名查询*/
    399 void search_stu_name(void){
    400     system("cls");
    401     char name[9];
    402     printf("
    输入学生的姓名:");
    403     fflush(stdin); 
    404     scanf("%s",name);
    405     int h;
    406     for(h = 0;h <= i;h++){
    407         if(strcmp(stu[h].stu_name,name)==0){
    408             system("cls");
    409             printf("查找成功!"); 
    410             printf("
    
    	学号	姓名	性别	年龄	系别	班级	联系方式");
    411             printf("
    	---------------------------------------------------------"); 
    412             printf("
    	%s	%s	%s	%s	%s	%s	%s
    ",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    413             system("pause");
    414             system("cls");
    415             stu_operate();
    416         }
    417     }
    418     system("cls");
    419     printf("没有此姓名!");
    420     system("pause");
    421     system("cls");
    422     stu_operate();
    423 } 
    424 /*显示所有学生信息*/
    425 void show_stu(void){
    426     int h;
    427     if(i == -1){
    428         printf("
    还没有录入信息!
    ");
    429         system("pause");
    430         system("cls");
    431         stu_operate();
    432     }
    433     system("cls");
    434     printf("
    
    	学号	姓名	性别	年龄	系别	班级	联系方式");
    435     printf("
    	---------------------------------------------------------"); 
    436     for(h = 0;h <= i;h++){
    437         printf("
    	%s	%s	%s	%s	%s	%s	%s
    ",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    438     }
    439     //
    440     fflush(stdin);
    441     printf("
    	1.修改");
    442     printf("
    	2.删除"); 
    443     printf("
    	3.返回");
    444     printf("
    
      选择要进行的操作:");
    445     int flag;
    446     fflush(stdin);
    447     scanf("%d",&flag);
    448     switch(flag){
    449         case 1:
    450             edit_stu();
    451             break; 
    452         case 2:
    453             delete_stu();
    454             break;
    455         default:
    456             system("cls");
    457             stu_operate();
    458             break;
    459             
    460     } 
    461 }
    462 /*编辑学生信息*/
    463 void edit_stu(void){
    464     printf("
    输入需要编辑的学生的学号:");
    465     char id[10];
    466     getchar();
    467     scanf("%s",id);
    468     int h;
    469     for(h = 0;h <= i;h++){
    470         if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
    471             system("cls");
    472             printf("
    
    	学号	姓名	性别	年龄	系别	班级	联系方式");
    473             printf("
    	---------------------------------------------------------"); 
    474             printf("
    	%s	%s	%s	%s	%s	%s	%s
    ",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    475             printf("
    这是修改前的数据,请依次输入修改值:
    	");
    476             fflush(stdin);
    477             scanf("%s %s %s %s %s %s %s",&stu[h].stu_ID,&stu[h].stu_name,&stu[h].sex,&stu[h].age,&stu[h].collage,&stu[h].grade,&stu[h].contact);
    478             int k;
    479             for(k = 0;k <= i;k++){
    480                 if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==0){
    481                     if(k==h){
    482                         continue;
    483                     } else {//学号不唯一 
    484                         printf("
    此学号已存在!重新输入学号:");
    485                         fflush(stdin);
    486                         scanf("%s",&stu[h].stu_ID);
    487                         k = -1;
    488                     }
    489                 }
    490             }
    491             /*将修改信息写入文件*/
    492             //思想:将原文件重新写入一遍
    493             renew_stu();
    494             system("cls");
    495             printf("修改成功!
    ");
    496             system("pause"); 
    497             system("cls");
    498             stu_operate();
    499         }
    500     }
    501     printf("
    此学号不存在!
    ");
    502     system("pause");
    503     system("cls");
    504     stu_operate();
    505 }
    506 /*删除学生信息*/
    507 void delete_stu(void){
    508     printf("
    输入需要编辑的学生的学号:");
    509     char id[10];
    510     getchar();
    511     scanf("%s",id);
    512     int h;
    513     for(h = 0;h <= i;h++){
    514         if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
    515             system("cls");
    516             //检查他/她是否选课了
    517             int a;
    518             for(a = 0;a <= x;a++){
    519                 if(h==sel[a].s){//选课了则将对应课程记录减1,以及选课数组减1 
    520                     delete_sel(a);
    521                     a = -1;
    522                     x--;
    523                     continue;
    524                 }
    525             } 
    526             //如果只有一条记录
    527             if(i==0){
    528                 i = -1;
    529                 renew_stu();
    530                 printf("修改成功!
    ");
    531                 system("pause"); 
    532                 system("cls");
    533                 stu_operate();
    534             } 
    535             
    536             int k;
    537             for(k = h+1;k <= i;k++,h++){//将数组直接向前移动 
    538                 strcpy(stu[h].stu_ID,stu[k].stu_ID); 
    539                 strcpy(stu[h].stu_name,stu[k].stu_name); 
    540                 strcpy(stu[h].sex,stu[k].sex); 
    541                 strcpy(stu[h].grade,stu[k].grade); 
    542                 strcpy(stu[h].contact,stu[k].contact); 
    543                 strcpy(stu[h].collage,stu[k].collage); 
    544                 strcpy(stu[h].age,stu[k].age); 
    545             }
    546             /*将修改信息写入文件*/
    547             //思想:将原文件重新写入一遍
    548             renew_stu();
    549             i--;
    550             system("cls");
    551             printf("修改成功!
    ");
    552             system("pause"); 
    553             system("cls");
    554             stu_operate();
    555         }
    556     }
    557     printf("
    此学号不存在!
    ");
    558     system("pause");
    559     system("cls");
    560     stu_operate();
    561 }
    562 //--------------------------------------课程信息插入--------------------------------------
    563 void input_cou(void){
    564     char flag;
    565     FILE * fp;
    566     //--判断文件是否为空 
    567     fp = fopen("course.txt","r+");
    568     flag = fgetc(fp);
    569     if(flag==EOF){
    570         fprintf(fp,"代码	名称	性质	总学时	学分	开课学期	选修人数
    ");
    571     }
    572     fclose(fp);
    573     //-- 
    574     fp = fopen("course.txt","a+");
    575     if(fp == NULL){
    576         printf("打开文件失败!");
    577         system("cls");
    578         cou_operate();
    579     }
    580     printf("代码	名称	性质	总学时	学分	开课学期
    ");
    581     while(1){
    582         j++;
    583         scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
    584         //--数据查重
    585         int h; 
    586         for(h = 0;h < j;h++){
    587             if(j == 0) break;//第一条数据不需要查重 
    588             if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {
    589                 printf("该课程号已存在,请重新输入!
    ");
    590                 scanf("
    %s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
    591                 h = -1;
    592             }
    593         }
    594         //-- 
    595         fprintf(fp,"%s	%s	%s	%s	%s	%s		%d
    ",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people);
    596         printf("
    录入成功,继续录入输入y,返回上一级请按任意键:");
    597         fflush(stdin); 
    598         scanf("%c",&flag); 
    599         fclose(fp);
    600         if(flag!='y'&&'Y') break;
    601         fp = fopen("course.txt","a");
    602     }
    603     renew_cou();
    604     system("cls");
    605     cou_operate();
    606 } 
    607 /*查询课程信息*/
    608 void search_cou(void){
    609     system("cls");
    610     printf("
    请选择查询方式:");
    611     printf("
      1.课程号查询");
    612     printf("
      2.课程名查询");
    613     printf("
    请选择:");
    614     int h;
    615     scanf(" %d",&h);
    616     switch(h){
    617         case 1:
    618             search_cou_id();
    619             break;
    620         case 2:
    621             search_cou_name();
    622             break;
    623             
    624     } 
    625 }
    626 /*课程号查询*/
    627 void search_cou_id(void){
    628     system("cls");
    629     char id[9];
    630     printf("
    输入课程号:");
    631     fflush(stdin); 
    632     scanf("%s",id);
    633     int h;
    634     for(h = 0;h <= j;h++){
    635         if(strcmp(cou[h].course_ID,id)==0){
    636             system("cls");
    637             printf("查找成功!"); 
    638             printf("
    
    	代码	名称	性质	总学时	学分	开课学期	选修人数");
    639             printf("
    	-----------------------------------------------------------------"); 
    640             printf("
    	%s	%s	%s	%s	%s	%s		%d
    ",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    641             system("pause");
    642             system("cls");
    643             cou_operate();
    644         }
    645     }
    646     system("cls");
    647     printf("没有此课程号!
    ");
    648     system("pause");
    649     system("cls");
    650     cou_operate();
    651 } 
    652 /*课程名查询*/
    653 void search_cou_name(void){
    654     system("cls");
    655     char name[9];
    656     printf("
    输入课程名:");
    657     fflush(stdin); 
    658     scanf("%s",name);
    659     int h;
    660     for(h = 0;h <= j;h++){
    661         if(strcmp(cou[h].course_name,name)==0){
    662             system("cls");
    663             printf("查找成功!"); 
    664             printf("
    
    	代码	名称	性质	总学时	学分	开课学期	选修人数");
    665             printf("
    	---------------------------------------------------------"); 
    666             printf("
    	%s	%s	%s	%s	%s	%s		%d
    ",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    667             system("pause");
    668             system("cls");
    669             cou_operate();
    670         }
    671     }
    672     system("cls");
    673     printf("没有此课程名!");
    674     system("pause");
    675     system("cls");
    676     cou_operate();
    677 } 
    678 /*显示所有课程信息*/
    679 void show_cou(void){
    680     int h;
    681     if(j == -1){
    682         printf("
    还没有录入信息!
    ");
    683         system("pause");
    684         system("cls");
    685         cou_operate();
    686     }
    687     system("cls");
    688     printf("
    
    	代码	名称	性质	总学时	学分	开课学期	选修人数");
    689     printf("
    	-------------------------------------------------------------"); 
    690     for(h = 0;h <= j;h++){
    691         printf("
    	%s	%s	%s	%s	%s	%s		%d
    ",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    692     }
    693     //
    694     fflush(stdin);
    695     printf("
    	1.修改");
    696     printf("
    	2.删除"); 
    697     printf("
    	3.返回");
    698     printf("
    
      选择要进行的操作:");
    699     int flag;
    700     fflush(stdin);
    701     scanf("%d",&flag);
    702     switch(flag){
    703         case 1:
    704             edit_cou();
    705             break; 
    706         case 2:
    707             delete_cou();
    708             break;
    709         default:
    710             system("cls");
    711             cou_operate();
    712             break;
    713             
    714     } 
    715 }
    716 /*编辑课程信息*/
    717 void edit_cou(void){
    718     printf("
    输入需要编辑的课程号:");
    719     char id[10];
    720     getchar();
    721     scanf("%s",id);
    722     int h;
    723     for(h = 0;h <= j;h++){
    724         if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
    725             system("cls");
    726             printf("
    
    	代码	名称	性质	总学时	学分	开课学期");
    727             printf("
    	-------------------------------------------------------------"); 
    728             printf("
    	%s	%s	%s	%s	%s	%s
    ",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time);
    729             printf("
    这是修改前的数据,请依次输入修改值:
    	");
    730             fflush(stdin);
    731             scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time);
    732             int k;
    733             for(k = 0;k <= j;k++){
    734                 if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){
    735                     if(k==h){
    736                         continue;
    737                     } else {//课程号不唯一 
    738                         printf("
    此课程号已存在,重新输入:");
    739                         fflush(stdin);
    740                         scanf("%s",&cou[h].course_ID);
    741                         k = -1;
    742                     }
    743                 }
    744             }
    745             /*将修改信息写入文件*/
    746             //思想:将原文件重新写入一遍
    747             renew_cou();
    748             system("cls");
    749             printf("修改成功!
    ");
    750             system("pause"); 
    751             system("cls");
    752             cou_operate();
    753         }
    754     }
    755     printf("
    此课程号不存在!
    ");
    756     system("pause");
    757     system("cls");
    758     cou_operate();
    759 }
    760 /*删除课程信息*/
    761 void delete_cou(void){
    762     printf("
    输入需要编辑的课程号:");
    763     char id[10];
    764     getchar();
    765     scanf("%s",id);
    766     int h;
    767     for(h = 0;h <= j;h++){
    768         if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
    769             system("cls");
    770             //如果只有一条记录
    771             if(j==0){
    772                 j = -1;
    773                 renew_cou();
    774                 printf("修改成功!
    ");
    775                 system("pause"); 
    776                 system("cls");
    777                 cou_operate();
    778             }
    779             //查看是否有人选课
    780             if(cou[h].people!=0){//有人选课时
    781                 int a;
    782                 for(a = 0;a <= x;a++){
    783                     if(sel[a].c == h){
    784                         delete_sel(a);
    785                         a = -1;
    786                         x--;
    787                         continue;
    788                     }
    789                 }
    790             }
    791             int k;
    792             for(k = h+1;k <= j;k++,h++){//将数组直接向前移动 
    793                 strcpy(cou[h].course_ID,cou[k].course_ID); 
    794                 strcpy(cou[h].course_name,cou[k].course_name); 
    795                 strcpy(cou[h].property,cou[k].property); 
    796                 strcpy(cou[h].period,cou[k].period); 
    797                 strcpy(cou[h].credit,cou[k].credit); 
    798                 strcpy(cou[h].time,cou[k].time); 
    799             }
    800             /*将修改信息写入文件*/
    801             //思想:将原文件重新写入一遍
    802             renew_cou();
    803             j--;
    804             system("cls");
    805             printf("修改成功!
    ");
    806             system("pause"); 
    807             system("cls");
    808             cou_operate();
    809         }
    810     }
    811     printf("
    此课程号不存在!
    ");
    812     system("pause");
    813     system("cls");
    814     cou_operate();
    815 }
    816 
    817 //--功能函数
    818 /*更新系统数据至文件*/
    819 void renew_stu(void){
    820     FILE * fp;
    821     fp = fopen("student.txt","w+");
    822     if(fp == NULL){
    823         printf("
    打开文件失败,无法保存至文件。
    ");
    824         fclose(fp);
    825         return ;
    826     }
    827     fprintf(fp,"学号	姓名	性别	年龄	系别	班级	联系方式
    ");
    828     if(i == -1){
    829         fclose(fp);
    830         return;
    831     }
    832     int h;
    833     for(h = 0;h <= i;h++){
    834         fprintf(fp,"%s	%s	%s	%s	%s	%s	%s
    ",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    835     }
    836     fclose(fp);
    837     
    838 } 
    839 void renew_cou(void){
    840     FILE * fp;
    841     fp = fopen("course.txt","w+");
    842     if(fp == NULL){
    843         printf("
    打开文件失败,无法保存至文件。
    ");
    844         fclose(fp);
    845         return ;
    846     }
    847     fprintf(fp,"代码	名称	性质	总学时	学分	开课学期	选修人数
    ");
    848     if(j == -1){
    849         fclose(fp);
    850         return;
    851     }
    852     int h;
    853     for(h = 0;h <= j;h++){
    854         fprintf(fp,"%s	%s	%s	%s	%s	%s		%s
    ",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);    }
    855     fclose(fp);
    856     
    857 } 

     第一次发博客,挺激动的。写的是学生选课系统,也算是自己的第二个小项目,第一个是算术表达式,不怕丢人哈哈,写的过程中都是非常艰难,经常写到一半就写不下去了,因为一开始的构思就是错误的。当然,也谈不上什么构思,就是简单的想了一下大体的方向。所以到后面越来越难做,只好重新修改一遍。包括这次也是如此。以后这方面要小心,一定要先认真的构思一下。也有一部分原因是好久没有写c了,好几个月了,结构体和指针的一些知识都还给老师了,所以这次也算是边写边学了吧,哈哈~

    我编程的时间不长,所以这里面肯定有一些错误,或者存在更好的解决方案,欢迎上课!谢谢!

    ps:寻找一起学习的小伙伴!

  • 相关阅读:
    Improving the Safety, Scalability, and Efficiency of Network Function State Transfers
    MacOS下安装BeautifulSoup库及使用
    python爬虫调用搜索引擎及图片爬取实战
    2018软工项目UML设计(团队)
    【计算几何】如何计算两个圆的交点坐标
    【POJ 】POJ 3281. Dining
    【POJ 3233】矩阵多项式和
    【Effective C++】Effective C++笔记
    【图形学】图形学的23个基础问题
    【Google Code Jam】Millionaire
  • 原文地址:https://www.cnblogs.com/litlife/p/6821797.html
Copyright © 2011-2022 走看看