2023年7月6日发(作者:)
文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
实训报告
题 目: 学生成绩管理系统
院 系: 信息科技学院
专 业: 计算机科学与技术
姓 名: 何荣荣
学 号: 1751200204
指导教师: 王小琼
日 期: 2018年6月28日
桂林电子科技大学信息科技学院
前 言
课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。
C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。
我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C 的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。
本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。
本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。
由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。
编者
目录
1、问题定义 .................................................................. 3
2、系统设计 .................................................................. 3
2.1 总体设计.......................................................... 3
2.2 详细设计.......................................................... 5
3、程序测试 .................................................................. 5
4、详细程序 .................................................................. 7
5、归纳总结 ................................................................ 19
5.1 开发经验........................................................ 19
5.2 实训中遇到的问题及解决方法 .................... 19
2word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
5.3 感想和心得体会 ............................................ 20
6、参考资料 ................................................................ 20
火车票管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及字符数组的使用、字符指针的使用、数据库的设计和文件使用等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、问题定义
该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。所有火车票数据都要利用文件系统保存,以备系统下次运行时使用。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
本火车票管理系统应该具备如下功能:
1) 录入班次:车次信息包括:班次、发车时间、起点站、终点站、行车时间、额定载量、已售票)
2) 显示所有班次
3) 查询班次
4) 增加班次
5) 售票
6) 退票
7) 修改班次
8) (退票)删除班次
9) 退出
2、系统设计
2.1 总体设计
采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,3word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。
车票管理系统软件的功能模块有:
火车票信息管理系统
(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
调用主菜单选项
(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。
(3)完成每次功能,可保存用户的修改的信息,及时更新文件5724638信息。下次查询时内容为最新信息。实时的信息更新对比等。
调录入班调显所班调查班调增班调售调退调修班调删除班次
用
1
9调退出
用 用
用 用 用
用 用
用
一个名TICKET的结构体进行定义,包括num[10] hour[3]; min[3]
票 改示加票
询from[10]; to[10]; hours max; now;等结构体成员。
次
有次
次
然后对调用函数进行定义。
次
int system_time()系统时间
void NewMessage()新纪录录入函数
void ShowTable1() void ShowTable2(int i) 线框调用1和2不用每次输
void Display()显示所有函数
void add()增加记录
void save()保存函数
void save()保存函数
void load()按班次查询函数
void search()查询函数
void change()修改函数
void quit()退出函数
void Ticketorder()售票函数
void Ticketdelete()删除函数
4word版本可编辑.欢迎下载支持.
完成功能后返回主菜单 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
int menu_select()菜单函数
int whether(int)判断时间是否超出函数
void find(char s1[],char s2[])查询函数//s1为班次//s2为终点站
void deletemessage()删除函数
int findnum(char s1[])班次查询函数
void get(int,int)修改及增加班次
char *menu[]菜单函数。
该系统将这些信息均放在文件d:”车票管理系统0”中。
最后定义main()函数,利用函数调用,实现程序的各种功能。
将其放在系统文件d: ”车票管理系统0”中。
程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。
程序把每种功能分开实现,更简单,实用程序更易理解。
2.2 详细设计
主控main()函数执行流程
开始
3、程序测试
登录框
3.0 菜单界面
登录,确定访问权限
主界面
选择窗口
5word版本可编辑.欢迎下载支持.
输入[0~9]中的一个数值,选择相应否 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
图3-0 菜单界面
如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。
3.1 录入班次功能
图3-1输入时的界面
如上图所示,该功能实现录入班次信息。选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。
3.2显示所有班次
图3-2查询班次界面
可以显示所有录入的信息。
3.3查询所有班次功能
图3-3选择查询方式的界面
该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。
3.4增加班次功能
图3-4增加班次界面
6word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
该功能将增加班次信息,帮助用户更新班次信息。选择4并按enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。
3.5售票功能
图3-5-1选择售票功能界面
图3-3-2订票的界面
选择5按enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。
3.6退票功能
图3-6退票界面
选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。
3.7 修改班次功能
图3-7修改界面
选择7按enter键实现该功能,按任意键关闭程序。按提示操作修改班次。
3.8 删除班次功能
图3-8删除界面
3.9 退出功能
图3-9退出界面
该功能可退出系统,选择9按enter键实现该功能
4、详细程序
#include
#include
#include
#include
#include
#define N 1000 //宏定义多条记录
typedef struct TICKET ////定义新结构体TICKET
{
char num[10]; //车次编号
char hour[3]; //时间:小时
7word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
char min[3]; //时间:分钟
char from[10]; //起始站
char to[10]; //终点站
float hours; //车程实际时间
int max; //最大车载容量
int now; //已售票数
}CLASS;
int class_num=0; //初始班次总数为0
CLASS records[N]; // 多条记录
int system_time(); //系统时间
void NewMessage(); //新纪录*录入函数******
void ShowTable1(); //线框调用1,不用每次输
void ShowTable2(int i); //线框调用2,不用每次输
void Display(); //显示所有函数
void add(); //增加记录
void save(); //保存函数
void load(); //按班次查询函数
void search(); //查询函数
void change(); //修改函数**
void quit(); //退出函数**
void Ticketorder(); //售票函数**
void Ticketdelete(); //删除函数**
int menu_select(); //菜单函数**
int whether(int); //判断时间是否超出函数***
void find(char s1[],char s2[]); //查询函数//s1为班次//s2为终点站
void deletemessage(); //删除函数
int findnum(char s1[]); //班次查询函数
void get(int,int); //修改及增加班次*
char *menu[]={"*****************欢迎使用火车票查询系统*****************",
"n*****************1751200204 何荣荣*********************",
"n*******************MENU功能菜单*********************",
"n 1. 录入班次 ",
"n 2. 显示所有班次 ",
"n 3. 查询班次 ",
"n 4. 增加班次 ",
"n 5. 售票 ",
"n 6. 退票 ",
"n 7. 修改班次 ",
"n 8. 删除班次 ",
"n 9. 退出 "};
/**************************主函数*************************/
void main()
{
while(1) //菜单函数循环
8word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
{
switch(menu_select()) //菜单函数*
{
case 1: NewMessage();break; //新纪录*录入函数******
case 2: Display();break; //显示函数****
case 3: search();break; //查找函数**
case 4: add();break; //增加记录**
case 5: Ticketorder();break; //*售票函数***
case 6: Ticketdelete();break; //(退票)删除函数*
case 7: change();break; //修改函数**
case 8: deletemessage();break; //选择调用删除函数
case 9: quit();break; //退出函数******
}
}
}
/***********************菜单函数**************************/
int menu_select() //菜单函数*
{
char s[5]; //定义要输入的数字功能
int c,i;
for(i=0;i<11;i++)
{
printf("%s",menu[i]); //输出菜单各项)
}
i=0;
while(c<0||c>9) //判断是否是1到9的命令
{
printf("n"); //输出换行
printf("******************************************************");
printf("n请选择(1-9):");
scanf("%s",s);
c=atoi(s); //atoi将字符串转换成一个整数值
} ///输出菜单面
return c; ////返回请求
}
/*******************************录入函数************************************/
void NewMessage() //*录入函数*
{
int i=0,j=5,h;
char s[5];
FILE *fp; //定义文件型指针变量
if((fp=fopen("d:车票管理系统","rb"))!=NULL) //fopen打开文件
{
printf("车票信息已经存在请选择4增加功能!n");
9word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持.
printf("任意输入则返回菜单n");
scanf("%s",s);
i=1; //通过是1
}
if(i==0)
{
printf("请输入要录入班次总数:n");
scanf("%d",&class_num); //指向班次指针
for(i=0;i { printf("请输入第%d个班次信息:n",i+1); h=-1; for(;h!=i;) //循环输出 { printf("请输入班次:n"); scanf("%s",records[i].num); for(h=0;h if(strcmp(records[h].num,records[i].num)==0) //判断字符串比较是否相等, 待比较的字符串 { printf("输入错误!该班次已存在!n"); break; //返回 } } get(i,j); //修改及增加班次* j=5; } save(); //调用保存函数 } } /*******************************显示所有函数********************************/ void Display() //显示所有函数 { int i,j; load(); // 调用按班次查询函数 ShowTable1(); //线框调用1,不用每次输 for(i=0,j=0;i { printf("n|----------|----------|----------|----------|--------|--------|--------|n"); if(whether(i)) //判断时间是否超出函数*** printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour, records[i].min, records[i].from,records[i].to,records[i].hours, records[i].max,records[i].now); 10word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. else printf("|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|",records[i].num, records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now); } ShowTable2(j); //线框调用2 printf("n按任意键继续....n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } /**********************************打印表头***********************************************/ void ShowTable1() //线框调用1,不用每次输 { int i=2; printf("**************************MESSAGE车程信息**********************************n"); printf("n|----------|----------|----------|----------|--------|--------|--------|n"); printf("n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n"); } /***************************************打印表尾************************************************/ void ShowTable2(int i) //线框调用2,不用每次输。 { printf("n|----------|----------|----------|----------|--------|--------|--------|n"); } /**************************查找函数11**************************/ void search() ////查询调用 { int i; char s1[10]={'0'},s2[10]={'0'}; printf("1. 按班次查询n"); printf("2. 按终点站查询n"); printf("3. 退出n"); printf("请选择(1-3):n"); scanf("%d",&i); load(); // 调用按班次查询函数 switch(i) //多分枝选择语句 { case 1: printf("请输入要查询的班次:n"); //////s1为班次 scanf("%s",s1); find(s1,s2); /////调用查找函数222 2 break; case 2: printf("请输入要查询终点站:n"); /////s2为终点站 scanf("%s",s2); 11word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. find(s1,s2); /////调用查找函数222 2 break; case 3: break; default : printf("输入错误!n"); break; } printf("按任意键继续....n"); getch(); ///从控制台读取一个字符,但不显示在屏幕上 } /********************************查询函数22*********************************/ void find(char s1[],char s2[]) { int i,h=0,m; ShowTable1(); ////调用线框1 if(s2[0]=='0') m=1; ///1为无条件执行 else m=0; for(i=0;i if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0) ////判断字符串比较是否相等,, 待比较的字符串 { printf("n|----------|----------|----------|----------|--------|--------|--------|n"); printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,records[i].min, records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now); h+=2; if(m==1) break; } ShowTable2(h); ////调用线框2 if(h==0) printf("要查找的班次不存在!n"); } /***********************增加函数****************************/ void add() // //增加记录 { int i,j=5; load(); // 调用按班次查询函数 printf("1. 增加班次n"); printf("2. 返回n"); printf("请选择(1-2)n"); scanf("%d",&i); if(i==1) 12word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. { printf("1. 请输入要增加的班次:n"); scanf("%s",records[class_num].num); for(i=0;i if(strcmp(records[class_num].num,records[i].num)==0) //判断字符串比较是否相等,, 待比较的字符串 判断车次没重复 { printf("输入错误!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 break; } if(i==class_num) { get(i,j); ////修改及增加班次* class_num++; ///使班次数加1 save(); //调用保存函数 } } } /********************************售票函数*****************************/ void Ticketorder() //*售票函数*** { int i; char num[10]; printf("1. 售票n"); printf("2. 返回n"); printf("请选择(1-2):n"); scanf("%d",&i); if(i==1) { load(); // 调用按班次查询函数 search(); //查找函数** printf("请输入要订票的班次(若无请输入0):n"); scanf("%s",num); for(i=0;i if(strcmp(num,records[i].num)==0)//判断字符串比较是否相等,, 待比较的字符串 if(records[i].max>records[i].now&&whether(i)==1) //判断时间是否超出函数***并且***没超出最大客量 { records[i].now++; ///使已售的 printf("通向%s班次为%s的票订票成功!n",records[i].to,records[i].num); save(); //调用保存函数 13word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. getch(); /////从控制台读取一个字符,但不显示在屏幕上 break; } else { printf("该班次已满或已发出!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } } } /****************************退票删除函数***************************************/ void Ticketdelete() //删除函数* { int i; char num[10]; printf("1. 退票n"); printf("2. 返回n"); printf("请选择(1-2)n:"); scanf("%d",&i); if(i==1) { load(); // 调用按班次查询函数 printf("请输入要退票的班次:n"); scanf("%s",num); i=findnum(num); //调用班次查询函数 if(strcmp(num,records[i].num)==0) //判断字符串比较是否相等 待比较的字符串 if(whether(i)) //判断时间是否超出函数*** { printf("确定(Y/N)?"); scanf("%s",num); if(num[0]=='y'||num[0]=='Y') { records[i].now--; //使已售票加1 printf("退票成功!n"); save(); //调用保存函数 getch(); //从控制台读取一个字符,但不显示在屏幕上 } } else { printf("该班车已发出,无法退票!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } 14word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. if(i==class_num) { printf("输入错误!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } } } /********************************修改函数*********************************/ void change() //修改函数** { char num[10],s[10]; int h=0,j=13,i; load(); // 调用按班次查询函数 printf("请输入要修改的班次:n"); scanf("%s",num); i=findnum(num); //调用班次查询函数 if(i==class_num) { printf("输入错误,无此班次!n"); getch(); ///从控制台读取一个字符,但不显示在屏幕上 } else { printf("确定修改(Y/N)?n"); scanf("%s",s); if(s[0]=='y'||s[0]=='Y') { get(i,j); ////修改及增加班次* save(); //调用保存函数 } } } /*******************************删除函数**********************************/ void deletemessage() //删除班次信息 { int i,h=0; char num[10]; printf("1. 删除班次n"); printf("2. 返回n"); printf("请选择(1-2):n"); scanf("%d",&i); if(i==1) { printf("请输入要删除的班次:n"); scanf("%s",num); 15word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. i=findnum(num); //调用班次查询函数 if(i==class_num) { printf("输入错误,无此班次!n"); getch(); ///从控制台读取一个字符,但不显示在屏幕上 } else { printf("确定?(y/n)n"); scanf("%s",num); if(num[0]=='y'||num[0]=='Y') { for(;i records[i]=records[i+1]; class_num--; ////班次总数减1 save(); //调用保存函数 printf("删除成功!n"); getch(); } } } } /****************************按班次查询函数****************************/ int findnum(char s1[]) //查找班次 { int i,h=0; ShowTable1(); //线框调用1,,,不用每次输 for(i=0;i { if(strcmp(s1,records[i].num)==0) //判断字符串比较是否相等,如果符合则输出车次等信息 { printf("|----------|----------|----------|----------|--------|--------|--------|n"); printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour, records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now); h+=2; ///加2使输出的框架合适 break; } } ShowTable2(h); ///调用框架2 return i; } /**************************************保存函数*******************************/ 16word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. void save() //////保存函数 { FILE *fp1,*fp2; //文件行指针 if((fp1=fopen("d:车票管理系统.dat","wb"))==NULL) //打开文件、为输出打开一个二进制文件 { printf("文件打开错误!n"); exit(0); //程序正常退出 } if((fp2=fopen("d:车票管理系统","wb"))==NULL) //打开文件、为输出打开一个二进制文件 { printf("文件打开错误!n"); exit(0); //程序正常退出 } fwrite(&class_num,sizeof(int),1,fp2); //写入文件信息 fwrite(records,sizeof(CLASS),class_num,fp1); fclose(fp1);fclose(fp2); ///关闭文件 } /*******************************按班次查询函数*******************************/ void load() //按班次查询函数 { FILE *fp1,*fp2; if((fp1=fopen("d:车票管理系统.dat","rb"))==NULL) { printf("文件打开错误!n"); getch(); ///从控制台读取一个字符,但不显示在屏幕上 exit(0); //程序正常退出 } if((fp2=fopen("d:车票管理系统","rb"))==NULL) { printf("文件打开错误!n"); getch(); ///从控制台读取一个字符,但不显示在屏幕上 exit(0); //程序正常退出 } fread(&class_num,sizeof(int),1,fp2); ///读入信息 fread(records,sizeof(CLASS),class_num,fp1);/////读入信息 fclose(fp1);fclose(fp2); ///文件关闭 } /*************************修改及增加班次*******************************/ void get(int i,int j) // 修改及增加班次* { for(;;) { 17word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. printf("请输入发车时间(xx xx)n"); scanf("%s%s",records[i].hour,records[i].min); if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60&&atoi(records[i].min)>=0)) break; else { printf("输入错误!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } } printf("请输入起点站:n"); scanf("%s",records[i].from); printf("请输入终点站:n"); scanf("%s",records[i].to); printf("请输入行车时间:n"); scanf("%f",&records[i].hours); printf("请输入额定载量:n"); scanf("%d",&records[i].max); for(;;) { printf("请输入已售票数:n"); scanf("%d",&records[i].now); if(records[i].now<=records[i].max) break; else { printf("输入错误!n"); getch(); /////从控制台读取一个字符,但不显示在屏幕上 } } } /********************************判断时间是否超出函数**********************************/ int whether(int i) //判断时间是否超出函数*** { struct tm *local; //时间结构体 time_t t; //把当前时间给t t=time(NULL); //NULL在stdio.h中定义为0 local=localtime(&t); /////获取当前系统时间 if(local->tm_hour //atoi将字符串转换成一个整数值 return 1; else 18word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. return 0; } /******************************退出函数***************************/ void quit() //退出函数****** { char s[5]; printf("确认退出?(Y/N)n"); scanf("%s",s); if(s[0]=='y'||s[0]=='Y') exit(0); //程序中止执行,返回调用过程..state 0-正常中止非0-非正常 } 5、归纳总结 5.1 开发经验 通过对本题目的开发,体会到要掌握以下几点内容很重要: 1. 大程序的设计风格。按“自顶向下,逐步细化,模块化”的方法进行程序设计。 2. 编写主函数,并进行测试与调试。当被调函数又需要调用其他函数时,也要遵循逐步细化的原则。C语言提供丰富的库函数,编程序时要善于使用库函数,避免不必要的劳动。 3. 文件使用方法。文件使用完毕后应及时关闭。 4. 函数的定义应明确内容。 5. 主函数良好的调用会使代码更美观。 5.2 实训中遇到的问题及解决方法 在这次的实训中,主要遇到的问题是 fread(&class_num,sizeof(int),1,fp2); ///读入信息 fread(records,sizeof(CLASS),class_num,fp1); //读入信息 对文件的读入信息不理解,导致编码当初省去这部,使输出异常,然后百度才知道需要添加函数fread()是读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...的意思 打代码过程中,其实重复利用了很多数据,很容易浮躁,幸好有学长的指点,让我们活学活用,自己定义一个新的函数,然后后面需要就直接调用就好了。 19word版本可编辑.欢迎下载支持. 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 5.3 感想和心得体会 通过将近两周的程序设计实习,我首先认识到自己编程水平的有限,还要当初有学好C语言这么课程,其次我也意识到编程是件很严谨的工作,一点点小的错误都会引起不可想象的连锁反应。 实践出真知,我觉得这两个星期的学习,自己收获很大,对我自己来说也是一种锻炼,不仅在一定程度上增长了我对编程的认识,我也学会了团队合作,学会了坐冷板凳一行一行敲代码。 当然,我自己身上依然存在着不少的问题。比如对于一些难懂的代码,还是参考了网上的程序,比如录入数据的时候一开始不知道怎么让各组信息整齐地排列,以及如何完美的输入输出等。 我们大学生学编程,实践真的是很好的方式,我非常感谢学校给我们安排这样一次珍贵的实习机会,让我们第一次面对问题、解决问题,在实战中真正地提高了自己对编程的理解和编程的能力,真心希望学校多给我们提供这样书本之外的考核和锻炼。 指导老师王老师对我们的严格要求是我们更加努力完成作业,提高自己的打代码水平,并努力真正的成为计算机专业的技术性人才,再次真的非常感谢王老师的鼓励教导! 6、参考资料 [1] 谭浩强 C程序设计教程 北京 高等教育出版社 1992 [2] 耿国华 高级程序设计技术(C语言版)西安电子科技大学出版社 2009 [3] 王骞、陈宇、管马舟 程序设计经典300例 [4] Andrew Koenig Andrew Koenig 《C陷阱与缺陷》 [5] Brian W. Kernighan、Dennis M. Ritchie C程序设计语言 第2版·新版 20word版本可编辑.欢迎下载支持.
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688604186a154348.html
评论列表(0条)