当前位置:编程学习 > C/C++ >>

跪求c语言做的《学生选修课程系统设计》

麻烦各位达人了,要求如下:
课程设计题目:学生选修课程系统
课程设计内容:用C语言编写程序完成以下任务:
(1) 录入课程信息(课程信息包括课程编号、课程名、学时和学分),并保存在lessons.txt文件中,课程按课程编号有序。
(2)添加课程信息:添加前首先查找该门课是否存在,若不存在则按照课程编号大小插入到适当位置。
(3)选修一门课程:需要给出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入SelectInfo.txt文件中。
(4)显示出所有学生的选课情况。
课程设计要求:
1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“输入课程信息”、“添加课程信息”、“选课及显示”、“退出”4项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
答案:接上面:

int Del(TSTU list[], int n) {
int key, flag ;
loop:
printf("1.按学号删除\t2.按课程名删除\t0.返回\n") ;
do{
printf("请输入功能编号:") ;
scanf("%d",&key) ;
}
while(key<0||key>2) ;{
while(key!=0){
switch(key){
int i;
case 1:
int index, num ;
printf("请输入你要删除学生信息的学号:") ;
scanf("%d",&num) ;
index=searchforNum(list, n, num) ;
while(index==-1){
char yn ;
printf(" 没有找到到该信息!是否继续(y/n)?\n") ;
yn=getch() ;
if(yn='y'){
goto loop ;
}
else{
flag=1 ;
break ;
}
if(flag==1){
printf("按任意键返回!") ;
getch() ;
return index ;
}
scanf("%d", &num) ;
index=searchforNum(list, n ,num) ;
}
char yn ;
outputTableHead() ;
outputData(list, index) ;
printf("确定要删除吗(y/n)?") ;
yn=getch() ;
if(yn=='y') {
for(i=index;i<n;i++) {
if(list[i].num==num) {
list[i].num=list[i+1].num ;
strcpy(list[i].name,list[i+1].name) ;
list[i].wages=list[i+1].wages ;
list[i].fraction=list[i+1].fraction ;
}
printf("\n删除完成!按任意键继续...\n") ;
getch() ;
printf("是否继续删除?(y/n)?") ;
char yn ;
yn=getch() ;
if(yn=='y'){
printf("\n") ;
goto loop ;
}
else{
printf("\n") ;
break ;
}
}
return n-1 ;
}
else{
printf("\n本次删除取消!按任意键继续...\n") ;
getch() ;
goto loop ;
}
break;
case 2:
printf("抱歉!该功能尚未开放。按任意键返回...") ;
getch() ;
printf("\n") ;
goto loop ;
}
}
}
return n-1 ;
}
void savefile(TSTU list[], int n){
FILE *fin ;
int i=0 ;
fin=fopen("lessons.txt", "w") ; /*修改增加删除的信息全部保存在此文件里面(就是你开始建立的那个txt文件)*/
if(fin==NULL){
printf("打开文件失败!") ;
return ;
}
while(i<n){
fprintf(fin,"%d\t", list[i].num) ;
fprintf(fin,"%s\t", list[i].name) ;
fprintf(fin,"%f\t", list[i].wages) ;
fprintf(fin,"%f\t", list[i].fraction) ;
i++ ;
}
fprintf(fin,"%d", 0) ;
fclose(fin) ;
}
void main(){
int n, key ;
TSTU list[100] ;
n=init(list) ;
loop:
key=menu() ;
while(key!=0){
switch(key)
{
case 1:
browseData(list, n) ;
break ;
case 2:
search(list, n) ;
break ;
case 3:
n=insertData(list ,n) ;
break ;
case 4 :
ModityData(list ,n) ;
break ;
case 5:
n=Del(list, n) ;
}
key=menu() ;
}
char yn ;
printf("你确定要退出吗?(y/n)?") ;
yn=getch() ;
if(yn=='y'){
savefile(list, n) ;
printf("\n保存完毕!感谢使用...\n感谢使用本程序\t\t作者:冉凯\n任意键退出...\n") ;
getch() ;
}
else{
printf("\n") ;
goto loop ;
}
}
程序花我一小时做的。给你增加了一些功能。我没有验证,你自己验证下。有问题联系rankawin@163.com ,有一些你可能需要根据你具体的情况做一下修改。该程序所有权归ID:Mr.Kawins.(QQ:363283860)所有,只限你本人使用,请不要在网络传播。谢谢。。。

文件超过10000字没法一次性回答,我分两次传给你。
#include"stdio.h"
#include"string.h"
#include"ctype.h"
#include"conio.h"
typedef struct worker{
 int  num ;
 char name[20] ;
 float wages ;
 float fraction ;
}TSTU ;
int init(TSTU list[]){
 FILE *fin ;
 int num, n=0 ;
 fin=fopen("lessons.txt","r+") ; /*在编译目录下建立一lessons.txt文档,里面需要输入一个0即可。*/
 if(fin==NULL){
  printf("打开文件失败...\n") ;
   return 0 ;
 }
 fscanf(fin,"%d",&num) ;
 while(num!=0){
  list[n].num=num ;
  fscanf(fin, "%s", list[n].name) ;
  list[n].wages=0.0 ;
  fscanf(fin, "%f", &list[n].wages) ;
  fscanf(fin, "%f", &list[n].fraction) ;
  n=n+1 ;
  fscanf(fin, "%d", &num) ;
 }
 fclose(fin) ;
 return n ;
}


void outputTableHead(void){
 printf("学号\t课程名\t学时\t学分") ;
}
void outputData(TSTU list[], int index){
 printf("%d\t%s\t%4.0f\t%2.1f\t%2.1f\n", list[index].num, list[index].name,
  list[index].wages, list[index].fraction) ;
}


void browseData(TSTU list[], int n){
 outputTableHead() ;
 int i ;
 for(i=0;i<n;i++){
  outputData(list, i) ;
 }
 printf("浏览结束,按任意键返回...\n") ;
 getch() ;
}
int menu(void){
 printf("***********************************************************\n") ;
 printf("****************** 学生管理程序 ******************\n") ;
 printf("***\t1.显示\t2.查找\t3.增加\t4.修改\t5.删除\t0.退出\t***\n") ;
 printf("***********************************************************\n") ;
 int key ;
 printf("请输入功能代号:") ;
 scanf("%d", &key) ;
 while(key<0||key>5){
  printf("请输入正确的功能代号:") ;
  scanf("%d", &key) ;
 }
 return key ;
}
int searchforNum(TSTU list[], int n, int num){
 int i ;
 for(i=0;i<n;i++){
  if(list[i].num==num){
   break ;
  }
 }
 if(i<n){
  return i ;
 }
 else{
  return -1 ;
 }
}
int searchMenu(void){
 printf("1.按学号查\t2.按课程名查\t0.返回\n") ;
 int key ;
 do{
  printf("请输入正确的功能编号:") ;
  scanf("%d",&key) ;
 }
 while(key<0||key>2);
 return key ;
}
void search(TSTU list[], int n){
int key ;
loop:
 key=searchMenu() ;
 while(key!=0){
  switch(key){
   case 1:
    int index, num ;
    printf("请输入你要查询学生息的学号:") ;
    scanf("%d",&num) ;
    index=searchforNum(list, n, num) ;
    if(index==-1){
     printf(" 没有查询到该信息!\n") ;
    }
    else{
     outputTableHead() ;
     outputData(list, index) ;
    }
    break;
   case 2:
    printf("抱歉!该功能尚未开放!按任意键返回...") ;
    getch() ;
    printf("\n") ;
    goto loop ;
  }
  printf("查询结束,按任意键返回!\n") ;
  getch() ;
  key=searchMenu() ;
 }
}
int insertData(TSTU list[], int n){
 int index, i;
 int flag ;
 int num ;
 printf("请输入你要增加的学号:") ;
 scanf("%d",&num) ;
 index=searchforNum(list, n, num) ;
 while(index!=-1){
  printf("该学号已存在!\t是否继续(y/n)?\t") ;
  char yn ;
  yn=getch() ;
  if(yn=='y'){
   printf("\n请重新输入增加的学号:") ;
   scanf("%d",&num) ;
   index=searchforNum(list, n, num) ;
  }
  else{
   flag=1 ;
   break ;
  }
 }
 if(flag==1){
  printf("\n按任意键返回...\n") ;
  getch() ;
  return n ;
 }
for(i=n-1;i>=0;i--){
if(list[i].num>num){
   list[i+1].num=list[i].num ;
   strcpy(list[i+1].name,list[i].name) ;  
   list[i+1].wages=list[i].wages ;  
   list[i+1].fraction=list[i].fraction ;  
  }
  else{
   break ;
  }
 }
 i++ ;
 list[i].num=num ;
 printf("请输入课程名:") ;
 scanf("%s",&list[i].name) ;
 printf("请输入课时:") ;
 scanf("%f",&list[i].wages) ;
 printf("请输入学分:") ;
 scanf("%f",&list[i].fraction) ;
 printf("增加结束,按任意键继续\n") ;
 getch() ;
 return n+1 ;
}
int ModityData(TSTU list[

上一个:这个C语言的程序函数错误在哪?
下一个:想学习C语言给我推荐几本书吧

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,