程序设计综合训练(优秀篇)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计综合训练》
设计报告
专业:
班级:
学号:
姓名:
指导教师:
成绩:
计算机工程学院
2012年10月
(1)题目名称、内容
课程管理系统
假定有n 门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计学生选修课程系统,使之能提供以下功能:
1、课程信息录入功能(课程信息用文件保存,也可不用)
2、课程信息浏览功能
3、排序:按课程编号排序
4、查询功能: 按课程性质查询
5、课程修改、删除(任选一项)
(2)解题的基本思路
主函数选择需要处理的功能,分别再写出课程录入自定义函数、课程浏览自定义函数、课程排序自定义函数、课程查询自定义函数、课程删除自定义函数。
(3)设计方案
该系统包括数据录入、浏览、排序、删除、查询功能模块,每个模块在程序系统中用一个自定义函数来实现,如图:
主函数:
Main 函数
输入1 调用课程录入自定义函数
输入2 调用课程浏览自定义函数
输入3 调用课程排序自定义函数
输入4 调用课程查询自定义函数
输入5 调用课程删除自定义函数
输入6 退出系统
luru()(录入信息)
liulan()(浏览信息)
paixu()(按编号排序)
find()(课程名称查找相应的信息)
shanchu()(删除对象)
(4)程序调试
1、出现的问题
2、出现的问题
没有了信息提示。
解决方法:将主函数中的信息提示调到循环体。
3.出现的问题
选择处理功能后感觉信息太多没有清屏。
解决方法:加入了清屏功能的自定义函数。
(5)测试课程录入
课程浏览
课程排序
课程查询
课程删除
系统退出
(6)总结
当看到这系统之前,感觉这是一个不可能完成的作业,系统艾,多高档的东西啊,但等我坐下来认真分析时,才发现这系统并没有想象中的那么难,也是由我们平时做的简单程序段组成的。虽然程序段简单但也有些细节性错误搞得我头大,弄得我一度想放弃。这系统花了我不少时间,编系统的过程让我很带劲儿,感觉回到了高中,但回想起来总觉得缺少了些什么没有让我脑子里充满色彩,这提醒到我我不适合做程序员,这是我第一次编系统可能也是最后一次吧。不过通过这次编系统有几点还是要必须肯定的:①这次实训让我对之前一窍不通的结构体有了一定的了解②大事也是由小事组成③编程让我更会思考问题④细节决定成败⑤虚心向别人求教。
总之,当自己做完这课程管理系统,我感觉非常充实,途中虽然有时候感觉有点茫然,有点累,但我觉得收获是巨大的,并且在以后的学习生活中也用得到,所以感觉很欣慰,很有成就感。当然我能有这么好的收获很大程度上还是首先因为我们有非常优秀的陈老师,她花了自己工作以外的时间给我们讲结构体和链表(算然我这次编系统没有用到链表,但在考试的时候起了非常大的用处),其次是高中就有了良好的基础,我心中充满了感激之情,无法用言语表达,感谢您,陈老师!您辛苦了!祝您
身体健康,事业有成,万事如意!
(7)附录
#include
#include
#define N 100
struct kech /*定义结构体*/
{
char name[10]; /*课程名称*/
char xz[20]; /*课程性质*/
int num; /*课程编号*/
int zxs; /*总学时*/
int jsxs; /*授课学时*/
int syxs; /*实验学时*/
int sjxs; /*上机学时*/
int score; /*学分*/
int xq; /*开课学期*/
}kech[N];
int subject=0;
void luru() /*录入课程信息*/
{
int i=subject;
printf("/******请输入课程信息******/\n");
printf("课程编号:"); /*输入课程编号*/
scanf("%d",&kech[i].num);
printf("课程名称:"); /*输入课程名称*/
scanf("%s",kech[i].name);
printf("课程性质:"); /*输入课程性质*/
scanf("%s",kech[i].xz);
printf("总学时:"); /*输入总学时 */
scanf("%d",&kech[i].zxs);
printf("授课学时:"); /*输入授课学时*/
scanf("%d",&kech[i].jsxs);
printf("实验学时:"); /*输入实验学时*/
scanf("%d",&kech[i].syxs);
printf("上机学时:"); /*输入上机学时*/
scanf("%d",&kech[i].sjxs);
printf("学分:"); /*输入学分*/
scanf("%d",&kech[i].score);
printf("开课学期:"); /*输入开课学期*/
scanf("%d",&kech[i].xq);
subject++;
}
void liulan() /*浏览课程信息*/
{
int i;
if (subject!=0)
{
printf("\n 课程编号课程名称课程性质总学时授课学时实验学时上机学时学分开课学期\n"); /*输出信息*/
for(i=0;i { printf(" %6d %6s %6s %4d %6d %6d %6d %2d %6d \n",kech[i].num,kech[i].name,kech[i].xz,kech[i].zxs,kech[i].jsxs,kech[i].syxs,kech[i].sjxs,k ech[i].score,kech[i].xq); } } else { printf("没有数据"); } } void paixu() /*按课程编号排序*/ { int i,j; int t[7]; char a[20]; for(j=0;j for(i=0;i if(kech[i].num>kech[i+1].num) { t[0]=kech[i].num; /*交换课程编号*/ kech[i].num=kech[i+1].num; kech[i+1].num=t[0]; strcpy(a,kech[i].name); /*交换课程名称*/ strcpy(kech[i].name,kech[i+1].name); strcpy(kech[i+1].name,a); strcpy(a,kech[i].xz); /*交换课程性质*/ strcpy(kech[i].xz,kech[i+1].xz); strcpy(kech[i+1].xz,a);