C语言课程信息管理系统.docx
一设计目的。1. 通过对课程信息管理软件的设计编写原代码,深刻掌握 C 语言中各个语法、函数的应用,使对比较难的结构体、链表、文件的操作更加熟悉。2. 初步掌握中、大型程序设计中的各个步骤、流程,以及开发过程中遇到问题的处理方法,为以后的学习打下基础。3. 通过课程设计,将一学期所学习到的 C 程序设计知识和相关数学知识联系和结合,培养自己的动手能力,以及加强各学科之间的联系。二设计内容。本系统以个人课程信息为主要背景,设计和实现了一个小型个 人课程信息管理系统。主要有以下功能:1. 系统以菜单方式运行工作,界面清晰直观,便于用户操作。2. 课程信息录入,包括课程名称,课程教师,上课时间和上课 教室。3. 课程信息查看,以表格的形式查看课程信息。4. 课程信息查找,用户随时查看课程信息便于核对。5. 课程信息修改,核对后可以直接修改或删除。三.概要设计主函数创建课打开课添加课查看课查找课删除课程表程表程信息程信息程信息程信息四.详细设计1. 数据结构设计结构体:用结构体接收课程信息。文件:用文件储存数据,这样当程序关闭时,数据不会 丢失。2. 模块接口设计Void creat()创建课程信息表; Void open()打开课程信息表; Void inpt()输入课程信息; Void look()查看所有课程信息; Void find()查找课程信息; Void delet()删除课程信息;Void save()保存课程信息;3. 流程图查查删保添看找除存加课课课课课程程程程程信信信信信息息息息息开始输入 1进行 switch 语输入 2输入 3输入 4输入 5输入 6打开课程信息表输入 7结束4. 程序设计/*HELLO.C - Hello, world */ #include "stdio.h"#include "stdlib.h"#include "conio.h" #include "string.h" FILE *fp;int count; struct lessonchar name10; char teacher10; char time10; char room10;lesson20;char filename20; void creat()printf(" 请 输 入 文 件 名 :n"); scanf("%s",filename); if(fp=fopen(filename,"w+")=NULL)printf("无法打开文件!n"); exit(0);void open()int z;printf("请输入文件名"); scanf("%s",filename);if(fp=fopen(filename,"a+")=NULL)printf("无法打开文件!n"); exit(0);for(z=0;z<count;z+)fread(&lessonz,sizeof(struct lesson),1,fp);fclose(fp);void inpt()int i,j,k;printf("要添加多少个课程信息:"); scanf("%d",&j);printf("n"); for(i=0,k=count;i<j;i+,k+)printf("输入课程名称:"); scanf("%s",lessonk.name); printf("输入教师姓名:");scanf("%s",lessonk.teacher); printf("输入上课时间:"); scanf("%s",lessonk.time); printf("输入教室位置:"); scanf("%s",lessonk.room);count+=j;printf("添加成功!");void save()FILE *fp; int i;if(fp=fopen(filename,"wb")=NULL)printf("cannot open filen"); return;for(i=0;i<=count;i+) if(fwrite(&lessoni,sizeof(structlesson),1,fp)!=1) printf("file write errorn");fclose(fp);printf("保存成功!n");void look()int i;printf("课程tt 教师tt 时间tt 教室n"); for(i=0;i<count;i+) printf("%stt%stt%stt%stn",lesson i.name,lessoni.teacher,lessoni.time, lessoni.room);void find()char clas20; int i,key=0;printf("请输入课程名称:");a:scanf("%s",clas); for(i=0;i<count;i+)if(strcmp(clas,lessoni.name)=0)printf("%stt%stt%stt%stn",lesso ni.name,lessoni.teacher,lessoni.time,lessoni.room); key=1;break;if(key!=1)printf("找不到此课程!n 请重新输入:"); goto a;void delet()char clas20; int i,j,key;printf("请输入将要删除的课程名字:");b:scanf("%s",&clas); if(clas=0) return; for(i=0;i<count;i+)if(strcmp(clas,lessoni.name)=0)count-; for(j=i;j<count;j+)lessoni=lessonj+1;key=1;if(key!=1)printf("无此课程,请重新输入,或按 0 结束!n");goto b;void main()int choice; system("color 0E"); doprintf("-n");printf("ttt0: 创建课程信息表tn"); printf("ttt1: 打开课程信息表tn"); printf("ttt2: 添加课程信息tn"); printf("ttt3: 查看课程信息tn"); printf("ttt4: 查找课程信息tn"); printf("ttt5: 删除课程信息tn");printf("ttt6: 保存课程信息tn"); printf("ttt7: 退出系统tn"); printf("tt 请选择操作:n");主菜单printf("-n");scanf("%d",&choice); switch(choice)case 0:creat();break; case 1:open();break; case 2:inpt();break; case 3:look();break; case 4:find();break;case 5:delet();break; case 6:save();break;case 7:printf("感谢使用此系统,祝你好运!n");break;while(choice!=7); getch();设计总结通过这 2 个星期以来的程序设计,使我更深刻的掌握了C 语言的各种语法知识,在设计过程中碰到许多问题,比如添加课程信息会覆盖,无法将数据写入文件里等,在老师的细心指导下,这些问题都迎刃而解。在完善此程序的同时, 让我了解到自己在 C 语言程序设计上的不足之处,更让我了解到C 语言程序设计过程中的乐趣。今后,要好好学习加强掌握C 语言,让自己能写出更复杂更完善的程序。