资源描述
一. 设计目标。
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.步骤图
开始
进行switch语句
输入1
输入 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 lesson
{
char name[10];
char teacher[10];
char time[10];
char room[10];
}lesson[20];
char filename[20];
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(&lesson[z],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",lesson[k].name);
printf("输入老师姓名:");
scanf("%s",lesson[k].teacher);
printf("输入上课时间:");
scanf("%s",lesson[k].time);
printf("输入教室位置:");
scanf("%s",lesson[k].room);
}
count+=j;
printf("添加成功!");
}
void save()
{
FILE *fp;
int i;
if((fp=fopen(filename,"wb"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i<=count;i++)
if(fwrite(&lesson[i],sizeof(struct lesson),1,fp)!=1)
printf("file write error\n");
fclose(fp);
printf("保留成功!\n");
}
void look()
{ int i;
printf("课程\t\t老师\t\t时间\t\t教室\n");
for(i=0;i<count;i++)
{ printf("%s\t\t%s\t\t%s\t\t%s\t\n",lesson[i].name,lesson[i].teacher,lesson[i].time,lesson[i].room);
}
}
void find()
{ char clas[20];
int i,key=0;
printf("请输入课程名称:");
a:
scanf("%s",clas);
for(i=0;i<count;i++)
{ if(strcmp(clas,lesson[i].name)==0)
{ printf("%s\t\t%s\t\t%s\t\t%s\t\n",lesson[i].name,lesson[i].teacher,lesson[i].time,lesson[i].room);
key=1;
break;
}
}
if(key!=1)
{printf("找不到此课程!\n请重新输入:");
goto a;}
}
void delet()
{ char clas[20];
int i,j,key;
printf("请输入将要删除课程名字:");
b: scanf("%s",&clas);
if(clas==0) return;
for(i=0;i<count;i++)
{ if(strcmp(clas,lesson[i].name)==0)
{ count--;
for(j=i;j<count;j++)
lesson[i]=lesson[j+1];
key=1;
}
}
if(key!=1)
{ printf("无此课程,请重新输入,或按0结束!\n");
goto b;
}
}
void main()
{ int choice;
system("color 0E");
do
{ printf("-----------------------------主菜单--------------------------\n");
printf("\t\t\t0:创建课程信息表\t\n");
printf("\t\t\t1:打开课程信息表\t\n");
printf("\t\t\t2:添加课程信息\t\n");
printf("\t\t\t3:查看课程信息\t\n");
printf("\t\t\t4:查找课程信息\t\n");
printf("\t\t\t5:删除课程信息\t\n");
printf("\t\t\t6:保留课程信息\t\n");
printf("\t\t\t7:退出系统\t\n");
printf("\t\t请选择操作:\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语言,让自己能写出更复杂更完善程序。
展开阅读全文