版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 内蒙古科技大学 本科生课程设计说明书题 目:C语言课程设计 学生基本信息管理系统学生姓名:吴艳芳学 号:1468100536专 业:软件工程班 级:一班指导教师:康懿日 期: 2016 年1 月 5 日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生基本信息管理系统指导教师康懿时间2015.1.51.9一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,
2、独立完成,题目选定后不可更换。某班学生成绩管理,包括以下功能:5 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里6 打开文件后,计算每个人的总分和平均分,排序并保存7 具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)8 具有插入、删除和修改功能9 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至
3、少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程
4、设计,刘振安,机械工业出版社目 录内蒙古科技大学I本科生课程设计说明书I内蒙古科技大学课程设计任务书II目 录III第一章 需求分析41.1引言41.2任务概述41.3数据描述41.4功能需求41.5任务计划5第2章概要设计52.1总体设计52.2数据类型设计(或数据结构设计)62.3接口设计62.4运行界面设计7第3章详细设计113.1输入模块设计113.2输出模块设计123.3查找模块设计133.4排序模块设计143.5保存及读取模块设计16第4章测试分析194.1测试程序执行情况194.2出现的问题和解决的方法19第5章课程设计总结20附录:程序代码21参考文献40第一章 需求分析1.1
5、 引言随着学生人数的增多,学生信息管理变得越来越困难,为了方便学校对学生信息的管理,一个简易的学生信息管理系统可以解决一些简单的问题。能帮助我们快速找到学生信息。1.2 任务概述1.建立学生信息,信息包括学生姓名,学号,性别,年龄,地址,电话等。2.能够提供录入、浏览、查找、修改和删除信息的功能。3.能够提供按不同方式查询的功能;如:按姓名查找或者按电话查找等。1.3 数据描述struct studentlong num;char name15;int age;char sex3;char dizhi20;char phone11;struct student *next;1.4 功能需求1.
6、录入功能:一次可以完成自定义学生人数的学生信息记录的录入。2.删除功能:对指定学生的信息进行删除。3.修改功能:对指定学生的信息进行修改。4.查询功能:选择某种方式并输入该信息查询符合条件的学生信息。5.排序功能:以英语课程的分数为依据对学习信息进行排序。6.退出菜单。1.5 任务计划1.程序可以根据使用者的合法操作实现已罗列的功能3.在输入不符合文字时,程序会做出提示4.若想退出 查询,删除,修改, 功能时,若想不进行操作退出功能,需要按回车键退出。5.若插入已存在相同学号的信息后再次插入,会进行提示,是否替换,并输出原信息和要插入的信息第2章 概要设计2.1 总体设计总体结构采取模块化方式
7、进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。2.2 数据类型设计(或数据结构设计)1.数据以链表的形式储存2.存在一个结构体struct studentlong num;char name15;int age;char sex3;char dizhi20;char phone11;struct student *next;2.3 接口设计表2.1:函数列表函数名函数格式 /即函数首部函数功能Voidshow_menu(); void显示菜单 void me
8、nu();void执行菜单voidcreat_stu(); void建立链表voidinsert_stu(); void学生信息录入Voidprint_stu(); void学生信息浏览 voidsearch_num();void以学号方式查找voidsearch_name(); void以姓名方式查找voidarrage_stu(); void排序Voiddel_stu(); void删除学生信息 void revise_stu();void修改学生信息void save(); void保存信息2.4 运行界面设计1.主菜单界面2.录入界面3.浏览界面 4.查询界面5.删除界面6.插入界面7
9、.修改界面第3章 详细设计3.1 输入模块设计struct student *creat()int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st",&p1->num,&p1->age,p1->name,p1->sex,p1->dizhi,p1->phone);head=NULL;while(p1->num!=0)n=n+1;if(n=1)he
10、ad=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st",&p1->num,&p1->age,p1->name,p1->sex,p1->dizhi,p1->phone);p2->next=NULL;return(head);3.2 输出模块设计struct student *read()struct student *head=NULL;struct student *p=NULL;struc
11、t student *t=NULL;int a;if(fp=fopen("keshe","r")=NULL)printf("cannot open this filen");exit(0);while(1)t=(struct student *)malloc(len);a=fscanf(fp,"%dt%dt%st%st%st%st",&t->num,&t->age,t->name,t->sex,t->dizhi,t->phone); if(a=0|a=-1)fcl
12、ose(fp);return head; t->next=NULL; if(p=NULL) p=t; head=t;elsep->next=t;p=p->next;p->next=NULL;3.3 查找模块设计void findList_num(struct student*head,long search_num)struct student *p;p=head;while(p!=NULL)&&(p->num!=search_num) p=p->next; if(p!=NULL)printf("%dt%dt%st%st%st%st
13、n",p->num,p->age,p->name,p->sex,p->dizhi,p->phone); else printf("没有该学生信息!n");void findList_name(struct student *head,char *search_name)struct student *p;int cmp1=0,cmp=0;p=head;while(p!=NULL) if(strcmp(p->name,search_name)!=0) p=p->next; cmp+;elseprintf("%
14、dt%dt%st%st%st%stn",p->num,p->age,p->name,p->sex,p->dizhi,p->phone); p=p->next; cmp1=1; if(cmp!=0&&cmp1=0)printf("没有该学生信息!n");3.4 排序模块设计void paixu(struct student *head)struct student *p,*f,*t;char ch100;int i;t=f=p=head;for(p=head;p->next!=NULL;p=p->
15、next)for(t=p,f=t->next;f!=NULL;f=f->next)if(t->num>f->num) i=t->num; t->num=f->num; f->num=i; i=t->age; t->age=f->num; f->age=i; strcpy(ch,t->name); strcpy(t->name,f->name); strcpy(f->name,ch); strcpy(ch,t->sex); strcpy(t->sex,f->sex); strc
16、py(f->sex,ch); strcpy(ch,t->dizhi); strcpy(t->dizhi,f->dizhi); strcpy(f->dizhi,ch); strcpy(ch,t->phone); strcpy(t->phone,f->phone); strcpy(f->phone,ch); 3.5 保存及读取模块设计void save(struct student *head)struct student *p;if(fp=fopen("keshe","w")=NULL)printf(&
17、quot;cannot open this filen");exit(0);p=head;while(p!=NULL)fprintf(fp,"%dn",p->num);fprintf(fp,"%dn",p->age);fprintf(fp,"%sn",p->name);fprintf(fp,"%sn",p->sex);fprintf(fp,"%sn",p->dizhi);fprintf(fp,"%sn",p->phone); p=
18、p->next;fclose(fp);struct student *read()struct student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;if(fp=fopen("keshe","r")=NULL)printf("cannot open this filen");exit(0);while(1)t=(struct student *)malloc(len);a=fscanf(fp,"%dt%dt%st%st%st%st&
19、quot;,&t->num,&t->age,t->name,t->sex,t->dizhi,t->phone); if(a=0|a=-1)fclose(fp);return head; t->next=NULL; if(p=NULL) p=t; head=t;elsep->next=t;p=p->next;p->next=NULL;第4章 测试分析4.1 测试程序执行情况4.2 出现的问题和解决的方法录入时就录入了一个学生的信息,然后删完插入时没法插入了。然后重新录入几个学生信息重新调试的程序。第5章 课程设计总结 在
20、做这次程序设计时遇到了很多问题,一开始觉得无从下手。觉得这次老师给我们安排课程设计是为了让我们巩固这半年所学的知识,也使我学到了很多平时所忽略的小问题,最重要的是,它磨砺了我们,能让我们在大学的下一个阶段能更好的学好这门课。附录:程序代码#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define len sizeof(struct student)FILE *fp;struct studentlong num;char name15;int age;
21、char sex3;char dizhi20;char phone11;struct student *next;void menu()printf("=学生信息管理系统=nn");printf(" 1、录入学生信息n");printf(" 2、浏览学生信息n");printf(" 3、查询学生信息n");printf(" 4、删除学生信息n");printf(" 5、插入学生信息n");printf(" 6、修改学生信息n");printf("
22、 7、排序学生信息n");printf(" 8、退出管理系统n");printf("=n");struct student *creat()int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st",&p1->num,&p1->age,p1->name,p1->sex,p1->dizhi,p1->pho
23、ne);head=NULL;while(p1->num!=0)n=n+1;if(n=1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st",&p1->num,&p1->age,p1->name,p1->sex,p1->dizhi,p1->phone);p2->next=NULL;return(head);void insert(struct student *head)int
24、search_num;struct student *p,*q,*s;p=head;printf("在哪个学生前插入 请输入学号: n");scanf("%d",&search_num);while(p!=NULL)&&(p->num!=search_num)q=p;p=p->next;s=(struct student *)malloc(len);q->next=s;system("cls");printf("请输入学生信息:n");printf("numt a
25、get namet sext dizhit phonetn");scanf("%dt%dt%st%st%st%st",&s->num,&s->age,s->name,s->sex,s->dizhi,s->phone);s->next=p;void printList(struct student *head)struct student *p;p=head;if(head=NULL)printf("没有学生信息n");elsedoprintf("%dt%dt%st%st%st%
26、stn",p->num,p->age,p->name,p->sex,p->dizhi,p->phone);p=p->next;while(p!=NULL);void findList_num(struct student*head,long search_num)struct student *p;p=head;while(p!=NULL)&&(p->num!=search_num) p=p->next; if(p!=NULL)printf("%dt%dt%st%st%st%stn",p->
27、;num,p->age,p->name,p->sex,p->dizhi,p->phone); else printf("没有该学生信息!n");void findList_name(struct student *head,char *search_name)struct student *p;int cmp1=0,cmp=0;p=head;while(p!=NULL) if(strcmp(p->name,search_name)!=0) p=p->next; cmp+;elseprintf("%dt%dt%st%st%s
28、t%stn",p->num,p->age,p->name,p->sex,p->dizhi,p->phone); p=p->next; cmp1=1; if(cmp!=0&&cmp1=0)printf("没有该学生信息!n");int xiugai(struct student *p1,long xiu_num)struct student *p2;p2=p1;while(p2!=NULL)&&(p2->num!=xiu_num) p2=p2->next;if(p2!=NULL)s
29、canf("%dt%dt%st%st%st%st",&p2->num,&p2->age,p2->name,p2->sex,p2->dizhi,p2->phone);return 1;elseprintf("没有该学生信息!n");return 0;struct student *delList(struct student *head,long del_num)struct student *p,*q;p=head;q=head;while(p &&(p->num != del_n
30、um)q=p;p=p->next;if(p=NULL) printf("无此学号!n");elseif(p=head)head=p->next;free(p);elseq->next=p->next;free(p);return head;void paixu(struct student *head)struct student *p,*f,*t;char ch100;int i;t=f=p=head;for(p=head;p->next!=NULL;p=p->next)for(t=p,f=t->next;f!=NULL;f=f-
31、>next)if(t->num>f->num) i=t->num; t->num=f->num; f->num=i; i=t->age; t->age=f->num; f->age=i; strcpy(ch,t->name); strcpy(t->name,f->name); strcpy(f->name,ch); strcpy(ch,t->sex); strcpy(t->sex,f->sex); strcpy(f->sex,ch); strcpy(ch,t->dizh
32、i); strcpy(t->dizhi,f->dizhi); strcpy(f->dizhi,ch); strcpy(ch,t->phone); strcpy(t->phone,f->phone); strcpy(f->phone,ch); void save(struct student *head)struct student *p;if(fp=fopen("keshe","w")=NULL)printf("cannot open this filen");exit(0);p=head;w
33、hile(p!=NULL)fprintf(fp,"%dn",p->num);fprintf(fp,"%dn",p->age);fprintf(fp,"%sn",p->name);fprintf(fp,"%sn",p->sex);fprintf(fp,"%sn",p->dizhi);fprintf(fp,"%sn",p->phone); p=p->next;fclose(fp);struct student *read()struct
34、student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;if(fp=fopen("keshe","r")=NULL)printf("cannot open this filen");exit(0);while(1)t=(struct student *)malloc(len);a=fscanf(fp,"%dt%dt%st%st%st%st",&t->num,&t->age,t->name,t-&g
35、t;sex,t->dizhi,t->phone); if(a=0|a=-1)fclose(fp);return head; t->next=NULL; if(p=NULL) p=t; head=t;elsep->next=t;p=p->next;p->next=NULL;int main()int code=0;struct student *pt=NULL; while(code!=8) menu(); printf("请输入上述序号进行操作:n"); scanf("%d",&code); system(&q
36、uot;cls"); switch(code) case 1: system("cls"); printf("每个学生的信息之间用Tab键分隔n"); printf("=录入学生信息=n"); printf("-n"); printf("numt aget namet sext dizhit phonet"); pt=creat(); save(pt); system("cls"); printf("=录入学生信息=n"); printf(&qu
37、ot;-n"); printf("*录入学生信息成功*!n"); printf("按回车键返回主菜单n"); getchar(); getchar(); system("cls"); ;break; case 2: system("cls"); printf("=学生信息表=n"); printf("-n"); printf("numt aget namet sext dizhit phonetn"); pt=read(); printList(
38、pt);printf("=n"); printf("-n"); printf("n按回车键返回主菜单n"); getchar(); getchar(); system("cls"); ;break;case 3: int search=0; system("cls"); printf("=查询学生信息=n"); printf("-n"); while(search!=3) printf(" 1、按学号查询n 2、按姓名查询n 3、退出查询n&qu
39、ot;); scanf("%d",&search); switch(search) case 1:long search_num;system("cls");printf("请输入学生学号n");scanf("%d",&search_num);/wzyscanf("cls");printf("=查询结果=n");printf("-n");printf("numt aget namet sext dizhit phonetn&quo
40、t;);findList_num(read(),search_num);printf("=n");printf("-n");printf("n按回车键返回查询菜单n");getchar();getchar();system("cls");break; case 2:char search_name15;system("cls");printf("请输入学生姓名n");scanf("%s",search_name);system("cls"
41、;);printf("=学生信息表=n");printf("-n");printf("numt aget namet sext dizhit phonetn");findList_name(read(),search_name);printf("=n");printf("-n");printf("n按回车键返回查询菜单n");getchar();getchar();system("cls");break;case 3:printf("=n&quo
42、t;);printf("-n");printf("n按回车键返回主菜单n");getchar();getchar();system("cls");break; break;case 4:long del_num;system("cls");printf("=删除学生信息=n");printf("-n");printf("请输入要删除学生信息的学号:n");scanf("%d",&del_num);system("cls");pt=delList(read(),del_num);save(pt);printf("=删除结果=n");printf("-n");printf("学号为%d的学生信息成功删除n",del_num);printf("n按回车键返回主菜单n");getchar();getchar();system("cls");break;case 5:system(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场部年终工作总结(15篇)
- 2026盾安员工面试题及答案
- 婚礼致辞新娘
- 2026防疫信息员面试题及答案
- 云原生架构设计与部署实战指南
- 手工肥皂制作绩效考核表
- 2026管网养护面试题及答案
- 2026合同法面试题及答案
- 小学主题班会课件:孝顺父母与品德教育
- 河南省郑州市2025-2026学年高考适应性考试生物试卷含解析
- 加油站安全隐患排查奖惩制度
- 初二语文昆虫记名著阅读-专题综合模拟测评学能测试
- pe焊工考试试题及答案
- 妇产科大病例汇报
- 选煤厂生产调度管理课件
- 《铁路建设项目首件工程评估管理办法》
- 中暑的护理及治疗
- JG 5091-1997钢丝绳柱形压制接头
- 中医疼痛方面课件教案
- (新版)中国心理卫生协会心理咨询师考试复习题库(浓缩400题)
- 四川省水电集团笔试题库
评论
0/150
提交评论